#include "SunClientPrecompiledHeader.h" #ifdef _NA_003923_20120130_GUILD_RENEWAL_MOD_WAREHOUSE_SLOT_NUM #include "uiBankMan/uiBankMan.h" #include "uiBankDialog.h" #include "uiPasswordMan/uiPassWordMan.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" //---------------------------------------------------------------------------- /** */ uiBankDialog::uiBankDialog(InterfaceManager* ui_manager) :uiBase(ui_manager) { item_unit_renderer_ = NULL; } //---------------------------------------------------------------------------- /** */ uiBankDialog::~uiBankDialog(void) { } //---------------------------------------------------------------------------- /** */ void uiBankDialog::Init(CDrawBase* draw_base) { uiBase::Init(draw_base); SCItemSlotContainer::Init(MAX_WAREHOUSE_SLOT_NUM, SI_WAREHOUSE); 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("C005"), kControl_CheckBT_C005); RegisterControlPosition(StrToWzID("C006"), kControl_CheckBT_C006); RegisterControlPosition(StrToWzID("B999"), kControl_Button_B999); RegisterControlPosition(StrToWzID("B001"), kControl_Button_B001); 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("B000"), kControl_Button_B000); RegisterControlPosition(StrToWzID("B006"), kControl_Button_B006); RegisterControlPosition(StrToWzID("T009"), kControl_Text_T009); RegisterControlPosition(StrToWzID("S000"), kControl_Text_S000); RegisterControlPosition(StrToWzID("E000"), kControl_Edit_E000); RegisterControlPosition(StrToWzID("T999"), kControl_Text_T999); RegisterControlPosition(StrToWzID("P033"), DIALOG_LOCK_PICTURE_P033); RegisterControlPosition(StrToWzID("P032"), DIALOG_LOCK_PICTURE_P032); RegisterControlPosition(StrToWzID("P034"), DIALOG_LOCK_PICTURE_P034); 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 uiBankDialog::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 uiBankDialog::SendWareHouseStart() { uiBankMan* ui_bank_manager = static_cast(GetMan()); if (ui_bank_manager != NULL) { ui_bank_manager->Send_CG_WAREHOUSE_START_SYN(); } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::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_WAREHOUSE_END_SYN SendEndPacket; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &SendEndPacket, sizeof(SendEndPacket)); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::SendWareHouseMoney(BYTE money_type) { STLX_SET::iterator end_itr = control_flag().end(); if (control_flag().find(kSavingMoney) != end_itr) { return; } MSG_CG_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 uiBankDialog::InitContainer() { InitRenderer(); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::ReleaseContainer() { FlushUnitDraw(); SAFE_RELEASENDELETE(item_unit_renderer_); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::InitRenderer() { if (item_unit_renderer_ != NULL) { SAFE_RELEASENDELETE(item_unit_renderer_); } item_unit_renderer_ = new ItemUnitRenderer; item_unit_renderer_->Init(GetDrawBase(), GetMaxSlotNum()); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::Release() { SAFE_RELEASENDELETE(item_unit_renderer_); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::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 uiBankDialog::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: { // ÅÇ ¹öư 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_WAREHOUSE, slot_position, &slot_rect); } } break; case kControl_CheckBT_C006: { // ¾ÆÀÌÅÛ ÀÔ°í MouseHandler::Instance()->SetMouseState(MouseHandler::DEPOSIT); // ÀÔ°íÇÒ ¾ÆÀÌÅÛÀ» ¼±ÅÃÇØ ÁÖ¼¼¿ä. GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(eST_TAKE_OUT_WAREHOUSE_ASK)); g_KeyQueueManager.DeleteMsg(eDoType_dialog_bank); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_dialog_bank; msg.wParam = IM_BANK_MANAGER::BANK_DIALOG; msg.DoSomething = uiBankDialog::ResetMouseState; g_KeyQueueManager.PushBack(msg); } break; case kControl_CheckBT_C005: { // ¾ÆÀÌÅÛ Ãâ°í MouseHandler::Instance()->SetMouseState(MouseHandler::WITHDRAW); // Ãâ°íÇÒ ¾ÆÀÌÅÛÀ» ¼±ÅÃÇØ ÁÖ¼¼¿ä. GlobalFunc::OutputMsg_Notice(eOUTPUT_MSG_CHAT, g_InterfaceManager.GetInterfaceString(eST_WAREHOUSING_OF_GOOD_ASK)); g_KeyQueueManager.DeleteMsg(eDoType_dialog_bank); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_dialog_bank; msg.wParam = IM_BANK_MANAGER::BANK_DIALOG; msg.DoSomething = uiBankDialog::ResetMouseState; g_KeyQueueManager.PushBack(msg); } break; case kControl_Button_B029: { // ÇÏÀÓ ÀÔ±Ý if (CheckInputMoney(MSG_CG_WAREHOUSE_MONEY_SYN::PUTMONEY) == true) { SendWareHouseMoney(MSG_CG_WAREHOUSE_MONEY_SYN::PUTMONEY); } } break; case kControl_Button_B030: { // ÇÏÀÓ Ãâ±Ý if (CheckInputMoney(MSG_CG_WAREHOUSE_MONEY_SYN::GETMONEY) == true) { SendWareHouseMoney(MSG_CG_WAREHOUSE_MONEY_SYN::GETMONEY); } } break; case kControl_Button_B000: { // Àá±è ¹öư // 5581 â°í¸¦ ¿­¸² »óÅ·Πº¯°æÇϽðڽÀ´Ï±î? AskPasswordLock(5581); } break; case kControl_Button_B006: { // ¿­¸² ¹öư DWORD string_code; if (GetBankLockState() == MSG_CG_WAREHOUSE_START_ACK::ENABLEnEMPTY) { // 5584 â°í º¸È£ ±â´ÉÀ» »ç¿ëÇϽðڽÀ´Ï±î? ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇÒ °æ¿ì, °ÔÀÓ Á¾·á ½Ã ÀÚµ¿ Àá±Ý »óÅ·Πº¯°æµË´Ï´Ù. string_code = 5584; } else { // 5580 â°í¸¦ Àá±Ý »óÅ·Πº¯°æÇϽðڽÀ´Ï±î? string_code = 5580; } AskPasswordLock(string_code); } 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 uiBankDialog::OnShowWindow(BOOL val) { if (val) { InitMoney(); InitLockButtonState(); g_InterfaceManager.ShowWindow(InterfaceManager::DIALOG_SHOP, FALSE); g_InterfaceManager.ShowWindow(InterfaceManager::DIALOG_EQUIP, TRUE); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType=eDoType_dialog_bank; msg.wParam=IM_BANK_MANAGER::BANK_DIALOG; msg.DoSomething=GlobalFunc::DoBank; g_KeyQueueManager.PushBack(msg); } else { g_InterfaceManager.ShowWindow(InterfaceManager::DIALOG_EQUIP, FALSE); if (control_flag().find(kUseStart) != control_flag().end()) { SendWareHouseEnd(); } control_flag().clear(); g_KeyQueueManager.DeleteMsg(eDoType_dialog_bank); MouseHandler::Instance()->RemoveMouseState(MouseHandler::WITHDRAW); MouseHandler::Instance()->RemoveMouseState(MouseHandler::DEPOSIT); } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::NetworkProc(MSG_BASE* recv_packet) { if(recv_packet->m_byCategory == CG_WAREHOUSE) { uiBankMan* bank_manager = static_cast(GetMan()); if (bank_manager != NULL) { bank_manager->ClearWaitPacket(); } switch (recv_packet->m_byProtocol) { case CG_WAREHOUSE_START_ACK: { MSG_CG_WAREHOUSE_START_ACK* warehouse_packet = (MSG_CG_WAREHOUSE_START_ACK*)recv_packet; FlushUnitDraw(); BitStream bitstream(warehouse_packet->m_BitStreamBuffer, warehouse_packet->m_Size, FALSE); SCItemSlotContainer::Serialize(bitstream, eSLOT_SERIALIZE_CLIENT_SAVE); set_balance(warehouse_packet->m_WarehouseMoney); SetBankLockState(warehouse_packet->m_byWarehouseLock); ShowInterfaceWithSound(TRUE); set_current_tab(0); ReFreshRenderSlot(); control_flag().insert(kUseStart); } break; case CG_WAREHOUSE_START_NAK: { MSG_CG_WAREHOUSE_START_NAK* warehouse_packet = (MSG_CG_WAREHOUSE_START_NAK*)recv_packet; TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; g_InterfaceManager.GetStringWarehouseError( warehouse_packet->m_dwErrorCode, message, INTERFACE_STRING_LENGTH); GlobalFunc::OutputMsg_Error(eOUTPUT_MSG_CHAT, message); ShowInterface(FALSE); control_flag().erase(kUseStart); } break; case CG_WAREHOUSE_END_ACK: { // ¼º°øÀûÀ¸·Î â°í¸¦ ³¡³Â´Ù. ShowInterfaceWithSound(FALSE); #if defined (_DEBUG) GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT,_T("¼º°øÀûÀ¸·Î â°í¸¦ ÀúÀåÇÏ¿´½À´Ï´Ù.")); #endif control_flag().erase(kUseStart); control_flag().erase(kUseEnd); } break; case CG_WAREHOUSE_END_NAK: { MSG_CG_WAREHOUSE_END_NAK* warehouse_packet = (MSG_CG_WAREHOUSE_END_NAK*)recv_packet; #if defined (_DEBUG) GlobalFunc::DebugOutputMsg(eOUTPUT_MSG_CHAT,_T("ƯÁ¤ÀÌÀ¯·Î â°í Á¤º¸¸¦ ÀúÀåÇÏÁö ¸ø ÇÏ¿´½À´Ï´Ù.")); #endif TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; BOOL result = g_InterfaceManager.GetStringWarehouseError( warehouse_packet->m_dwErrorCode, message, INTERFACE_STRING_LENGTH); if (result == TRUE) { GlobalFunc::OutputMsg_Error(eOUTPUT_MSG_CHAT, message); } else { ItemManager::Instance()->NoticeReasonItemErrorCode(warehouse_packet->m_dwErrorCode); } control_flag().erase(kUseStart); control_flag().erase(kUseEnd); } break; case CG_WAREHOUSE_MONEY_ACK: { MSG_CG_WAREHOUSE_MONEY_ACK* warehouse_packet = (MSG_CG_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_WAREHOUSE_MONEY_NAK: { MSG_CG_WAREHOUSE_MONEY_NAK* warehouse_packet = (MSG_CG_WAREHOUSE_MONEY_NAK*)recv_packet; control_flag().erase(kSavingMoney); TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; BOOL result = g_InterfaceManager.GetStringWarehouseError( warehouse_packet->m_dwErrorCode, message, INTERFACE_STRING_LENGTH); if (result == TRUE) { GlobalFunc::OutputMsg_Error(eOUTPUT_MSG_CHAT, message); } else { ItemManager::Instance()->NoticeReasonItemErrorCode(warehouse_packet->m_dwErrorCode); } } break; case CG_WAREHOUSE_PWD_SETTING_ACK: case CG_WAREHOUSE_PWD_SETTING_NAK: case CG_WAREHOUSE_PWD_LOCKING_ACK: case CG_WAREHOUSE_PWD_LOCKING_NAK: case CG_WAREHOUSE_PWD_CHECK_ACK: case CG_WAREHOUSE_PWD_CHECK_NAK: { NetworkProc_Password(recv_packet); } break; default: { } break; } } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::NetworkProc_Password(MSG_BASE* recv_packet) { if(recv_packet->m_byCategory != CG_WAREHOUSE) { return; } uiBankMan* ui_bank_manager = static_cast(GetMan()); if (ui_bank_manager == NULL) { return; } switch (recv_packet->m_byProtocol) { case CG_WAREHOUSE_PWD_LOCKING_ACK: { MSG_CG_WAREHOUSE_PWD_LOCKING_ACK* warehouse_pwd_packet = (MSG_CG_WAREHOUSE_PWD_LOCKING_ACK*)recv_packet; TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; switch (warehouse_pwd_packet->m_byRetCode) { case MSG_CG_WAREHOUSE_PWD_LOCKING_ACK::RET_SUCCESS_LOCKED: { SetBankLockState(MSG_CG_WAREHOUSE_START_ACK::DISABLEDnEXIST); InitLockButtonState(); uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { // â°í°¡ Àá±Ý »óÅ·Πº¯°æµÇ¾ú½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5573, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, NULL); } ui_bank_manager->ClearPassword(); } break; case MSG_CG_WAREHOUSE_PWD_LOCKING_ACK::RET_NEED_PWD_FOR_LOCKING: { ui_bank_manager->Send_CG_WAREHOUSE_PWD_SETTING_SYN(MSG_CG_WAREHOUSE_PWD_SETTING_SYN::SYNC_FIRST); } break; case MSG_CG_WAREHOUSE_PWD_LOCKING_ACK::RET_NEED_PWD_FOR_UNLOCKING: { ui_bank_manager->Send_CG_WAREHOUSE_PWD_CHECK_SYN(MSG_CG_WAREHOUSE_PWD_CHECK_SYN::SYNC_FIRST); } break; } } break; case CG_WAREHOUSE_PWD_LOCKING_NAK: { MSG_CG_WAREHOUSE_PWD_LOCKING_NAK* warehouse_pwd_packet = (MSG_CG_WAREHOUSE_PWD_LOCKING_NAK*)recv_packet; TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; ui_bank_manager->ClearPassword(); g_InterfaceManager.GetStringWarehouseError(warehouse_pwd_packet->m_byErrCode, message, INTERFACE_STRING_LENGTH); GlobalFunc::OutputMsg_Error(eOUTPUT_MSG_CHAT, message); } break; case CG_WAREHOUSE_PWD_SETTING_ACK: { TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; MSG_CG_WAREHOUSE_PWD_SETTING_ACK* warehouse_pwd_packet = (MSG_CG_WAREHOUSE_PWD_SETTING_ACK*)recv_packet; switch(warehouse_pwd_packet->m_byRetCode) { case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_FAIL: case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_CANCELED: ui_bank_manager->ClearPassword(); break; case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_SUCCESS: { ui_bank_manager->ClearPassword(); uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { // ºñ¹Ð¹øÈ£°¡ ¼³Á¤µÇ¾ú½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5556, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, NULL); } SetBankLockState(MSG_CG_WAREHOUSE_START_ACK::ENABLEnEXIST); InitLockButtonState(); } break; case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_NEED_SSN: { // Áֹεî·Ï¹øÈ£ µÞÀÚ¸® ÀÔ·Â SetPasswordDialog(5579, eBankDlgState_Setting_SSN); } break; case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_INVALID_SSN: { uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { ui_bank_manager->SetPasswordState(eBankDlgState_Setting_SSN); // Áֹεî·Ï¹øÈ£°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5845, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, GlobalFunc::_fn_uiBankPassword_invalidSSN); } } break; case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_NEED_PWD: { // ºñ¹Ð¹øÈ£¸¦ ¼³Á¤ÇØÁÖ¼¼¿ä SetPasswordDialog(5578, eBankDlgState_Setting_PasswordCmp); } break; case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_INVALID_PWD: { uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { ui_bank_manager->SetPasswordState(eBankDlgState_Lock); // ºñ¹Ð¹øÈ£°¡ Ʋ·È½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5555, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, GlobalFunc::_fn_uiBankPassword_invalidPassword); } } break; case MSG_CG_WAREHOUSE_PWD_SETTING_ACK::RET_SUCCESS_CLEAR: { SetBankLockState(MSG_CG_WAREHOUSE_START_ACK::ENABLEnEMPTY); InitLockButtonState(); uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { // Àá±Ý ±â´ÉÀ» [»ç¿ë ¾È ÇÔ]À¸·Î º¯°æÇÏ¿´½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5577, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, NULL); } } break; } } break; case CG_WAREHOUSE_PWD_SETTING_NAK: { ui_bank_manager->ClearPassword(); } break; case CG_WAREHOUSE_PWD_CHECK_ACK: { TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; MSG_CG_WAREHOUSE_PWD_CHECK_ACK* warehouse_pwd_packet = (MSG_CG_WAREHOUSE_PWD_CHECK_ACK*)recv_packet; ui_bank_manager->ClearPassword(); switch(warehouse_pwd_packet->m_byRetCode) { case MSG_CG_WAREHOUSE_PWD_CHECK_ACK::RET_SUCCESS: { SetBankLockState(MSG_CG_WAREHOUSE_START_ACK::ENABLEnEXIST); InitLockButtonState(); uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { // â°í°¡ ¿­¸² »óÅ·Πº¯°æµÇ¾ú½À´Ï´Ù g_InterfaceManager.GetInterfaceString(5575, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, NULL); } } break; case MSG_CG_WAREHOUSE_PWD_CHECK_ACK::RET_INVALID_PWD: { uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { ui_bank_manager->SetPasswordState(eBankDlgState_Check_Unlock); // ºñ¹Ð¹øÈ£°¡ Ʋ·È½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5555, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, GlobalFunc::_fn_uiBankPassword_invalidPassword); } } break; case MSG_CG_WAREHOUSE_PWD_CHECK_ACK::RET_NEED_PWD: { // ºñ¹Ð¹øÈ£¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä SetPasswordDialog(5551, eBankDlgState_Check_Unlock); } break; case MSG_CG_WAREHOUSE_PWD_CHECK_ACK::RET_NEED_SSN: { // Áֹεî·Ï¹øÈ£ µÞÀÚ¸® ÀÔ·Â SetPasswordDialog(5579, eBankDlgState_Check_Clear); } break; case MSG_CG_WAREHOUSE_PWD_CHECK_ACK::RET_INVALID_SSN: { uiSystemMan* pSystemMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM)); if(pSystemMan) { ui_bank_manager->SetPasswordState(eBankDlgState_Check_Clear); // Áֹεî·Ï¹øÈ£°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5845, message, INTERFACE_STRING_LENGTH); pSystemMan->Sys_Verify(message, GlobalFunc::_fn_uiBankPassword_invalidSSN); } } break; } } break; } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::SetBankLockState(int lock_state) { uiBankMan* ui_bank_manager = static_cast(GetMan()); if (ui_bank_manager != NULL) { ui_bank_manager->SetBankLockState(lock_state); } } //---------------------------------------------------------------------------- /** */ int uiBankDialog::GetBankLockState() { int lock_state = MSG_CG_WAREHOUSE_START_ACK::ENABLEnEMPTY; uiBankMan* ui_bank_manager = static_cast(GetMan()); if (ui_bank_manager != NULL) { lock_state = ui_bank_manager->GetBankLockState(); } return lock_state; } //---------------------------------------------------------------------------- /** */ void uiBankDialog::AskPasswordLock(DWORD string_code) { uiSystemMan* ui_system_manager = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM); if (ui_system_manager != NULL) { TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; g_InterfaceManager.GetInterfaceString(string_code, message, INTERFACE_STRING_LENGTH); ui_system_manager->Sys_Confirm(message, GlobalFunc::_fn_uiBankPasswordLockingSyn); } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::SetPasswordDialog(int string_code, int password_state) { uiBankMan* ui_bank_manager = static_cast(GetMan()); if (ui_bank_manager == NULL) { return; } int count_min = 0; int count_max = MAX_SSN_COUNT; ui_bank_manager->SetPasswordState(password_state); if(password_state == eBankDlgState_Setting_SSN || password_state == eBankDlgState_Check_Clear) { count_min = 0; count_max = MAX_SSN_COUNT; } else { count_min = 4; count_max = MAX_WAREHOUSE_INVENTORY_PWD_LENGTH; } BOOL show_change_button = TRUE; show_change_button = (ui_bank_manager->GetBankLockState() & MSG_CG_WAREHOUSE_START_ACK::DISABLED); uiPasswordMan* ui_password_manager = GET_DIALOG_MANAGER(uiPasswordMan, UIMAN_PASSWORD); assert(ui_password_manager); if (ui_password_manager != NULL) { ui_password_manager->PasswordDlg(string_code, GlobalFunc::_fn_uiBankPassword, count_min, count_max, show_change_button, ePassWordCalledState_WareHouse); } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::InitLockButtonState() { CControlWZ* lock_button = GetControlWZ_byPosition(kControl_Button_B000); CControlWZ* unlock_button = GetControlWZ_byPosition(kControl_Button_B006); #ifdef _GS_GSP_REMOVE_LOCKBTN_ //¶ô¹öư ¾ø´Ù if (lock_button != NULL) { lock_button->ShowWindowWZ(WZ_HIDE); } if (unlock_button != NULL) { unlock_button->ShowWindowWZ(WZ_HIDE); } #else if( GetBankLockState() == MSG_CG_WAREHOUSE_START_ACK::DISABLEDnEXIST ) { if (lock_button != NULL) { lock_button->ShowWindowWZ(WZ_SHOW); } if (unlock_button != NULL) { unlock_button->ShowWindowWZ(WZ_HIDE); } } else { if (lock_button != NULL) { lock_button->ShowWindowWZ(WZ_HIDE); } if (unlock_button != NULL) { unlock_button->ShowWindowWZ(WZ_SHOW); } } #endif//_GS_GSP_REMOVE_LOCKBTN_ CCtrlStaticWZ* title_text = static_cast(GetControlWZ_byPosition(kControl_Text_T999)); if (title_text != NULL) { TCHAR message[INTERFACE_STRING_LENGTH] = {'\0', }; if (GetBankLockState() == MSG_CG_WAREHOUSE_START_ACK::DISABLEDnEXIST) { // â°í(Àá±è) g_InterfaceManager.GetInterfaceString(1189, message, INTERFACE_STRING_LENGTH); } else { // â°í(¿­¸²) g_InterfaceManager.GetInterfaceString(1190, message, INTERFACE_STRING_LENGTH); } GlobalFunc::SetCaption(title_text, message); } } //---------------------------------------------------------------------------- /** */ void uiBankDialog::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 uiBankDialog::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 uiBankDialog::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_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_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; } //---------------------------------------------------------------------------- /** */ void uiBankDialog::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_B006; ++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)) { if (slot_pos == kControl_Button_B000) { // Àá±è tooltip_manager->RegisterTooltipForWareNInventoryLock(5569); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } else if (slot_pos == kControl_Button_B006) { tooltip_manager->RegisterTooltipForWareNInventoryLock(5570); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } else { SCSlot& item_slot = GetSlot(static_cast(slot_pos + (current_tab() * kMaxItemSlot))); tooltip_manager->RegisterTooltipItem(&item_slot, FALSE); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } } } } } //---------------------------------------------------------------------------- /** */ POSTYPE uiBankDialog::GetRealSlotPos(POSTYPE slot_position) { return slot_position + (current_tab() * kMaxItemSlot); } //---------------------------------------------------------------------------- /** */ POSTYPE uiBankDialog::GetRelativeSlotPos(POSTYPE slot_position) { return slot_position % kMaxItemSlot; } //---------------------------------------------------------------------------- /** */ RC::eSLOT_INSERT_RESULT uiBankDialog::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 uiBankDialog::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 uiBankDialog::OnInsert(SCSlot& IN item_slot) { ItemManager::Instance()->AddUpdateItemSlot(&item_slot); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::OnDelete(SCSlot& IN item_slot) { ItemManager::Instance()->RemoveUpdateItemSlot(&item_slot); } //---------------------------------------------------------------------------- /** */ void uiBankDialog::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 uiBankDialog::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 uiBankDialog::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 uiBankDialog::ResetMouseState(DWORD l_param, DWORD r_param) { MouseHandler::Instance()->RemoveMouseState(MouseHandler::WITHDRAW); MouseHandler::Instance()->RemoveMouseState(MouseHandler::DEPOSIT); g_KeyQueueManager.DeleteMsg(eDoType_dialog_bank); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_dialog_bank; msg.wParam = IM_BANK_MANAGER::BANK_DIALOG; msg.DoSomething = GlobalFunc::DoBank; g_KeyQueueManager.PushBack(msg); } #endif //_NA_003923_20120130_GUILD_RENEWAL_MOD_WAREHOUSE_SLOT_NUM