#include "SunClientPrecompiledHeader.h" #ifdef _NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL #include "GuildSystem/uiGuildInfo.h" #include "GuildSystem/GuildSystemFunction.h" #include "GuildSystem/GuildSystemData.h" #include "GuildSystem/uiGuildPoint.h" #include "GuildSystem/uiGuildMember.h" #include "GuildSystem/uiGuildIntro.h" #include "GuildSystem/uiGuildManagement.h" #ifdef _NA_008334_20150608_SONNENSCHEIN #include "GuildSystem/uiGuildPvE.h" #endif //_NA_008334_20150608_SONNENSCHEIN #include "GuildSystem/uiGuildLog.h" #include "GuildSystem/uiGuildInstitution.h" #include "GuildSystem/uiGuildInfoOther.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 "Mouse.h" #include "uiTooltipMan/uiToolTipMan.h" #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION const DWORD uiGuildInfo::kDialog_ID = StrToWzID("7340"); uiGuildInfo::uiGuildInfo( InterfaceManager* ui_manager ) :uiBase(ui_manager) #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION ,tooltip_manager_ptr_(NULL) #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION { } uiGuildInfo::~uiGuildInfo() { #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION tooltip_manager_ptr_ = NULL; #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } void uiGuildInfo::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); } } void uiGuildInfo::Release() { #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION tooltip_manager_ptr_ = NULL; #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } void uiGuildInfo::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 uiGuildInfo::OnLButtonClick( SI_MESSAGE* message ) { bool result = true; DWORD control_position = GetControlPosition_byID(message->dwCtrlID); switch (control_position) { case kControl_Button_BT01: { OnClickDonateGuildCoin(); } break; case kControl_CheckBT_C000: { } break; case kControl_Button_B999: { ShowInterface(FALSE); } break; } return result; } void uiGuildInfo::OnClickDonateGuildCoin() { const BYTE max_guild_grade = GuildRankInfoParser::Instance()->GetGuildMaxGrade(); const BYTE current_guild_grade = GuildSystem::GetGuildSystemData().GetGuildInfo().m_GuildGrade; if (current_guild_grade >= max_guild_grade) { // 5195 ´õÀÌ»ó ·©Å© ¾÷ ÇÒ¼ö ¾ø½À´Ï´Ù. GlobalFunc::VerifyMessage(5195); return; } uiGuildPoint* guild_point = GET_CAST_DIALOG(uiGuildPoint, uiGuildPoint::kDialog_ID); if (guild_point != NULL) { guild_point->ShowInterface(TRUE); } } void uiGuildInfo::OnShowWindow( BOOL is_show ) { if (is_show == TRUE) { set_show_flag(false); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = uiGuildInfo::kDialog_ID; msg.wParam = uiGuildInfo::kDialog_ID; msg.DoSomething = GlobalFunc::DoShowWindowEx; g_KeyQueueManager.PushBack(msg); tab_button_controller().ShowCurrentDialog(true); MoveSubDialog(); uiBase* ui_guild_info = GET_DIALOG(uiGuildInfoOther::kDialog_ID); if (ui_guild_info != NULL) { ui_guild_info->ShowInterface(FALSE); } #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION if (tooltip_manager_ptr_ == NULL) { tooltip_manager_ptr_ = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP); assert(tooltip_manager_ptr_); } #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } else { g_KeyQueueManager.DeleteMsg(uiGuildInfo::kDialog_ID); tab_button_controller().ShowCurrentDialog(false); #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION tooltip_manager_ptr_ = NULL; #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } } void uiGuildInfo::OnUpdateSolarDialog() { MoveSubDialog(); UpdateGuildInfo(); UpdateButtonState(); tab_button_controller().UpdateDialogFocus(this); } void uiGuildInfo::OnRenderSolarDialog() { // ±æµå¸¶Å© Ãâ·Â CCtrlPictureWZ* mark_picture = static_cast(GetControlWZ_byPosition(kControl_Picture_PI00)); if (mark_picture != NULL) { DWORD background_index = GuildSystem::GetGuildSystemData().GetGuildInfo().m_BackGroundIdx; DWORD pattern_index = GuildSystem::GetGuildSystemData().GetGuildInfo().m_PatternIdx; RECT mark_rect = mark_picture->GetSizeRect(); GuildSystem::Function::RenderGuildMark(background_index, mark_rect); GuildSystem::Function::RenderGuildMark(pattern_index, mark_rect); } #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION if (tooltip_manager_ptr_ == NULL) { return; } RenderTooltip(); #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION } void uiGuildInfo::UpdateGuildInfo() { TCHAR info_string[INTERFACE_STRING_LENGTH] = {'\0', }; const GUILD_INFO& guild_info = GuildSystem::GetGuildSystemData().GetGuildInfo(); // ±æµå¿¬ÇÕ 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.m_tszGuildName); } // ±æµå¸¶½ºÅÍ info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I007)); if (info_text_control != NULL) { info_text_control->SetTextWZ(GuildSystem::GetGuildSystemData().GetMasterName()); } // ±æµå·©Å· info_text_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_I008)); if (info_text_control != NULL) { if (GuildSystem::GetGuildSystemData().guild_rank() > 0) { Snprintf(info_string, INTERFACE_STRING_LENGTH - 1, "%d", GuildSystem::GetGuildSystemData().guild_rank()); info_text_control->SetTextWZ(info_string); } else { info_text_control->SetTextWZ(""); } } // ±æµå·¹º§ 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.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.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(GuildSystem::GetGuildSystemData().guild_member_container().size(), 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)); uiCharacterStatusCurrencyInfo* currency_dialog = GET_CAST_DIALOG(uiCharacterStatusCurrencyInfo, uiCharacterStatusCurrencyInfo::kDialog_ID); if (currency_dialog != NULL) { TCHAR guild_coin_point[INTERFACE_STRING_LENGTH] = {'\0', }; uiCharacterStatusCurrencyInfo::CurrencyPointInfo* currency_point = currency_dialog->GetCurrencyPointInfo(CURRENCY_INFO_GUILD_COIN); if (currency_point != NULL) { _itot(currency_point->currency_point, guild_coin_point, 10); } // 7275 ±æµåÄÚÀÎ: %s g_InterfaceManager.GetInterfaceStringFormat(info_string, INTERFACE_STRING_LENGTH - 1, 7275, guild_coin_point); text_control->SetTextWZ(info_string); CCtrlButtonWZ* button_control = static_cast(GetControlWZ_byPosition(kControl_Button_BT01)); if (button_control != NULL) { if (currency_point->currency_point > 0) { button_control->EnableWindowWZ(true); } else { button_control->EnableWindowWZ(false); } } } } void uiGuildInfo::UpdateButtonState() { // ÄÚÀαâºÎ ¹× °¡ÀÔ¿äû ¹öư °»½Å CCtrlButtonWZ* button_control = static_cast(GetControlWZ_byPosition(kControl_Button_BT01)); if (button_control != NULL) { // 7276 ±âºÎÇϱâ button_control->SetTextID(7276); } // °¡ÀÔ¿äûÂ÷´Ü ¹öư °»½Å // [GUILD_RENEWAL] CControlWZ* check_button = GetControlWZ_byPosition(kControl_CheckBT_C000); if (check_button != NULL) { check_button->EnableWindowWZ(false); } } void uiGuildInfo::MoveSubDialog() { RECT control_rect; GetDialogWZ()->GetClientRect(&control_rect); uiBase* sub_dialog = NULL; // ¼­ºê ÅÇ ´ÙÀ̾ó·Î±× sub_dialog = tab_button_controller().GetCurrentTabDialog(); if (sub_dialog != NULL) { sub_dialog->MoveWindowWZ(static_cast(control_rect.left), static_cast(control_rect.bottom)); } } void uiGuildInfo::InitTabController() { tab_button_controller().Initialize(kTab_Max, 0, NULL, kGuildIntro); tab_button_controller().PushTab(kGuildIntro, GET_DIALOG(uiGuildIntro::kDialog_ID)); tab_button_controller().PushTab(kGuildMember, GET_DIALOG(uiGuildMember::kDialog_ID)); tab_button_controller().PushTab(kGuildInstitution, GET_DIALOG(uiGuildInstitution::kDialog_ID)); tab_button_controller().PushTab(kGuildManagement, GET_DIALOG(uiGuildManagement::kDialog_ID)); #ifdef _NA_008334_20150608_SONNENSCHEIN tab_button_controller().PushTab(kGuildPvE, GET_DIALOG(uiGuildPvE::kDialog_ID)); #endif //_NA_008334_20150608_SONNENSCHEIN tab_button_controller().PushTab(kGuildLog, GET_DIALOG(uiGuildLog::kDialog_ID)); } #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION void uiGuildInfo::RenderTooltip() { // ÅøÆÁ °è»êÀ» À§Çؼ­ int mouse_x = Mouse::Instance()->GetMouseX(); int mouse_y = Mouse::Instance()->GetMouseY(); CControlWZ* control_ptr = NULL; control_ptr = GetControlWZ_byPosition(kControl_Text_S005); if (control_ptr) { RECT control_rect = control_ptr->GetSizeRect(); if (control_rect.left <= mouse_x && control_rect.right >= mouse_x && control_rect.top <= mouse_y && control_rect.bottom >= mouse_y) { tooltip_manager_ptr_->InitTooltip(); TCHAR result_message[INTERFACE_STRING_LENGTH] = {0, }; g_InterfaceManager.GetInterfaceString(7283, result_message); tooltip_manager_ptr_->RegisterTooltip(result_message, -1, 22, StrToWzID("s210"), WzColor_RGBA(255, 255, 255, 255), TOOLTIP_BG_WZCOLOR, c_dwTOOLTIP_EXTRA_INFO_DT_LEFT); tooltip_manager_ptr_->AddEmptyLineForTooltip(); tooltip_manager_ptr_->SetTooltipDialogID(GetDialogKey()); } } } #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #endif //_NA_003923_20120222_GUILD_RENEWAL_UI_RENEWAL