#include "SunClientPrecompiledHeader.h" #include ".\treeitemdata.h" #include "Mouse.h" void TreebaseItem::push_Item( CCtrlListWZ* list_control ) { if(Perent_tree_ && Perent_tree_->tree_data.isFolder == false) { return; } if(tree_data.tree_deep_ != -1) { int index = list_control->InsertItemBack(); list_control->SetItemWZA(index, tree_data.tree_item_str_, tree_data.font_ID, DT_VCENTER | DT_LEFT, tree_data.back_Color_, tree_data.text_Color_, tree_data.sell_Color_); list_control->SetItemUserData(index, 0, (void*)this); list_control->SetItemCallbackDraw(index, 0, OnStaticRender); } if(!tree_data.isFolder) { return; } for (int i = 0 ; i < (int)child_list_.size() ; ++i) { child_list_[i]->push_Item(list_control); } } void TreebaseItem::addChildTree( TreebaseItem* Tree,int& origin_ ) { Tree->Perent_tree_ = this; //ÇØ´ç Æ®¸®ÀÇ ±íÀÌ´Â ºÎ¸ðÀÇ ±íÀÌ +1 Tree->tree_data.tree_deep_ = tree_data.tree_deep_ + 1; Tree->origin_value_ = origin_; //¿À¸®Áø °ªÀ» 1 Áõ°¡ ½ÃÅ´ origin_ += 1; child_list_.push_back(Tree); } void TreebaseItem::render( int SelectCell,int Over_sell,RECT& Render_Pos ) { RECT render_icon = Render_Pos; RECT render_area = Render_Pos; render_icon.left += (tree_data.tree_deep_) * tree_data.tree_left_off_; int iconOffset = 0; if(!is_leaf()) { BASE_TextureListInfo* tex_info = NULL; HANDLE tex_handle = TextureListInfoHandleManager::Instance()\ ->GetTexture(is_open() ? 10003 : 10002, tex_info);; if ((tex_handle != INVALID_HANDLE_VALUE) && (tex_info != NULL)) { RECT dest_area = render_icon; dest_area.right = tex_info->tex_size.right; dest_area.bottom = offset_col_; g_pSunRenderer->RenderTexture(tex_handle, (float)dest_area.left, (float)dest_area.top, (float)dest_area.right, (float)dest_area.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); } iconOffset = tex_info->tex_size.right + 3; offset_data_ = iconOffset; } else { offset_data_ = Perent_tree_->offset_data_ - 3; } render_area.left += ((tree_data.tree_deep_) * tree_data.tree_left_off_) + offset_data_; g_pSunRenderer->x_pManagerTextOut->StartToUseFont(tree_data.font_ID); { g_pSunRenderer->x_pManagerTextOut->DrawText(tree_data.tree_item_str_, &render_area, isSelect_item_ ? tree_data.select_Color_: tree_data.text_Color_, WzColor_RGBA(0, 0, 0, 0), TP_HLEFT | TP_VCENTER); } g_pSunRenderer->x_pManagerTextOut->EndUseFont(); } void TreebaseItem::OnStaticRender( CCtrlListWZ* list_control, CCtrlListWZ::CListSellData* sell_data, int sell_index, RECT& render_area ) { if (list_control == NULL || sell_data == NULL || sell_data->user_data == NULL) { return; } int select_sell = list_control->GetCurSel(); int over_sell = list_control->GetOverSel(); TreebaseItem* tree_object = static_cast(sell_data->user_data); tree_object->render(select_sell,over_sell,render_area); } void GaugeTreeItem::render( int SelectCell,int Over_sell,RECT& Render_Pos ) { RECT render_icon = Render_Pos; RECT render_area = Render_Pos; render_icon.left += (tree_data.tree_deep_) * tree_data.tree_left_off_ - 10; int iconOffset = 0; if(!is_leaf()) { BASE_TextureListInfo* tex_info = NULL; HANDLE tex_handle = TextureListInfoHandleManager::Instance()\ ->GetTexture(is_open() ? 10003 : 10002, tex_info);; if ((tex_handle != INVALID_HANDLE_VALUE) && (tex_info != NULL)) { RECT dest_area = render_icon; dest_area.right = tex_info->tex_size.right; dest_area.bottom = offset_col_; g_pSunRenderer->RenderTexture(tex_handle, (float)dest_area.left, (float)dest_area.top, (float)dest_area.right, (float)dest_area.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); } iconOffset = tex_info->tex_size.right + 3; offset_data_ = iconOffset; } else { offset_data_ = Perent_tree_->offset_data_; } RECT render_area2 = Render_Pos; RECT text_area = Render_Pos; int x = Mouse::Instance()->GetMouseX(); int y = Mouse::Instance()->GetMouseY(); DWORD Texture_number = 10030; if(isSelect_item_) { Texture_number = 10032; } else if(Render_Pos.left < x && Render_Pos.right > x && Render_Pos.top < y && Render_Pos.bottom > y) { Texture_number = 10031; } BASE_TextureListInfo* tex_info = NULL; HANDLE tex_handle = TextureListInfoHandleManager::Instance()\ ->GetTexture(Texture_number, tex_info);; render_area2.left += (offset_data_ - 6) - 10; RECT dest_area = render_area2; dest_area.right = tex_info->tex_size.right; dest_area.bottom = offset_col_; g_pSunRenderer->RenderTexture(tex_handle, (float)dest_area.left, (float)dest_area.top, (float)dest_area.right, (float)dest_area.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); RECT render_gauge = Render_Pos; render_gauge.left += (offset_data_ + 1)-10; //¿©±â¼­ ¸·´ë±â ·»´õ¸µ¸¸ º¯±Ã float Item_percent = Current_Gauge == 0 ? 0.0f : (float)Current_Gauge / (float)Max_gauge; float Right_item = 0.0f; if(is_leaf()) { HANDLE tex_handle2 = TextureListInfoHandleManager::Instance()\ ->GetTexture(10034, tex_info);; RECT dest_area = render_gauge; dest_area.top += 4; dest_area.bottom = offset_col_ - 8; Right_item = (float)tex_info->tex_size.right * Item_percent; g_pSunRenderer->RenderTexture(tex_handle2, (float)dest_area.left, (float)dest_area.top, Right_item, (float)dest_area.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); } else { HANDLE tex_handle2 = TextureListInfoHandleManager::Instance()\ ->GetTexture(10033, tex_info);; RECT dest_area = render_gauge; dest_area.top += 4; dest_area.bottom = offset_col_ - 8; Right_item = (float)tex_info->tex_size.right * Item_percent; g_pSunRenderer->RenderTexture(tex_handle2, (float)dest_area.left, (float)dest_area.top, Right_item, (float)dest_area.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); } render_area.left += offset_data_; g_pSunRenderer->x_pManagerTextOut->StartToUseFont(tree_data.font_ID); { g_pSunRenderer->x_pManagerTextOut->DrawText(tree_data.tree_item_str_, &render_area, isSelect_item_ ? tree_data.select_Color_: tree_data.text_Color_, WzColor_RGBA(0, 0, 0, 0), TP_HLEFT | TP_VCENTER); } g_pSunRenderer->x_pManagerTextOut->EndUseFont(); //·»´õ¸µµÇ´Â ¶óÀÌÆ® À§Ä¡ int Right = Render_Pos.right; g_pSunRenderer->x_pManagerTextOut->StartToUseFont(tree_data.font_ID); { //ÇöÀçÀÇ °ÔÀÌÁö Ç¥½Ã TCHAR item_gauge[256]; if(is_perscent) { if (is_leaf()) { strcpy(item_gauge, percent_string); } else { // Ȥ½Ã ¸ð¸¦ ¿¹¿Üó¸® if (Current_Gauge > Max_gauge) { Current_Gauge = Max_gauge; } sprintf(item_gauge,"%.1f%%",Current_Gauge == 0 ? 0.0f :\ ((float)Current_Gauge / (float)Max_gauge * 100)); } } else { sprintf(item_gauge,"%d/%d",Current_Gauge,Max_gauge); } SIZE siText; g_pSunRenderer->x_pManagerTextOut->GetTextExtentPointA( item_gauge, strlen(item_gauge) , &siText); text_area.left = (Right - siText.cx) - 5; g_pSunRenderer->x_pManagerTextOut->DrawText(item_gauge, &text_area, WzColor_RGBA(247, 251, 190, 255), WzColor_RGBA(0, 0, 0, 0), TP_HLEFT | TP_VCENTER); } g_pSunRenderer->x_pManagerTextOut->EndUseFont(); if(Check_item_Count_ > 0) { HANDLE tex_handle3 = TextureListInfoHandleManager::Instance()\ ->GetTexture(10035, tex_info); RECT dest_area = text_area; dest_area.left -= 7; dest_area.bottom = offset_col_ - 8; //ÇöÀç »ö»ó¿¡¼­ ¾ËÆÄ »ö»óÀ¸·Î WzColor color[4]; DWORD tick_count = clock_function::GetTickCount(); if (m_LastTickCount == 0) { m_LastTickCount = tick_count; } DWORD current_tick_count = (tick_count - m_LastTickCount); if (current_tick_count > 30) { m_LastTickCount = tick_count; } //¼±Çüº¸°£ °ø½Ä g(t) = y0 * (1.0f - t) + y1*t; //1ÃÊÀÇ ´ÜÀ§·Î ³ª´«´Ù. GetNowtime += (float)(current_tick_count/1000.0f); int postAlpha = all_hide_alpha; all_hide_alpha = GetNowtime >= 1.0f ? (int)((GetNowtime=0.0f) +\ ( turnChange==true) ? -1 : 0):\ ( turnChange==false ? -1 : 0 ); turnChange = (postAlpha != all_hide_alpha) ? !turnChange : turnChange; int ResultLerpColor = (all_hide_alpha == -1) ? (int)(0 * (1.0f - GetNowtime) + 255 * GetNowtime) : \ (int)(255 * (1.0f - GetNowtime) + 0 * GetNowtime); color[0] = WzColor_RGBA(255,255,255,ResultLerpColor); color[1] = WzColor_RGBA(255,255,255,ResultLerpColor); color[2] = WzColor_RGBA(255,255,255,ResultLerpColor); color[3] = WzColor_RGBA(255,255,255,ResultLerpColor); g_pSunRenderer->RenderTexture(tex_handle3, (float)dest_area.left, (float)dest_area.top, (float)tex_info->tex_size.right, (float)tex_info->tex_size.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, color); } }