#include "SunClientPrecompiledHeader.h" #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM #include "SUNRankingCharacterNameControl.h" #include "../uiSUNRankingDialog.h" SUNRankingCharacterNameControl::SUNRankingCharacterNameControl(void) { } SUNRankingCharacterNameControl::~SUNRankingCharacterNameControl(void) { Release(); } void SUNRankingCharacterNameControl::Release() { } void SUNRankingCharacterNameControl::Init( SUNRankingSlot* parent_slot, CControlWZ* total_control_ptr ) { parent_slot_ = parent_slot; total_control_ptr_ = total_control_ptr; RECT rc = {0, }; m_FTextRender.Init(g_pSunRenderer, rc); DWORD font_ID = StrToWzID("mn12"); COLORREF font_color = WzColor_RGBA(255, 255, 0, 255); TCHAR result_string[INTERFACE_STRING_LENGTH] = {0, }; if ( parent_slot_->get_index_() == 0 ) { Snprintf(result_string, INTERFACE_STRING_LENGTH-1, _T("%s"), parent_slot_->get_character_name_().c_str()); } else { Snprintf(result_string, INTERFACE_STRING_LENGTH-1, _T("%s"), parent_slot_->get_character_name_().c_str()); } if( m_FTextParser.Parser(result_string, m_FTextSentence) ) { m_FTextRender.ClearSentence(); m_FTextRender.Append(m_FTextSentence); m_FTextSentence.Release(); } } void SUNRankingCharacterNameControl::Update() { } void SUNRankingCharacterNameControl::Render() { if ( is_show_() == false ) return; BASE_TextureListInfo* tex_info = NULL; if ( parent_slot_->get_character_type_() >= eCHAR_TYPE_MAX ) { return; } if ( class_texture_index[parent_slot_->get_character_type_()] == 0 ) { return; } RECT parent_rect = parent_slot_->get_control_rect_(); RECT origin_parent_rect = parent_rect; static int left = 70; static int top = 7; static int right = 35; static int bottom = 15; parent_rect.left += left; parent_rect.top += top; parent_rect.right = right; parent_rect.bottom -= bottom; RECT total_rect = total_control_ptr_->GetSizeRect(); RECT result_rect = parent_rect; bool is_bottom = false; if (parent_slot_->get_index_() != 0 && parent_rect.top + parent_rect.bottom > total_rect.bottom) { is_bottom = true; LONG differ = parent_rect.top + parent_rect.bottom - total_rect.bottom; differ = parent_rect.bottom - differ; result_rect.bottom = differ; } HANDLE tex_handle = TextureListInfoHandleManager::Instance()->GetTexture(class_texture_index[parent_slot_->get_character_type_()], tex_info); if ( (tex_handle != INVALID_HANDLE_VALUE) && (tex_info != NULL) ) { if ( is_bottom == true ) { float percent_result = static_cast(parent_rect.bottom - result_rect.bottom); percent_result = percent_result / (float)(parent_rect.bottom); float top_gap = 0.0f; float bottom_gap = 0.0f; top_gap = tex_info->tex_size.top * percent_result; bottom_gap = tex_info->tex_size.bottom * percent_result; g_pSunRenderer->RenderTexture(tex_handle, (float)result_rect.left, (float)result_rect.top, (float)result_rect.right, (float)result_rect.bottom, (float)tex_info->tex_size.left, (float)tex_info->tex_size.top, (float)tex_info->tex_size.right, (float)tex_info->tex_size.bottom - bottom_gap); } else { g_pSunRenderer->RenderTexture(tex_handle, (float)parent_rect.left, (float)parent_rect.top, (float)parent_rect.right, (float)parent_rect.bottom, (float)tex_info->tex_size.left, (float)tex_info->tex_size.top, (float)tex_info->tex_size.right, (float)tex_info->tex_size.bottom); } } SIZE textsize; g_pSunRenderer->x_pManagerTextOut->GetTextExtentPoint(parent_slot_->get_character_name_().c_str(),lstrlen(parent_slot_->get_character_name_().c_str()),&textsize); static LONG text_size_rect_width = 200; static LONG text_top_gap = 7; static LONG texture_text_gap = 28; RECT character_name_rect = parent_rect; character_name_rect.left = parent_rect.left + parent_rect.right + texture_text_gap; character_name_rect.top = parent_rect.top + text_top_gap; character_name_rect.right = character_name_rect.left + text_size_rect_width; character_name_rect.bottom = character_name_rect.top + 20; is_bottom = false; result_rect = character_name_rect; if (parent_slot_->get_index_() != 0 && character_name_rect.bottom > total_rect.bottom) { is_bottom = true; LONG differ = character_name_rect.bottom - total_rect.bottom; character_name_rect.bottom = (character_name_rect.bottom - character_name_rect.top) - differ; } RECT ftext_rect; ftext_rect = character_name_rect; ftext_rect.right = character_name_rect.left + character_name_rect.right; ftext_rect.bottom = character_name_rect.top + character_name_rect.bottom; // Áß¾Ó Á¤·Ä //ftext_rect.left = (ftext_rect.right / 2) - (textsize.cx / 2); // Áß¾Ó Á¤·ÄÇÏ¸é ¾î»öÇÏ´Ù bool is_differ_rect = false; if ( ftext_rect.left != m_FTextRender.GetRect().left ) { is_differ_rect = true; } m_FTextRender.SetRect( ftext_rect ); m_FTextRender.SetBeginLineIndex(0); // ÀÌÀü ¿µ¿ªÀÇ Â÷À̰¡ ÀÖÀ¸¸é Render¸¦ µÎ¹ø ÇØÁØ´Ù. if ( is_differ_rect == true ) { m_FTextRender.Render(); } m_FTextRender.Render(); } #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM