#include "SunClientPrecompiledHeader.h" #ifdef _NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL #include "GuildSystem/uiGuildInfoOther.h" #include "GuildSystem/GuildSystemFunction.h" #include "GuildSystem/GuildSystemData.h" #include "GuildSystem/uiGuildPoint.h" #include "GuildSystem/uiGuildMember.h" #include "GuildSystem/uiGuildIntroOther.h" #include "GuildSystem/uiGuildManagement.h" #include "GuildSystem/uiGuildLog.h" #include "GuildSystem/uiGuildInstitution.h" #include "GuildSystem/uiGuildInfo.h" #include "uiCharacterStatus/uiCharacterStatusCurrencyInfo.h" #include "GuildRankInfoParser.h" #include "CurrencyInfoParser.h" #include "InterfaceManager.h" #include "GlobalFunc.h" #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #include "Hero.h" #include "GuildSystem/GuildSystemPacketFunction.h" #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION const DWORD uiGuildInfoOther::kDialog_ID = g_IDGenerator.GenerateID(); uiGuildInfoOther::uiGuildInfoOther( InterfaceManager* ui_manager ) :uiBase(ui_manager) #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION ,guild_join_request_state_(eGUILD_JOIN_REQUEST_CANCEL) #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION { } uiGuildInfoOther::~uiGuildInfoOther() { } void uiGuildInfoOther::Init( CDrawBase* draw_base ) { uiBase::Init(draw_base); RegisterControlPosition(StrToWzID("C000"), kControl_CheckBT_C000); RegisterControlPosition(StrToWzID("B999"), kControl_Button_B999); RegisterControlPosition(StrToWzID("BT01"), kControl_Button_BT01); RegisterControlPosition(StrToWzID("S004"), kControl_Text_S004); RegisterControlPosition(StrToWzID("S005"), kControl_Text_S005); RegisterControlPosition(StrToWzID("TI02"), kControl_TextImage_TI02); RegisterControlPosition(StrToWzID("I006"), kControl_TextImage_I006); RegisterControlPosition(StrToWzID("I007"), kControl_TextImage_I007); RegisterControlPosition(StrToWzID("I008"), kControl_TextImage_I008); RegisterControlPosition(StrToWzID("I009"), kControl_TextImage_I009); RegisterControlPosition(StrToWzID("I010"), kControl_TextImage_I010); RegisterControlPosition(StrToWzID("PI00"), kControl_Picture_PI00); CControlWZ* control_ptr = GetControlWZ(StrToWzID("P005")); if (control_ptr != NULL) { control_ptr->SetDiscardMessage(true); } control_ptr = GetControlWZ_byPosition(kControl_CheckBT_C000); if (control_ptr != NULL) { control_ptr->ShowWindowWZ(WZ_HIDE); } control_ptr = GetControlWZ_byPosition(kControl_Text_S004); if (control_ptr != NULL) { control_ptr->ShowWindowWZ(WZ_HIDE); } control_ptr = GetControlWZ_byPosition(kControl_Button_BT01); if (control_ptr != NULL) { #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION control_ptr->ShowWindowWZ(WZ_SHOW); guild_join_request_state_ = eGUILD_JOIN_REQUEST_CANCEL; #else control_ptr->ShowWindowWZ(WZ_HIDE); #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } } void uiGuildInfoOther::Release() { } void uiGuildInfoOther::MessageProc( SI_MESSAGE* message ) { if (IsLock()) return; if (GetMan() == NULL) return; switch (message->eResultMsg) { case RT_MSG_LBUTTONCLICK: OnLButtonClick(message); break; default: SolarDialog::MessageProc(message); break; } } bool uiGuildInfoOther::OnLButtonClick( SI_MESSAGE* message ) { bool result = true; DWORD control_position = GetControlPosition_byID(message->dwCtrlID); switch (control_position) { case kControl_Button_BT01: { #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION OnAnswerJoinRequest(); #else OnClickRequestJoin(); #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } break; case kControl_Button_B999: { ShowInterface(FALSE); } break; break; } return result; } void uiGuildInfoOther::OnClickRequestJoin() { #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION GuildSystem::GuildSystemData::GuildRankingInfoContainer& guild_ranking_info_container = GuildSystem::GetGuildSystemData().guild_ranking_info_container(); if (static_cast(guild_rank_index()) >= guild_ranking_info_container.size()) { return; } GUILD_RANKING_INFO& ranking_info = guild_ranking_info_container[guild_rank_index()]; GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer& ranking_guild_info_container = GuildSystem::GetGuildSystemData().guild_ranking_guild_info_container(); GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer::iterator found_itr = ranking_guild_info_container.find(ranking_info.guild_guid); if (found_itr == ranking_guild_info_container.end()) { return; } // [GUILD_RENEWAL] °¡ÀÔ¿äû MSG_CG_GUILD_JOIN_REQUEST_SYN send_packet; GuildSystem::GuildSystemData::GuildInfoForClient& guild_info = found_itr->second; send_packet.guild_guid = guild_info.game_guild_info_.m_GuildGuid; /* eGUILD_JOIN_REQUEST_OK = 0, //°¡ÀÔ¿äû, °¡ÀÔ½ÂÀÎ eGUILD_JOIN_REQUEST_CANCEL, //°¡ÀÔÃë¼Ò, °¡ÀÔ°ÅÀý */ send_packet.request_type = eGUILD_JOIN_REQUEST_OK; GuildSystem::PacketFunction::SEND_CG_GUILD_JOIN_REQUEST_SYN(send_packet); #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } void uiGuildInfoOther::OnShowWindow( BOOL is_show ) { uiGuildIntroOther* ui_guild_intro_other = GET_CAST_DIALOG(uiGuildIntroOther, uiGuildIntroOther::kDialog_ID); if (ui_guild_intro_other != NULL) { ui_guild_intro_other->set_guild_rank_index(guild_rank_index()); ui_guild_intro_other->ShowInterface(is_show); } if (is_show == TRUE) { keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = uiGuildInfoOther::kDialog_ID; msg.wParam = uiGuildInfoOther::kDialog_ID; msg.DoSomething = GlobalFunc::DoShowWindowEx; g_KeyQueueManager.PushBack(msg); uiBase* ui_guild_info = GET_DIALOG(uiGuildInfo::kDialog_ID); if (ui_guild_info != NULL) { ui_guild_info->ShowInterface(FALSE); RECT control_rect; ui_guild_info->GetDialogWZ()->GetClientRect(&control_rect); MoveWindowWZ(static_cast(control_rect.left), static_cast(control_rect.top)); } MoveSubDialog(); #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION RequestJoinButtonReset(); SetJoinRequestButton(eGUILD_JOIN_REQUEST_CANCEL); // ±âº» ¹öư »óÅ #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } else { g_KeyQueueManager.DeleteMsg(uiGuildInfoOther::kDialog_ID); } } void uiGuildInfoOther::OnUpdateSolarDialog() { MoveSubDialog(); UpdateGuildInfo(); #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #else UpdateButtonState(); #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION uiBase* ui_guild_intro_other = GET_DIALOG(uiGuildIntroOther::kDialog_ID); if (ui_guild_intro_other != NULL) { if (HaveFocus() == TRUE) { GlobalFunc::MoveToTopDialog(ui_guild_intro_other->GetDialogWZ()->GetDlgID()); } else if (ui_guild_intro_other->HaveFocus() == TRUE) { GlobalFunc::MoveToTopDialog(GetDialogWZ()->GetDlgID()); } } uiBase* ui_guild_info = GET_DIALOG(uiGuildInfo::kDialog_ID); if (ui_guild_info != NULL) { RECT control_rect; GetDialogWZ()->GetClientRect(&control_rect); ui_guild_info->MoveWindowWZ(static_cast(control_rect.left), static_cast(control_rect.top)); } } void uiGuildInfoOther::OnRenderSolarDialog() { GuildSystem::GuildSystemData::GuildRankingInfoContainer& guild_ranking_info_container = GuildSystem::GetGuildSystemData().guild_ranking_info_container(); if (static_cast(guild_rank_index()) >= guild_ranking_info_container.size()) { return; } GUILD_RANKING_INFO& ranking_info = guild_ranking_info_container[guild_rank_index()]; GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer& ranking_guild_info_container = GuildSystem::GetGuildSystemData().guild_ranking_guild_info_container(); GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer::iterator found_itr = ranking_guild_info_container.find(ranking_info.guild_guid); if (found_itr == ranking_guild_info_container.end()) { return; } // ±æµå¸¶Å© Ãâ·Â CCtrlPictureWZ* mark_picture = static_cast(GetControlWZ_byPosition(kControl_Picture_PI00)); if (mark_picture != NULL) { GuildSystem::GuildSystemData::GuildInfoForClient& guild_info = found_itr->second; DWORD background_index = guild_info.game_guild_info_.m_BackGroundIdx; DWORD pattern_index = guild_info.game_guild_info_.m_PatternIdx; RECT mark_rect = mark_picture->GetSizeRect(); GuildSystem::Function::RenderGuildMark(background_index, mark_rect); GuildSystem::Function::RenderGuildMark(pattern_index, mark_rect); } } void uiGuildInfoOther::UpdateGuildInfo() { GuildSystem::GuildSystemData::GuildRankingInfoContainer& guild_ranking_info_container = GuildSystem::GetGuildSystemData().guild_ranking_info_container(); if (static_cast(guild_rank_index()) >= guild_ranking_info_container.size()) { return; } GUILD_RANKING_INFO& ranking_info = guild_ranking_info_container[guild_rank_index()]; GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer& ranking_guild_info_container = GuildSystem::GetGuildSystemData().guild_ranking_guild_info_container(); GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer::iterator found_itr = ranking_guild_info_container.find(ranking_info.guild_guid); if (found_itr == ranking_guild_info_container.end()) { return; } TCHAR info_string[INTERFACE_STRING_LENGTH] = {'\0', }; GuildSystem::GuildSystemData::GuildInfoForClient& guild_info = found_itr->second; // ±æµå¿¬ÇÕ CCtrlImageStaticWZ* info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_TI02)); if (info_text_control != NULL) { // [GUILD_RENEWAL] ±æµå¿¬ÇÕÀº ÃßÈÄ ±¸Çö info_text_control->SetTextWZ(""); } // ±æµå¸í info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I006)); if (info_text_control != NULL) { info_text_control->SetTextWZ(guild_info.game_guild_info_.m_tszGuildName); } // ±æµå¸¶½ºÅÍ info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I007)); if (info_text_control != NULL) { info_text_control->SetTextWZ(ranking_info.master_name); } // ±æµå·©Å· info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I008)); if (info_text_control != NULL) { Snprintf(info_string, INTERFACE_STRING_LENGTH - 1, "%d", guild_rank_index() + 1); info_text_control->SetTextWZ(info_string); } // ±æµå·¹º§ info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I009)); if (info_text_control != NULL) { Snprintf(info_string, INTERFACE_STRING_LENGTH - 1, "%d", guild_info.game_guild_info_.m_GuildGrade); info_text_control->SetTextWZ(info_string); } // ±æµå¸â¹ö¼ö info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I010)); const GuildRankInfo* guild_rank_info = GuildRankInfoParser::Instance()->FindGuildRankInfo(guild_info.game_guild_info_.m_GuildGrade); if ((info_text_control != NULL) && (guild_rank_info != NULL)) { TCHAR current_number[INTERFACE_STRING_LENGTH] = {'\0', }; TCHAR max_number[INTERFACE_STRING_LENGTH] = {'\0', }; _itot(ranking_info.member_count, current_number, 10); _itot(guild_rank_info->max_member_count_, max_number, 10); // 7290 %s / %s g_InterfaceManager.GetInterfaceStringFormat( info_string, INTERFACE_STRING_LENGTH - 1, 7290, current_number, max_number); info_text_control->SetTextWZ(info_string); } // ±æµåÄÚÀÎ CCtrlStaticWZ* text_control = static_cast(GetControlWZ_byPosition(kControl_Text_S005)); if (text_control != NULL) { text_control->ShowWindowWZ(WZ_HIDE); } } #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #else void uiGuildInfoOther::UpdateButtonState() { } #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION void uiGuildInfoOther::MoveSubDialog() { RECT control_rect; GetDialogWZ()->GetClientRect(&control_rect); uiBase* sub_dialog = NULL; // ¼­ºê ÅÇ ´ÙÀ̾ó·Î±× sub_dialog = GET_DIALOG(uiGuildIntroOther::kDialog_ID); if (sub_dialog != NULL) { sub_dialog->MoveWindowWZ(static_cast(control_rect.left), static_cast(control_rect.bottom)); } } #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION void uiGuildInfoOther::OnAnswerJoinRequest() { if (guild_join_request_state_ == eGUILD_JOIN_REQUEST_CANCEL) return; GuildSystem::GuildSystemData::GuildRankingInfoContainer& guild_ranking_info_container = GuildSystem::GetGuildSystemData().guild_ranking_info_container(); if (static_cast(guild_rank_index()) >= guild_ranking_info_container.size()) { return; } GUILD_RANKING_INFO& ranking_info = guild_ranking_info_container[guild_rank_index()]; GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer& ranking_guild_info_container = GuildSystem::GetGuildSystemData().guild_ranking_guild_info_container(); GuildSystem::GuildSystemData::GuildRankingGuildInfoContainer::iterator found_itr = ranking_guild_info_container.find(ranking_info.guild_guid); if (found_itr == ranking_guild_info_container.end()) { return; } uiSystemMan* ui_system_manager_ptr = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM); if (ui_system_manager_ptr) { TCHAR temp_message[INTERFACE_STRING_LENGTH] = {0, }; TCHAR guild_name[INTERFACE_STRING_LENGTH] = {0, }; GuildSystem::GuildSystemData::GuildInfoForClient& guild_info = found_itr->second; Snprintf(guild_name, MAX_GUILDNAME_LENGTH+1, guild_info.game_guild_info_.m_tszGuildName); g_InterfaceManager.GetInterfaceStringFormat(temp_message, INTERFACE_STRING_LENGTH, 7297, guild_name); ui_system_manager_ptr->Sys_SystemMessage(temp_message, NULL, GuildSystem::Function::Callback_GuildJoinRequestSend, uiSystemMessage::kConfirm_Type, true); } } void uiGuildInfoOther::SetJoinRequestButton( const eGUILD_JOIN_REQUEST& guild_join_request_state ) { /* eGUILD_JOIN_REQUEST_OK = 0, //°¡ÀÔ¿äû Çϱâ, °¡ÀÔ¿äû ¹öư»óÅÂ, °¡ÀÔ½ÂÀÎ eGUILD_JOIN_REQUEST_CANCEL, //°¡ÀÔÃë¼Ò Çϱâ, °¡ÀÔÃë¼Ò ¹öư»óÅÂ, °¡ÀÔ°ÅÀý eGUILD_JOIN_REQUEST_UPDATE, //°¡ÀÔ ¿äû ³»¿ë º¯°æ */ guild_join_request_state_ = guild_join_request_state; CCtrlButtonWZ* control_ptr = static_cast(GetControlWZ_byPosition(kControl_Button_BT01)); if (NULL == control_ptr) return; TCHAR button_string[INTERFACE_STRING_LENGTH] = {0, }; switch (guild_join_request_state) { case eGUILD_JOIN_REQUEST_OK: // ±æµå °¡ÀÔ ¿äû ¹öư »óÅ { // ±æµå°¡ÀÔ ¿äû control_ptr->EnableWindowWZ(TRUE); g_InterfaceManager.GetInterfaceString(7280, button_string); control_ptr->SetTextWZ(button_string); } break; case eGUILD_JOIN_REQUEST_CANCEL: // ±æµå °¡ÀÔ ´ë±â»óÅ ¹öư »óÅ { // ±æµå°¡ÀÔ ´ë±â g_InterfaceManager.GetInterfaceString(7296, button_string); control_ptr->SetTextWZ(button_string); control_ptr->EnableWindowWZ(FALSE); } break; default: { // ³ª¸ÓÁö »óÅ´ ¾ø´Ù. } } } void uiGuildInfoOther::RequestJoinButtonReset() { CCtrlButtonWZ* button_control = static_cast(GetControlWZ_byPosition(kControl_Button_BT01)); if (!button_control) return; if (!g_pHero) return; if (g_pHero->IsExistGuild() == TRUE) { button_control->ShowWindowWZ(WZ_HIDE); } else { button_control->ShowWindowWZ(WZ_SHOW); } } #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #endif //_NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL