#include "SunClientPrecompiledHeader.h" #include "uibattlescoreblood.h" #include "uibattlescoreman\uibattlescoreman.h" #include "GlobalFunc.h" #include "Hero.h" #include "AppearanceResourceCode.h" #include "uiToolTipMan/uiToolTipMan.h" extern const int c_iListHeight; extern const int c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_MAX]; //------------------------------------------------------------------------------ WzID uiBattleScoreBlood::controls_id_[BATTLE_SCORE_MAX] = { StrToWzID("B999"), //BATTLE_SCORE_BUTTON_EXIT, StrToWzID("L001"), //BATTLE_SCORE_LIST, StrToWzID("T999"), //BATTLE_SCORE_TXT_TITLE, StrToWzID("ST00"), //BATTLE_SCORE_TXT_DISCRIPT, StrToWzID("BT60"), //BATTLE_SCORE_BUTTON_ID, StrToWzID("BT63"), //BATTLE_SCORE_BUTTON_CLASS, StrToWzID("BT00"), //BATTLE_SCORE_BUTTON_RANK, StrToWzID("BT01"), //BATTLE_SCORE_BUTTON_LV, StrToWzID("BT02"), //BATTLE_SCORE_BUTTON_MAXDAMAGE, StrToWzID("BT03"), //BATTLE_SCORE_BUTTON_GIVEDAMAGE, StrToWzID("BT04"), //BATTLE_SCORE_BUTTON_GETDAMAGE, StrToWzID("BT07"), //BATTLE_SCORE_BUTTON_KILL, StrToWzID("BT05"), //BATTLE_SCORE_BUTTON_HEAL, StrToWzID("BT08"), //BATTLE_SCORE_BUTTON_DIE, StrToWzID("CT00"), //BATTLE_SCORE_CHECK_BUTTON_HOME, StrToWzID("CT02"), //BATTLE_SCORE_CHECK_BUTTON_AWAY, }; uiBattleScoreBlood::uiBattleScoreBlood(InterfaceManager* manager_ptr) :uiBase(manager_ptr), m_bInitDlg(FALSE), m_bIsInited(false), home_team_selected_(true) { #ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT handle_texture_ = INVALID_HANDLE_VALUE; #endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT } //------------------------------------------------------------------------------ /** */ uiBattleScoreBlood::~uiBattleScoreBlood(void) { Release(); } //------------------------------------------------------------------------------ /** */ void uiBattleScoreBlood::Init(CDrawBase* pDrawBase) { uiBase::Init(pDrawBase); InitControls(); battle_score_manager_ = NULL; set_home_team_selected(true); if (battle_players_list_control_) { battle_players_list_control_->ShowWindowWZ(WZ_SHOW); } #ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT handle_texture_ = g_pSunRenderer->x_pManagerTexture->LoadTexture("Data\\Interface\\Common_bg01.tga" ,TLS_ORIGINAL_SIZE | TLS_NO_MULTITHREAD); texture_information_ = g_pSunRenderer->x_pManagerTexture->GetTextureInfo(handle_texture_); assert(texture_information_); #endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT } //------------------------------------------------------------------------------ /** */ void uiBattleScoreBlood::InitControls() { int index = 0; battle_players_list_control_ = static_cast(this->get_control(BATTLE_SCORE_LIST)); SUN_ASSERT(battle_players_list_control_); if (battle_players_list_control_) { battle_players_list_control_->ShowWindowWZ(WZ_HIDE); } for (index=0; index(this->get_control(BATTLE_SCORE_CHECK_BUTTON_HOME+index)); ASSERT(team_check_button[index]); } if (team_check_button[TAB_BUTTON_HOME_TEAM]) { team_check_button[TAB_BUTTON_HOME_TEAM]->SetCheckState(false); } if (team_check_button[TAB_BUTTON_AWAY_TEAM]) { team_check_button[TAB_BUTTON_AWAY_TEAM]->SetCheckState(true); } for (index=0; index(this->get_control(BATTLE_SCORE_BUTTON_ID+index)); ASSERT(list_title_button[index]); } m_bIsInited = true; } //------------------------------------------------------------------------------ /** ´ÙÀ̾ó·Î±× À©µµ¿ì¶ç¿ì±â */ void uiBattleScoreBlood::OnShowWindow(BOOL val) { SolarDialog::OnShowWindow(val); if (val) { keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_Battle_Score; msg.wParam = IM_BATTLESCORE_MANAGER::DLG_BT_BLOOD; msg.DoSomething = GlobalFunc::DoShowWindowEx; g_KeyQueueManager.PushBack(msg); //uiBase::MoveCenter(); if (home_team_selected()) { team_check_button[TAB_BUTTON_HOME_TEAM]->SetCheckState(true); team_check_button[TAB_BUTTON_AWAY_TEAM]->SetCheckState(false); refresh_list_control_data(battle_score_manager()->m_BTSMemberArray[eHomeTeam]); } else { team_check_button[TAB_BUTTON_HOME_TEAM]->SetCheckState(false); team_check_button[TAB_BUTTON_AWAY_TEAM]->SetCheckState(true); refresh_list_control_data(battle_score_manager()->m_BTSMemberArray[eAwayTeam]); } } else { g_KeyQueueManager.DeleteMsg(eDoType_Battle_Score); } } //------------------------------------------------------------------------------ /** */ void uiBattleScoreBlood::Release() { #ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT if (handle_texture_ != INVALID_HANDLE_VALUE) { g_pSunRenderer->x_pManagerTexture->DestroyTexture(handle_texture_); } #endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT } //----------------------------------------------------------------------------- /** ¸Þ½ÃÁö PROC */ void uiBattleScoreBlood::MessageProc(SI_MESSAGE* pMessage) { bool order_by_sort = true; int sort_by_id = -1; switch (pMessage->eResultMsg) { case RT_MSG_LBUTTONCLICK: { switch (get_control_id_to_position(pMessage->dwCtrlID)) { case BATTLE_SCORE_BUTTON_EXIT: { this->ShowInterface(FALSE); } break; case BATTLE_SCORE_BUTTON_ID: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_ID) // ¹öưÀÌ °°À»¶§ { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_ID; } break; case BATTLE_SCORE_BUTTON_LV: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_LV) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_LV; } break; case BATTLE_SCORE_BUTTON_CLASS: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_CLASS) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_CLASS; } break; case BATTLE_SCORE_BUTTON_MAXDAMAGE: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_MAXDAMAGE) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_MAXDAMAGE; } break; case BATTLE_SCORE_BUTTON_GIVEDAMAGE: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_GIVEDAMAGE) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_GIVEDAMAGE; } break; case BATTLE_SCORE_BUTTON_GETDAMAGE: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_GETDAMAGE) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_GETDAMAGE; } break; case BATTLE_SCORE_BUTTON_KILL: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_KILL) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_KILL; } break; case BATTLE_SCORE_BUTTON_HEAL: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_HEAL) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_HEAL; } break; case BATTLE_SCORE_BUTTON_DIE: { if (battle_score_manager()->GetSortBy() == uiBattleScoreMan::BTSCROE_LIST_DIE) { order_by_sort = !battle_score_manager()->GetOrderBy(); // ¹ÝÀüÀÌ ÇÊ¿ä } sort_by_id = uiBattleScoreMan::BTSCROE_LIST_DIE; } break; case BATTLE_SCORE_CHECK_BUTTON_HOME: { if (home_team_selected() == false) { set_home_team_selected(true); if (battle_score_manager() != NULL) { battle_score_manager()->set_toggle_ui_open(true); battle_score_manager()->SendPacketBattleResultSYN(); } } team_check_button[TAB_BUTTON_HOME_TEAM]->SetCheckState(true); team_check_button[TAB_BUTTON_AWAY_TEAM]->SetCheckState(false); } break; case BATTLE_SCORE_CHECK_BUTTON_AWAY: { if (home_team_selected() == true) { set_home_team_selected(false); if (battle_score_manager() != NULL) { battle_score_manager()->set_toggle_ui_open(true); battle_score_manager()->SendPacketBattleResultSYN(); } } team_check_button[TAB_BUTTON_HOME_TEAM]->SetCheckState(false); team_check_button[TAB_BUTTON_AWAY_TEAM]->SetCheckState(true); } break; }//switch } break; }//switch if (sort_by_id != -1) { battle_score_manager()->SetSortBy(sort_by_id); battle_score_manager()->SetOrderBy(order_by_sort); battle_score_manager()->SortbyList(); E_TEAM team = home_team_selected() ? eHomeTeam : eAwayTeam; refresh_list_control_data(battle_score_manager()->m_BTSMemberArray[team]); } } //------------------------------------------------------------------------------ /** */ void uiBattleScoreBlood::clear_selected() { if (battle_score_manager()) { battle_score_manager()->ClearSelection(); if (battle_players_list_control_) { battle_players_list_control_->SetCurSel(-1); } } } //------------------------------------------------------------------------------ /** */ uiBattleScoreMan* uiBattleScoreBlood::battle_score_manager() { if (battle_score_manager_) { return this->battle_score_manager_; } else { this->battle_score_manager_ = GET_DIALOG_MANAGER(uiBattleScoreMan, UIMAN_BATTLE_SCORE); ASSERT(battle_score_manager_); return this->battle_score_manager_; } } void uiBattleScoreBlood::OnRenderSolarDialog() { #ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT CCtrlListWZ* list_control = static_cast(this->get_control(BATTLE_SCORE_LIST)); RECT rect; float x = 0.0f; float y = 0.0f; if (list_control) { rect = list_control->GetSizeRect(); } else { this->GetDialogWZ()->GetClientRect(&rect); } x = static_cast(rect.left) + c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_RANK] + 2; //'·©Å©'¹öư °ø°£¸¸Å­ À̵¿ y = static_cast(rect.top) + 4; uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP); BYTE team = eHomeTeam; team = home_team_selected() ? eHomeTeam:eAwayTeam; for (int i = 0; i < battle_score_manager()->m_BTSMemberArray[team].Size(); ++i) { eCHAR_TYPE class_type = static_cast(battle_score_manager()->m_BTSMemberArray[team][i].byClassCode); GenderType::Value gender = static_cast(battle_score_manager()->m_BTSMemberArray[team][i].gender); eCHAR_TYPE race_type = ResourceCode::GetImageClassType(class_type, gender); //Á¾Á· g_pSunRenderer->RenderTexture( handle_texture_, x, y + (i * c_iListHeight), 14.0f, 14.0f, 730.0f + ((race_type - eCHAR_BERSERKER) * 14), 297.0f, 14.0f, 14.0f, NULL, 0.0f ); if (tooltip_manager && IsInRect(x, (y + (i * c_iListHeight)), 14.0f, 14.0f)) { tooltip_manager->RegisterTooltip(GlobalFunc::GetRaceString(race_type)); tooltip_manager->SetTooltipDialogID( GetDialogKey() ); } //Á÷¾÷ g_pSunRenderer->RenderTexture( handle_texture_, x + 14, y + (i * c_iListHeight), 14.0f, 14.0f, 730.0f + ((class_type - eCHAR_BERSERKER) * 14), 297.0f + 14.0f, 14.0f, 14.0f, NULL, 0.0f ); if (tooltip_manager && IsInRect((x + 14), (y + (i * c_iListHeight)), 14.0f, 14.0f)) { tooltip_manager->RegisterTooltip(GlobalFunc::GetClassString(class_type)); tooltip_manager->SetTooltipDialogID( GetDialogKey() ); } } #endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT } //===================================================================================== // 1.¸®½ºÆ®ÄÁÆ®·Ñ µ¥ÀÌÅÍ»ðÀÔ //===================================================================================== void uiBattleScoreBlood::set_list_controls_data(int nIndex,int nSubIndex,TCHAR* pszText, bool bIsOnline) { DWORD nTextStyle = DT_VCENTER | DT_CENTER; // ±âº»°ª #ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT if (nSubIndex == uiBattleScoreMan::BTSCROE_LIST_ID) { nTextStyle = DT_VCENTER | DT_LEFT; // ¿ÞÂÊ Á¤·Ä } #endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT if (!bIsOnline && nSubIndex == eBTSSORT_NAME) { // ¿ÀÇÁ¶óÀÎÀÌ¸é »¡°­ GlobalFunc::SetItem(battle_players_list_control_, nIndex, nSubIndex, pszText, c_wiListFont, nTextStyle, RGBA(255,255,255,0), RGBA(255,0,0,255), RGBA(255,0,0,255)); } else { // Á¤»óÀ̸é Èò»ö GlobalFunc::SetItem(battle_players_list_control_, nIndex, nSubIndex, pszText, c_wiListFont, nTextStyle, RGBA(255,255,255,0), RGBA(255,255,255,255), RGBA(255,255,255,255)); } } //===================================================================================== // 2.ÄÁÆ®·Ñ °»½Å //===================================================================================== void uiBattleScoreBlood::refresh_list_control_data(nArray &ArrayType) { if(!m_bIsInited) { return; } BATTLESCORE_DATA battler_data; TCHAR temp_string[INTERFACE_STRING_LENGTH] = {0,}; TCHAR temp_string2[INTERFACE_STRING_LENGTH] = {0,}; int array_count = ArrayType.Size(); //0.¸®½ºÆ® ¸ñ·ÏÁ¤º¸»ðÀÔ battle_players_list_control_->DeleteItemAll(); battle_players_list_control_->SetBeginDrawIndex(0); if (array_count <= 0) { return; } battle_players_list_control_->SetSellHeight(c_iListHeight); battle_players_list_control_->SetUseReport(true); battle_players_list_control_->SetReportUseCnt(uiBattleScoreMan::BTSCROE_LIST_MAX); battle_players_list_control_->SetHideReportRender(true); battle_players_list_control_->SetFontID(c_wiListFont); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_RANK, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_RANK], _T("rank")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_ID, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_ID], _T("name")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_LV, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_LV], _T("lv")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_CLASS, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_CLASS], _T("class")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_MAXDAMAGE, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_MAXDAMAGE], _T("maxdmg")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_GIVEDAMAGE, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_GIVEDAMAGE], _T("givedmg")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_GETDAMAGE, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_GETDAMAGE], _T("getdmg")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_HEAL, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_HEAL], _T("heal")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_KILL, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_KILL], _T("kill")); GlobalFunc::SetReportButtonInfo(battle_players_list_control_, uiBattleScoreMan::BTSCROE_LIST_DIE, c_iListWidth[uiBattleScoreMan::BTSCROE_LIST_DIE], _T("die")); //2.µ¥ÀÌÅÍ»ðÀÔ int iAdd = 0; int row_index = 0; int sort_index = 0; int class_code = 0; int index = 0; for (int row_index = 0; row_index < array_count; ++row_index) { index = battle_players_list_control_->InsertItemBack(); battle_players_list_control_->SetItemData(index, &(ArrayType[row_index])); ++iAdd; for (sort_index=0; sort_index(ArrayType[row_index].byClassCode))); #ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT continue;//¾ÆÀÌÄÜÀ¸·Î ´ëü #endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT°¡ } break; case eBTSSORT_MAXDMG: GlobalFunc::SetPointText(temp_string, ArrayType[row_index].dwMaxDamageToEnemy); break; case eBTSSORT_GIVEDMG: GlobalFunc::SetPointText(temp_string, ArrayType[row_index].dwTotalDamageToEnemy); break; case eBTSSORT_GETDMG: GlobalFunc::SetPointText(temp_string, ArrayType[row_index].dwTotalDamageByEnemy); break; case eBTSSORT_HEAL: GlobalFunc::SetPointText(temp_string, ArrayType[row_index].dwTotalHealToParty); break; case eBTSSORT_KILL: GlobalFunc::SetPointText(temp_string, ArrayType[row_index].wKillCount); break; case eBTSSORT_DIE: GlobalFunc::SetPointText(temp_string, ArrayType[row_index].wDeadCount); break; } set_list_controls_data(row_index, sort_index, temp_string, ArrayType[row_index].bConnected); } } }