#include "SunClientPrecompiledHeader.h" #ifdef _NA_003923_20120130_GUILD_RENEWAL_MOD_WAREHOUSE_SLOT_NUM #include "GuildSystem/uiGuildMan.h" #include "GuildSystem/GuildSystemFunction.h" #include "GuildSystem/GuildSystemData.h" #include "uiGuildWareHouse.h" #include #include "MouseHandler.h" #include "ItemManager.h" #include "InterfaceManager.h" #include "SlotKeyGenerator.h" #include "Mouse.h" #include "CursorChangeTransact.h" #include "hero.h" #include "globalfunc.h" #include "uiToolTipMan/uiToolTipMan.h" #include "ItemManager.h" #include "HeroActionInput.h" #include "BitStream.hpp" const DWORD uiGuildWareHouse::kDialog_ID = StrToWzID("0738"); //---------------------------------------------------------------------------- /** */ uiGuildWareHouse::uiGuildWareHouse(InterfaceManager* ui_manager) :uiBase(ui_manager), Render_ui_Draw_List_(false) { item_unit_renderer_ = NULL; } //---------------------------------------------------------------------------- /** */ uiGuildWareHouse::~uiGuildWareHouse(void) { } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::Init(CDrawBase* draw_base) { uiBase::Init(draw_base); SCItemSlotContainer::Init(MAX_GUILD_WAREHOUSE_SLOT_NUM, SI_GUILDWAREHOUSE); InitRenderer(); RegisterControlPosition(StrToWzID("C001"), kControl_CheckBT_C001); RegisterControlPosition(StrToWzID("C004"), kControl_CheckBT_C004); RegisterControlPosition(StrToWzID("C002"), kControl_CheckBT_C002); RegisterControlPosition(StrToWzID("C003"), kControl_CheckBT_C003); RegisterControlPosition(StrToWzID("C000"), kControl_CheckBT_C000); RegisterControlPosition(StrToWzID("B999"), kControl_Button_B999); RegisterControlPosition(StrToWzID("B001"), kControl_Button_B001); RegisterControlPosition(StrToWzID("C005"), kControl_CheckBT_C005); RegisterControlPosition(StrToWzID("C006"), kControl_CheckBT_C006); RegisterControlPosition(StrToWzID("B002"), kControl_Button_B002); RegisterControlPosition(StrToWzID("B003"), kControl_Button_B003); RegisterControlPosition(StrToWzID("B004"), kControl_Button_B004); RegisterControlPosition(StrToWzID("B007"), kControl_Button_B007); RegisterControlPosition(StrToWzID("B008"), kControl_Button_B008); RegisterControlPosition(StrToWzID("B009"), kControl_Button_B009); RegisterControlPosition(StrToWzID("B010"), kControl_Button_B010); RegisterControlPosition(StrToWzID("B011"), kControl_Button_B011); RegisterControlPosition(StrToWzID("B012"), kControl_Button_B012); RegisterControlPosition(StrToWzID("B013"), kControl_Button_B013); RegisterControlPosition(StrToWzID("B014"), kControl_Button_B014); RegisterControlPosition(StrToWzID("B015"), kControl_Button_B015); RegisterControlPosition(StrToWzID("B016"), kControl_Button_B016); RegisterControlPosition(StrToWzID("B017"), kControl_Button_B017); RegisterControlPosition(StrToWzID("B018"), kControl_Button_B018); RegisterControlPosition(StrToWzID("B019"), kControl_Button_B019); RegisterControlPosition(StrToWzID("B020"), kControl_Button_B020); RegisterControlPosition(StrToWzID("B021"), kControl_Button_B021); RegisterControlPosition(StrToWzID("B022"), kControl_Button_B022); RegisterControlPosition(StrToWzID("B023"), kControl_Button_B023); RegisterControlPosition(StrToWzID("B024"), kControl_Button_B024); RegisterControlPosition(StrToWzID("B025"), kControl_Button_B025); RegisterControlPosition(StrToWzID("B026"), kControl_Button_B026); RegisterControlPosition(StrToWzID("B027"), kControl_Button_B027); RegisterControlPosition(StrToWzID("B029"), kControl_Button_B029); RegisterControlPosition(StrToWzID("B030"), kControl_Button_B030); RegisterControlPosition(StrToWzID("B005"), kControl_Button_B005); RegisterControlPosition(StrToWzID("T009"), kControl_Text_T009); RegisterControlPosition(StrToWzID("S000"), kControl_Text_S000); RegisterControlPosition(StrToWzID("E000"), kControl_Edit_E000); RegisterControlPosition(StrToWzID("P033"), DIALOG_LOCK_PICTURE_P033); RegisterControlPosition(StrToWzID("P032"), DIALOG_LOCK_PICTURE_P032); RegisterControlPosition(StrToWzID("P034"), DIALOG_LOCK_PICTURE_P034); CControlWZ* button_control = NULL; for (POSTYPE position = kControl_CheckBT_C000; position < (kControl_CheckBT_C004 + 1); ++position) { button_control = GetControlWZ_byPosition(position); if (button_control == NULL) { continue; } button_control->EnableWindowWZ(false); } button_control = GetControlWZ_byPosition(kControl_Button_B000); if (button_control != NULL) { button_control->ShowWindowWZ(WZ_HIDE); } button_control = GetControlWZ_byPosition(kControl_Button_B006); if (button_control != NULL) { button_control->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage1= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P033); if(LockImage1) { LockImage1->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage2= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P032); if(LockImage2) { LockImage2->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage3= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P034); if(LockImage3) { LockImage3->ShowWindowWZ(WZ_HIDE); } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::FlushUnitDraw() { if (item_unit_renderer_ == NULL) { return; } for (int slot_index = 0; slot_index < GetMaxSlotNum(); ++slot_index) { if (IsEmpty(slot_index) == FALSE) { DeleteSlot(slot_index, NULL); } } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::SendWareHouseStart() { if (IsVisible() == TRUE) { // â°í°¡ ¿­¸° »óÅÂÀÔ´Ï´Ù. TCHAR message[INTERFACE_STRING_LENGTH]; g_InterfaceManager.GetInterfaceString(eST_WAREHOUSE_ALREADY_OPEN, message, INTERFACE_STRING_LENGTH); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, message); return; } MSG_CG_GUILD_WAREHOUSE_OPEN_SYN send_packek; send_packek.m_GuildIndex = GuildSystem::GetGuildSystemData().GetGuildInfo().m_GuildGuid; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_packek, sizeof(send_packek)); GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT, _T("SEND_CG_GUILD_WAREHOUSE_OPEN_SYN")); } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::SendWareHouseEnd() { STLX_SET::iterator end_itr = control_flag().end(); if (control_flag().find(kUseStart) == end_itr) { return; } if (control_flag().find(kUseEnd) != end_itr) { return; } control_flag().insert(kUseEnd); // â°í¸¦ ¿­°í Á¤º¸¸¦ ¹Þ¾Æ¿Â »óŶó¸é MSG_CG_GUILD_WAREHOUSE_CLOSE_SYN send_packek; send_packek.m_GuildIndex = GuildSystem::GetGuildSystemData().GetGuildInfo().m_GuildGuid; BOOL return_value = GlobalFunc::SendPacket(CI_GAMESERVERIDX, &send_packek, sizeof(send_packek)); if (return_value == TRUE) { GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT, _T("SEND_CG_GUILD_WAREHOUSE_CLOSE_SYN")); } else { GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT, _T("SEND_CG_GUILD_WAREHOUSE_CLOSE_SYN ¸øº¸³Â´Ù.")); } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::SendWareHouseMoney(BYTE money_type) { STLX_SET::iterator end_itr = control_flag().end(); if (control_flag().find(kSavingMoney) != end_itr) { return; } MSG_CG_GUILD_WAREHOUSE_MONEY_SYN money_packet; money_packet.m_byType = money_type; money_packet.m_Money = money(); control_flag().insert(kSavingMoney); GlobalFunc::SendPacket(CI_GAMESERVERIDX, &money_packet, sizeof(money_packet)); } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::InitRenderer() { // Àӽà if (item_unit_renderer_ != NULL) { SAFE_RELEASENDELETE(item_unit_renderer_); } item_unit_renderer_ = new ItemUnitRenderer; item_unit_renderer_->Init(GetDrawBase(), GetMaxSlotNum()); } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::Release() { FlushUnitDraw(); SAFE_RELEASENDELETE(item_unit_renderer_); } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::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 uiGuildWareHouse::OnLButtonClick(SI_MESSAGE* message) { bool result = true; DWORD control_position = GetControlPosition_byID(message->dwCtrlID); switch (control_position) { case kControl_CheckBT_C001: case kControl_CheckBT_C002: case kControl_CheckBT_C003: case kControl_CheckBT_C000: case kControl_CheckBT_C004: { // ÅÇ ¹öư if (CheckTab(control_position - kControl_CheckBT_C001) == true) { set_current_tab(control_position - kControl_CheckBT_C001); ReFreshRenderSlot(); } } break; case kControl_Button_B001: case kControl_Button_B002: case kControl_Button_B003: case kControl_Button_B004: case kControl_Button_B007: case kControl_Button_B008: case kControl_Button_B009: case kControl_Button_B010: case kControl_Button_B011: case kControl_Button_B012: case kControl_Button_B013: case kControl_Button_B014: case kControl_Button_B015: case kControl_Button_B016: case kControl_Button_B017: case kControl_Button_B018: case kControl_Button_B019: case kControl_Button_B020: case kControl_Button_B021: case kControl_Button_B022: case kControl_Button_B023: case kControl_Button_B024: case kControl_Button_B025: case kControl_Button_B026: case kControl_Button_B027: { // ¾ÆÀÌÅÛ½½·Ô CControlWZ* slot_control = GetControlWZ(message->dwCtrlID); if (slot_control != NULL) { POSTYPE slot_position = GetRealSlotPos(static_cast(control_position)); RECT slot_rect = slot_control->GetSizeRect(); MouseHandler::Instance()->ItemTransaction(SI_GUILDWAREHOUSE, slot_position, &slot_rect); } } break; case kControl_CheckBT_C006: { // ¾ÆÀÌÅÛ ÀÔ°í MouseHandler::Instance()->SetMouseState(MouseHandler::GUILD_DEPOSIT); // ÀÔ°íÇÒ ¾ÆÀÌÅÛÀ» ¼±ÅÃÇØ ÁÖ¼¼¿ä. GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(eST_TAKE_OUT_WAREHOUSE_ASK)); g_KeyQueueManager.DeleteMsg(eDoType_Guild_WareHouse); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_Guild_WareHouse; msg.wParam = uiGuildWareHouse::kDialog_ID; msg.DoSomething = uiGuildWareHouse::ResetMouseState; g_KeyQueueManager.PushBack(msg); } break; case kControl_CheckBT_C005: { // ¾ÆÀÌÅÛ Ãâ°í MouseHandler::Instance()->SetMouseState(MouseHandler::GUILD_WITHDRAW); // Ãâ°íÇÒ ¾ÆÀÌÅÛÀ» ¼±ÅÃÇØ ÁÖ¼¼¿ä. GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(eST_WAREHOUSING_OF_GOOD_ASK)); g_KeyQueueManager.DeleteMsg(eDoType_Guild_WareHouse); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_Guild_WareHouse; msg.wParam = uiGuildWareHouse::kDialog_ID; msg.DoSomething = uiGuildWareHouse::ResetMouseState; g_KeyQueueManager.PushBack(msg); } break; case kControl_Button_B029: { // ÇÏÀÓ ÀÔ±Ý if (CheckInputMoney(MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::PUTMONEY) == true) { #ifdef _NA_008678_20160203_ADD_HEIM_TRADINGVOLUME_NOTIFICATION_OPTION if (GlobalFunc::HeimTradingvolumeCheck(money())) { uiSystemMan* ui_system_manager_ptr = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM); if (ui_system_manager_ptr) { ui_system_manager_ptr->Sys_SystemHeimTradingvolumeGuildWareHouse(GetDialogKey(), this, money()); } } else { SendWareHouseMoney(MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::PUTMONEY); } #else SendWareHouseMoney(MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::PUTMONEY); #endif // _NA_008678_20160203_ADD_HEIM_TRADINGVOLUME_NOTIFICATION_OPTION } } break; case kControl_Button_B030: { // ÇÏÀÓ Ãâ±Ý if (CheckInputMoney(MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::GETMONEY) == true) { SendWareHouseMoney(MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::GETMONEY); } } break; case kControl_Button_B999: case kControl_Button_B005: { // ´Ý±â SendWareHouseEnd(); } break; default: { CCtrlDxIMEEditBox* money_edit = static_cast(GetControlWZ_byPosition(kControl_Edit_E000)); if (money_edit != NULL) { if (IsOverControl(money_edit) == true) { money_edit->ShowWindowWZ(WZ_SHOW); } } } break; } return true; } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::OnShowWindow(BOOL val) { if (val) { InitMoney(); g_InterfaceManager.ShowWindow(InterfaceManager::DIALOG_SHOP, FALSE); g_InterfaceManager.ShowWindow(InterfaceManager::DIALOG_EQUIP, TRUE); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_Guild_WareHouse; msg.wParam = uiGuildWareHouse::kDialog_ID; msg.DoSomething = GlobalFunc::DoGuildWareHouse; g_KeyQueueManager.PushBack(msg); CCtrlPictureWZ* LockImage1= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P033); if(LockImage1) { LockImage1->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage2= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P032); if(LockImage2) { LockImage2->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage3= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P034); if(LockImage3) { LockImage3->ShowWindowWZ(WZ_HIDE); } Render_ui_Draw_List_ = false; } else { g_InterfaceManager.ShowWindow(InterfaceManager::DIALOG_EQUIP, FALSE); if (control_flag().find(kUseStart) != control_flag().end()) { SendWareHouseEnd(); } control_flag().clear(); g_KeyQueueManager.DeleteMsg(eDoType_Guild_WareHouse); MouseHandler::Instance()->RemoveMouseState(MouseHandler::GUILD_WITHDRAW); MouseHandler::Instance()->RemoveMouseState(MouseHandler::GUILD_DEPOSIT); } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::NetworkProc(MSG_BASE* recv_packet) { if(recv_packet->m_byCategory == CG_GUILD) { switch (recv_packet->m_byProtocol) { case CG_GUILD_WAREHOUSE_OPEN_ACK: { MSG_CG_GUILD_WAREHOUSE_OPEN_ACK* warehouse_packet = (MSG_CG_GUILD_WAREHOUSE_OPEN_ACK*)recv_packet; ShowInterfaceWithSound(TRUE); FlushUnitDraw(); BitStream bitstream(warehouse_packet->m_BitStreamBuffer, warehouse_packet->m_Size, FALSE); SCItemSlotContainer::Serialize(bitstream, eSLOT_SERIALIZE_CLIENT_SAVE); //2·¹º§°ú 3·¹º§¿¡¼­ÀÇ ÃÖ´ë Åǰì¼ö set_max_tab(warehouse_packet->m_SlotTabNum); set_balance(warehouse_packet->m_WarehouseMoney); set_current_tab(0); ReFreshRenderSlot(); control_flag().insert(kUseStart); } break; case CG_GUILD_WAREHOUSE_OPEN_NAK: { MSG_CG_GUILD_WAREHOUSE_OPEN_NAK* warehouse_packet = (MSG_CG_GUILD_WAREHOUSE_OPEN_NAK*)recv_packet; GuildSystem::Function::ProcessErrorCode(warehouse_packet->m_bErrorCode); ShowInterface(FALSE); control_flag().erase(kUseStart); } break; case CG_GUILD_WAREHOUSE_CLOSE_ACK: { // ¼º°øÀûÀ¸·Î â°í¸¦ ³¡³Â´Ù. ShowInterfaceWithSound(FALSE); #if defined (_DEBUG) GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT,_T("¼º°øÀûÀ¸·Î â°í¸¦ ÀúÀåÇÏ¿´½À´Ï´Ù.")); #endif control_flag().erase(kUseStart); control_flag().erase(kUseEnd); } break; case CG_GUILD_WAREHOUSE_CLOSE_NAK: { MSG_CG_GUILD_WAREHOUSE_CLOSE_NAK* warehouse_packet = (MSG_CG_GUILD_WAREHOUSE_CLOSE_NAK*)recv_packet; #if defined (_DEBUG) GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT,_T("ƯÁ¤ÀÌÀ¯·Î â°í Á¤º¸¸¦ ÀúÀåÇÏÁö ¸ø ÇÏ¿´½À´Ï´Ù.")); #endif ShowInterfaceWithSound(FALSE); GuildSystem::Function::ProcessErrorCode(warehouse_packet->m_bErrorCode); control_flag().erase(kUseStart); control_flag().erase(kUseEnd); } break; case CG_GUILD_WAREHOUSE_MONEY_ACK: { MSG_CG_GUILD_WAREHOUSE_MONEY_ACK* warehouse_packet = (MSG_CG_GUILD_WAREHOUSE_MONEY_ACK*)recv_packet; if (g_pHero != NULL) { g_pHero->SetMoney(warehouse_packet->m_InventoryMoney); set_balance(warehouse_packet->m_WarehouseMoney); InitMoney(); control_flag().erase(kSavingMoney); } } break; case CG_GUILD_WAREHOUSE_MONEY_NAK: { MSG_CG_GUILD_WAREHOUSE_MONEY_NAK* warehouse_packet = (MSG_CG_GUILD_WAREHOUSE_MONEY_NAK*)recv_packet; control_flag().erase(kSavingMoney); GuildSystem::Function::ProcessErrorCode(warehouse_packet->m_dwErrorCode); } break; default: { } break; } } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::OnUpdateSolarDialog() { UpdateMouseState(); g_HeroInput.ClearPickingTarget(); item_unit_renderer_->Update(); CCtrlButtonCheckWZ* tab_button = NULL; for (POSTYPE position = kControl_CheckBT_C001; position < (kControl_CheckBT_C004 + 1); ++position) { tab_button = static_cast(GetControlWZ_byPosition(position)); if (tab_button != NULL) { if ((position - kControl_CheckBT_C001) == current_tab()) { tab_button->SetCheckState(true); } else { tab_button->SetCheckState(false); } } } TCHAR money_string[INTERFACE_STRING_LENGTH] = {'\0', }; TCHAR temp_string[INTERFACE_STRING_LENGTH] = {'\0', }; CControlWZ* money_notice = GetControlWZ_byPosition(kControl_Text_S000); CCtrlStaticWZ* balance_money = static_cast(GetControlWZ_byPosition(kControl_Text_T009)); CCtrlDxIMEEditBox* money_edit = static_cast(GetControlWZ_byPosition(kControl_Edit_E000)); if ((money_edit != NULL) && (money_notice != NULL) && (balance_money != NULL)) { NUMBERFMT number_format = {0, 0, 3, _T("."), _T(","), 1}; money_edit->SetNumberic(true); money_edit->GetTextWZ(money_string, INTERFACE_STRING_LENGTH - 1); size_t string_length = _tcslen(money_string); size_t money_index = 0; size_t temp_index = 0; for ( ; money_index < string_length; ++money_index) { if (money_string[money_index] >= '0' && money_string[money_index] <= '9') { temp_string[temp_index] = money_string[money_index]; ++temp_index; } } temp_string[temp_index] = '\0'; set_money(_ttoi64(temp_string)); ENUM_STATEWZ edit_show_state = money_edit->GetState(); if (edit_show_state == WZ_SHOW) { if (money() > 0) { ::GetNumberFormat(LOCALE_SYSTEM_DEFAULT, NULL, temp_string, &number_format, money_string, sizeof(money_string)); money_edit->SetTextWZ(money_string); } else { money_edit->SetTextWZ(""); } money_notice->ShowWindowWZ(WZ_HIDE); } else if (edit_show_state == WZ_HIDE) { money_notice->ShowWindowWZ(WZ_SHOW); } Snprintf(temp_string, INTERFACE_STRING_LENGTH - 1, "%I64u", balance()); ::GetNumberFormat(LOCALE_SYSTEM_DEFAULT, NULL, temp_string, &number_format, money_string, sizeof(money_string)); balance_money->SetTextWZ(money_string); } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::InitMoney() { set_money(0); CCtrlDxIMEEditBox* money_edit = static_cast(GetControlWZ_byPosition(kControl_Edit_E000)); if (money_edit != NULL) { money_edit->SetNumberic(true); money_edit->SetTextWZ(""); money_edit->SetLimitText(kMaxEditLength); money_edit->ShowWindowWZ(WZ_HIDE); } } //---------------------------------------------------------------------------- /** */ bool uiGuildWareHouse::CheckInputMoney(DWORD money_type) { TCHAR string[INTERFACE_STRING_LENGTH] = {'\0', }; if (money() == 0) { g_InterfaceManager.GetInterfaceString(eST_INPUT_MONEY, string); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, string); InitMoney(); return false; } if (g_pHero == NULL) { return false; } if ((money_type == MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::PUTMONEY) && (money() > g_pHero->GetMoney())) { g_InterfaceManager.GetInterfaceString(eST_NOT_ENOUGH_MONEY, string); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, string); return false; } else if ((money_type == MSG_CG_GUILD_WAREHOUSE_MONEY_SYN::GETMONEY) && (money() > balance())) { g_InterfaceManager.GetInterfaceString(eST_NOT_ENOUGH_MONEY, string); GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, string); return false; } return true; } //---------------------------------------------------------------------------- /** */ bool uiGuildWareHouse::CheckTab(int select_tab) { bool check_value = true; //·¹º§ ´Ù¿îµÇ¾îµµ ²¨³¾ ¼ö ÀÖµµ·Ï Ç®¾î´Þ¶ó´Â ¿äû¿¡ ÀÇÇØ¼­ ÇØÁ¦ if (select_tab > max_tab()) { CCtrlPictureWZ* LockImage1= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P033); if(LockImage1) { LockImage1->ShowWindowWZ(WZ_SHOW); LockImage1->SetDiscardMessage(true); } CCtrlPictureWZ* LockImage2= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P032); if(LockImage2) { LockImage2->ShowWindowWZ(WZ_SHOW); LockImage2->SetDiscardMessage(true); } CCtrlPictureWZ* LockImage3= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P034); if(LockImage3) { LockImage3->ShowWindowWZ(WZ_SHOW); LockImage3->SetDiscardMessage(true); } } else { CCtrlPictureWZ* LockImage1= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P033); if(LockImage1) { LockImage1->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage2= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P032); if(LockImage2) { LockImage2->ShowWindowWZ(WZ_HIDE); } CCtrlPictureWZ* LockImage3= (CCtrlPictureWZ*)GetControlWZ_byPosition(DIALOG_LOCK_PICTURE_P034); if(LockImage3) { LockImage3->ShowWindowWZ(WZ_HIDE); } } return check_value; } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::OnRenderSolarDialog() { if (item_unit_renderer_ != NULL) { item_unit_renderer_->Render(); } uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP); if (tooltip_manager) { int iMouseX = Mouse::Instance()->GetMouseX(); int iMouseY = Mouse::Instance()->GetMouseY(); POSTYPE slot_pos = kControl_Button_B001; for( ; slot_pos <= kControl_Button_B027; ++slot_pos) { CControlWZ* ctrl_ptr = GetControlWZ_byPosition(slot_pos); if (ctrl_ptr == NULL) { continue; } if (ctrl_ptr->GetState() == WZ_HIDE) { continue; } RECT rc = ctrl_ptr->GetSizeRect(); if ((rc.left <= iMouseX) && (rc.right >= iMouseX) && (rc.top <= iMouseY) && (rc.bottom >= iMouseY)) { SCSlot& item_slot = GetSlot(static_cast(slot_pos + (current_tab() * kMaxItemSlot))); tooltip_manager->RegisterTooltipItem(&item_slot, FALSE); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } } } } //---------------------------------------------------------------------------- /** */ POSTYPE uiGuildWareHouse::GetRealSlotPos(POSTYPE slot_position) { return slot_position + (current_tab() * kMaxItemSlot); } //---------------------------------------------------------------------------- /** */ POSTYPE uiGuildWareHouse::GetRelativeSlotPos(POSTYPE slot_position) { return slot_position % kMaxItemSlot; } //---------------------------------------------------------------------------- /** */ RC::eSLOT_INSERT_RESULT uiGuildWareHouse::InsertSlot(POSTYPE slot_position, SCSlot& item_slot) { /// ½½·Ô¿¡ ³ÖÀ½ RC::eSLOT_INSERT_RESULT insert_result = SCSlotContainer::InsertSlot(slot_position, item_slot); // Ŭ¶ó¿¡¼­ µû·Î ½Ã¸®¾óÀ» ¹ß±ÞÇÑ´Ù. DBSERIAL slot_serial = g_SlotKeyGenerator.GetKey(); SCSlot& slot_ref = GetSlot(slot_position); slot_ref.SetSerial(slot_serial); /// Àκ¥Å丮 CControlWZ* solt_control = GetControlWZ_byPosition(GetRelativeSlotPos(slot_position)); RECT control_rect = solt_control->GetSizeRect(); if(item_unit_renderer_) { item_unit_renderer_->AddItemUnit( slot_ref.GetSerial(), slot_ref.GetCode(), &control_rect, &slot_ref, solt_control); } else { assert(item_unit_renderer_); } ReFreshRenderSlot(); return insert_result; } //---------------------------------------------------------------------------- /** */ BOOL uiGuildWareHouse::DeleteSlot(POSTYPE slot_position, SCSlot* item_slot) { if (IsEmpty(slot_position) == TRUE) { return FALSE; } SCItemSlot& slot_ref = (SCItemSlot&)(GetSlot(slot_position)); if(item_unit_renderer_) { item_unit_renderer_->RemoveItemUnit(slot_ref.GetSerial()); } else { assert(item_unit_renderer_); } g_SlotKeyGenerator.Restore(static_cast(slot_ref.GetSerial())); SCSlotContainer::DeleteSlot(slot_position, item_slot); return TRUE; } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::OnInsert(SCSlot& IN item_slot) { ItemManager::Instance()->AddUpdateItemSlot(&item_slot); } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::OnDelete(SCSlot& IN item_slot) { ItemManager::Instance()->RemoveUpdateItemSlot(&item_slot); } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::ReFreshRenderSlot() { if (IsVisibleWindow() == FALSE) { return; } if (item_unit_renderer_ == NULL) { return; } ItemUnitRenderer::RenderUnit* render_unit = NULL; RECT control_rect; CControlWZ* slot_control = NULL; int show_slot_index = current_tab() * kMaxItemSlot; for (int slot_index = 0; slot_index < GetMaxSlotNum(); ++slot_index) { SCSlot& item_slot = SCSlotContainer::GetSlot(slot_index); if (item_slot.GetSerial() > 0) { render_unit = item_unit_renderer_->GetItemUnit(item_slot.GetSerial()); if (render_unit == NULL) { slot_control = GetControlWZ_byPosition(GetRelativeSlotPos(slot_index)); control_rect = slot_control->GetSizeRect(); item_unit_renderer_->AddItemUnit( item_slot.GetSerial(), item_slot.GetCode(), &control_rect, &item_slot, slot_control); } if (render_unit != NULL) { if ((slot_index >= show_slot_index) && (slot_index < (show_slot_index + kMaxItemSlot)) && (MouseHandler::Instance()->GetMouseItem()->m_pRenderUnit != render_unit)) { render_unit->SetShow(TRUE); } else { render_unit->SetShow(FALSE); } } } } } //---------------------------------------------------------------------------- /** */ void uiGuildWareHouse::Serialize(POSTYPE slot_position, BitStream& bitstream, eSLOT_SERIALIZE serialize_type) { SCItemSlotContainer::Serialize(slot_position, bitstream, serialize_type); if (serialize_type == eSLOT_SERIALIZE_CLIENT_SAVE) { // Ŭ¶ó¿¡¼­ µû·Î ½Ã¸®¾óÀ» ¹ß±ÞÇÑ´Ù. DBSERIAL slot_serial = g_SlotKeyGenerator.GetKey(); SCSlot & slot_ref = GetSlot(slot_position); slot_ref.SetSerial(slot_serial); /// Àκ¥Å丮 CControlWZ* slot_control = GetControlWZ_byPosition(GetRelativeSlotPos(slot_position)); RECT control_rect = slot_control->GetSizeRect(); if(item_unit_renderer_) { item_unit_renderer_->AddItemUnit( slot_ref.GetSerial(), slot_ref.GetCode(), &control_rect, &slot_ref, slot_control); } else { assert(item_unit_renderer_); } } } void uiGuildWareHouse::UpdateMouseState() { CCtrlButtonCheckWZ* deposit_check = static_cast(GetControlWZ_byPosition(kControl_CheckBT_C006)); CCtrlButtonCheckWZ* withdraw_check = static_cast(GetControlWZ_byPosition(kControl_CheckBT_C005)); if ((deposit_check == NULL) || (withdraw_check == NULL)) { assert(deposit_check); assert(withdraw_check); } MouseHandler::MOUSE_STATE mouse_sate = MouseHandler::Instance()->GetMouseState(); if ((mouse_sate == MouseHandler::DEPOSIT) || (mouse_sate == MouseHandler::GUILD_DEPOSIT)) { // ÀÔ°í deposit_check->SetCheckState(true); withdraw_check->SetCheckState(false); } else if ((mouse_sate == MouseHandler::WITHDRAW) || (mouse_sate == MouseHandler::GUILD_WITHDRAW)) { // Ãâ°í deposit_check->SetCheckState(false); withdraw_check->SetCheckState(true); } else { deposit_check->SetCheckState(false); withdraw_check->SetCheckState(false); } } void uiGuildWareHouse::ResetMouseState(DWORD l_param, DWORD r_param) { MouseHandler::Instance()->RemoveMouseState(MouseHandler::GUILD_WITHDRAW); MouseHandler::Instance()->RemoveMouseState(MouseHandler::GUILD_DEPOSIT); g_KeyQueueManager.DeleteMsg(eDoType_Guild_WareHouse); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_Guild_WareHouse; msg.wParam = uiGuildWareHouse::kDialog_ID; msg.DoSomething = GlobalFunc::DoGuildWareHouse; g_KeyQueueManager.PushBack(msg); } #ifdef _NA_008678_20160203_ADD_HEIM_TRADINGVOLUME_NOTIFICATION_OPTION void uiGuildWareHouse::HeimTradingvolumeCancel() { InitMoney(); control_flag().erase(uiGuildWareHouse::kSavingMoney); } #endif // _NA_008678_20160203_ADD_HEIM_TRADINGVOLUME_NOTIFICATION_OPTION #endif //_NA_003923_20120130_GUILD_RENEWAL_MOD_WAREHOUSE_SLOT_NUM