// HumanVault.cpp: implementation of the CHumanVault class. // ////////////////////////////////////////////////////////////////////// #include "ClientMain.h" #include "WinInput.h" #include "HumanVault.h" #include "GUITextEdit.h" #include "GUIMessageBox.h" #include "GUIMessageBoxManager.h" #include "GUITooltipItem.h" #include "Item\ItemMgr.h" #include "Item\ItemFactory.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CHumanVault::CHumanVault() { } CHumanVault::~CHumanVault() { } BOOL CHumanVault::Init(unsigned short x, unsigned short y) { CSprite *lpSprite; lpSprite = new CSprite; lpSprite->Create(x, y, 0, 0, 222, 256, g_ClientMain.m_lpInterface->m_lstTexture[23]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; lpSprite->Create(x, y + 256, 0, 0, 222, 224, g_ClientMain.m_lpInterface->m_lstTexture[43]); m_lstSprite.push_back(lpSprite); // ºñ¹ø ÀÎÁõâ lpSprite = new CSprite; lpSprite->Create(265, 127, 0, 0, 222, 175, g_ClientMain.m_lpInterface->m_lstTexture[46]); m_lstSprite.push_back(lpSprite); // ºñ¹ø º¯°æ â lpSprite = new CSprite; lpSprite->Create(265, 127, 0, 0, 222, 175, g_ClientMain.m_lpInterface->m_lstTexture[47]); m_lstSprite.push_back(lpSprite); // 4 XÇ¥½Ã lpSprite = new CSprite; lpSprite->Create(0, 0, 17, 177, 35, 194, g_ClientMain.m_lpInterface->m_lstTexture[16]); m_lstSprite.push_back(lpSprite); // 5 lpSprite = new CSprite; // ¹°Ç°¼Ò lpSprite->Create(x, y + 7, 0, 0, 222, 31, g_ClientMain.m_lpInterface->m_lstTexture[44]); m_lstSprite.push_back(lpSprite); // 6 lpSprite = new CSprite; // º¸°ü¼Ò ÅÇ #1 lpSprite->Create(x, y + 51, 0, 124, 222, 155, g_ClientMain.m_lpInterface->m_lstTexture[45]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // º¸°ü¼Ò ÅÇ #2 lpSprite->Create(x, y + 51, 0, 155, 222, 186, g_ClientMain.m_lpInterface->m_lstTexture[45]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // º¸°ü¼Ò ÅÇ #3 lpSprite->Create(x, y + 51, 0, 186, 222, 217, g_ClientMain.m_lpInterface->m_lstTexture[45]); m_lstSprite.push_back(lpSprite); lpSprite = new CSprite; // º¸°ü¼Ò ÅÇ #4 lpSprite->Create(x, y + 51, 0, 217, 222, 248, g_ClientMain.m_lpInterface->m_lstTexture[45]); m_lstSprite.push_back(lpSprite); // 10 lpSprite = new CSprite; // »ç¿ëºÒ°¡ lpSprite->Create(0, 0, 170, 135, 219, 159, g_ClientMain.m_lpInterface->m_lstTexture[11]); m_lstSprite.push_back(lpSprite); CGUIButton *lpButton; lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(18, 441, 0, 175, 48, 201, g_ClientMain.m_lpInterface->m_lstTexture[47]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(18, 441, 48, 175, 96, 201, g_ClientMain.m_lpInterface->m_lstTexture[47]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[610]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(70, 441, 0, 201, 48, 227, g_ClientMain.m_lpInterface->m_lstTexture[47]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(70, 441, 48, 201, 96, 227, g_ClientMain.m_lpInterface->m_lstTexture[47]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[611]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(123, 441, 123, 185, 211, 211, g_ClientMain.m_lpInterface->m_lstTexture[43]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(123, 441, 0, 196, 88, 222, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[612]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); // 3 ºñ¹ø ÀÎÁõ â È®ÀÎ lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(35, 134, 114, 130, 182, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(35, 134, 182, 130, 250, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[247]); lpButton->SetMove(265, 127); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(120, 134, 114, 104, 182, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(120, 134, 182, 104, 250, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[246]); lpButton->SetMove(265, 127); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); // 5 ºñ¹ø º¯°æ â È®ÀÎ lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(35, 134, 114, 130, 182, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(35, 134, 182, 130, 250, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[247]); lpButton->SetMove(265, 127); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(120, 134, 114, 104, 182, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(120, 134, 182, 104, 250, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[246]); lpButton->SetMove(265, 127); lpButton->ShowButton(FALSE); m_ButtonManager.AddButton(lpButton); // 7 lpButton = new CGUIButton; lpButton->m_nMethod = BUTTON_SIMPLE; lpButton->m_lpNormalButton = new CSprite; lpButton->m_lpNormalButton->Create(190, 1, 0, 0, 28, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow); lpButton->m_lpClickMouseButton = new CSprite; lpButton->m_lpClickMouseButton->Create(190, 1, 28, 0, 56, 28, g_ClientMain.m_lpInterface->m_lpCommonWindow); lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[251]); lpButton->SetMove(x, y); m_ButtonManager.AddButton(lpButton); m_bShow = FALSE; m_dwWindowKind = WINDOW_FIX; m_rcWindowSize.left = x; m_rcWindowSize.top = y; m_rcWindowSize.right = x + 222; m_rcWindowSize.bottom = y + 480; m_rcMoveEdge.left = x; m_rcMoveEdge.top = y; m_rcMoveEdge.right = x + 222; m_rcMoveEdge.bottom = y + 20; InitValue(); return TRUE; } void CHumanVault::InitValue(void) { m_dwVaultTab = 0; m_dwShowVault = 0; m_cSavePass = 0; m_dwBuyTabResult = 0; m_lpSplitItem = NULL; m_dwSplitResult = 0; m_dwSplitValue = 0; m_dwVaultGoldResult = 0; m_dwInvenGoldResult = 0; m_dwGoldValue = 0; m_bLogined = FALSE; } BOOL CHumanVault::Update(BOOL &bClick, BOOL &bEdge) { if(g_DeviceInput.InRect(m_rcWindowSize.left, m_rcWindowSize.top, m_rcWindowSize.right, m_rcWindowSize.bottom)) { bEdge = TRUE; if(g_DeviceInput.GetIsLeftMouseDown() || g_DeviceInput.GetIsMiddleMouseDown() || g_DeviceInput.GetIsRightMouseDown() || g_DeviceInput.GetIsLeftMousePress() || g_DeviceInput.GetIsMiddleMousePress() || g_DeviceInput.GetIsRightMousePress() || g_DeviceInput.GetIsLeftMouseUp() || g_DeviceInput.GetIsMiddleMouseUp() || g_DeviceInput.GetIsRightMouseUp()) { bClick = TRUE; } } m_ButtonManager.Update(); m_TooltipManager.Update(); // ÀÔ±Ý if(m_dwVaultGoldResult & MB_YES) { if(g_ClientMain.m_csStatus.m_Info.Gold <= m_dwGoldValue) { m_dwGoldValue = g_ClientMain.m_csStatus.m_Info.Gold; } g_ClientMain.m_Network.m_nsNetworkState = NS_TAKEGOLD; g_ClientMain.m_Network.m_pSocket->CharTakeGold(g_ClientMain.m_dwMyChrID, ClientSocket::ItemPos_Inven, ClientSocket::ItemPos_Deposit, m_dwGoldValue); m_dwVaultGoldResult = 0; m_dwGoldValue = 0; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } else if(m_dwVaultGoldResult & MB_NO || m_dwVaultGoldResult & MB_EXIT) { m_dwVaultGoldResult = 0; m_dwGoldValue = 0; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } // Ãâ±Ý if(m_dwInvenGoldResult & MB_YES) { if(g_ClientMain.m_csStatus.m_dwDepositGold <= m_dwGoldValue) { m_dwGoldValue = g_ClientMain.m_csStatus.m_dwDepositGold; } g_ClientMain.m_Network.m_nsNetworkState = NS_TAKEGOLD; g_ClientMain.m_Network.m_pSocket->CharTakeGold(g_ClientMain.m_dwMyChrID, ClientSocket::ItemPos_Deposit, ClientSocket::ItemPos_Inven, m_dwGoldValue); m_dwInvenGoldResult = 0; m_dwGoldValue = 0; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } else if(m_dwInvenGoldResult & MB_NO || m_dwInvenGoldResult & MB_EXIT) { m_dwInvenGoldResult = 0; m_dwGoldValue = 0; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } if(m_dwBuyTabResult & MB_YES) { // »ê´Ù. ÆÐŶ Àü¼Û g_ClientMain.m_Network.m_pSocket->StoreBuyTab(g_ClientMain.m_csStatus.m_dwMaxTab); m_dwBuyTabResult = 0; return TRUE; } else if(m_dwBuyTabResult & MB_NO || m_dwBuyTabResult & MB_EXIT) { m_dwBuyTabResult = 0; return TRUE; } // ³ª´©±â if(m_dwSplitResult & MB_YES) { if(m_dwSplitValue) { if(m_dwSplitValue >= m_lpSplitItem->GetNowDurability()) { g_ClientMain.SetPickItem(m_lpSplitItem); g_ClientMain.m_csStatus.DeleteDepositItem(m_lpSplitItem); } else { g_ClientMain.m_lpPickItem = new CItemInstance; g_ClientMain.m_lpPickItem->m_lpItemBase = Item::CItemFactory::GetInstance().CreateItem(m_lpSplitItem->GetProtoTypeID()); g_ClientMain.m_lpPickItem->m_lpItemBase->MoveItem(m_lpSplitItem->m_lpItemBase->GetPos()); g_ClientMain.m_lpPickItem->SetNowDurability(m_dwSplitValue); g_ClientMain.m_lpPickItem->SetItemPos(ClientSocket::ItemPos_Deposit); g_ClientMain.m_lpPickItem->m_dwItemUID = m_lpSplitItem->m_dwItemUID; g_ClientMain.m_lpPickItem->m_lCoolDownTimeCount = m_lpSplitItem->m_lCoolDownTimeCount; // g_ClientMain.m_lpPickItem->m_lpProtoTypeInfo = g_ItemMgr.GetProtoTypeInfo(g_ClientMain.m_lpPickItem->GetProtoTypeID()); g_ClientMain.m_lpPickItem->m_lpSprite = new CSprite; g_ClientMain.m_lpPickItem->m_lpSprite->Create(0, 0, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMinX, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMinY, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMaxX, g_ClientMain.m_lpPickItem->GetItemInfo().m_SpriteData.m_nSpriteMaxY, NULL); g_ClientMain.m_lpPickItem->m_lpTooltip = new CGUITooltipItem; ((CGUITooltipItem *)g_ClientMain.m_lpPickItem->m_lpTooltip)->SetItem(g_ClientMain.m_lpPickItem); unsigned long dwSplitValue = m_lpSplitItem->GetNowDurability() - m_dwSplitValue; m_lpSplitItem->SetNowDurability(dwSplitValue); } } m_dwSplitResult = 0; m_dwSplitValue = 0; m_lpSplitItem = NULL; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } else if(m_dwSplitResult & MB_NO || m_dwSplitResult & MB_EXIT) { m_dwSplitResult = 0; m_dwSplitValue = 0; m_lpSplitItem = NULL; g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_ClientMain.SetFocus(); return TRUE; } switch(m_dwShowVault) { case 0: if(g_DeviceInput.GetIsLeftMouseDown() && !g_MessageBoxManager.GetIsExistModal()) { if(g_DeviceInput.InRect(m_rcWindowSize.left + 4, m_rcWindowSize.top + 51, m_rcWindowSize.left + 59, m_rcWindowSize.top + 82)) { if(g_ClientMain.m_csStatus.m_dwMaxTab > 0) m_dwVaultTab = 0; } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 59, m_rcWindowSize.top + 51, m_rcWindowSize.left + 111, m_rcWindowSize.top + 82)) { if(g_ClientMain.m_csStatus.m_dwMaxTab > 1) m_dwVaultTab = 1; else { unsigned long dwGold[4] = { 0, 100000, 1000000, 5000000 }; if(g_ClientMain.m_csStatus.m_Info.Gold >= dwGold[g_ClientMain.m_csStatus.m_dwMaxTab]) { char strText[MAX_PATH]; sprintf(strText, g_StringTable.m_strString[613], g_ClientMain.m_csStatus.m_dwMaxTab + 1, dwGold[g_ClientMain.m_csStatus.m_dwMaxTab]); CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(strText, MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwBuyTabResult); } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[614]); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 111, m_rcWindowSize.top + 51, m_rcWindowSize.left + 164, m_rcWindowSize.top + 82)) { if(g_ClientMain.m_csStatus.m_dwMaxTab > 2) m_dwVaultTab = 2; else { unsigned long dwGold[4] = { 0, 100000, 1000000, 5000000 }; if(g_ClientMain.m_csStatus.m_Info.Gold >= dwGold[g_ClientMain.m_csStatus.m_dwMaxTab]) { char strText[MAX_PATH]; sprintf(strText, g_StringTable.m_strString[613], g_ClientMain.m_csStatus.m_dwMaxTab + 1, dwGold[g_ClientMain.m_csStatus.m_dwMaxTab]); CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(strText, MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwBuyTabResult); } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[614]); } } } else if(g_DeviceInput.InRect(m_rcWindowSize.left + 164, m_rcWindowSize.top + 51, m_rcWindowSize.left + 217, m_rcWindowSize.top + 82)) { if(g_ClientMain.m_csStatus.m_dwMaxTab > 3) m_dwVaultTab = 3; else { unsigned long dwGold[4] = { 0, 100000, 1000000, 5000000 }; if(g_ClientMain.m_csStatus.m_Info.Gold >= dwGold[g_ClientMain.m_csStatus.m_dwMaxTab]) { char strText[MAX_PATH]; sprintf(strText, g_StringTable.m_strString[613], g_ClientMain.m_csStatus.m_dwMaxTab + 1, dwGold[g_ClientMain.m_csStatus.m_dwMaxTab]); CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(strText, MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwBuyTabResult); } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[614]); } } } } if(m_bLogined) { // ¹°°Ç ¼¿·ºÆ® if(SelectItem()) return TRUE; POINT *ptMousePos = g_DeviceInput.GetMousePosition(); unsigned long dwInvenX = (ptMousePos->x - (m_rcWindowSize.left + 9)) / 26; unsigned long dwInvenY = (ptMousePos->y - (m_rcWindowSize.top + 85)) / 26; __int64 ddItem; if(g_DeviceInput.GetIsLeftMouseDown() && g_ClientMain.m_lpPickItem && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_QSlot) { if(g_DeviceInput.InRect(m_rcWindowSize.left + 8, m_rcWindowSize.top + 84, m_rcWindowSize.left + 215, m_rcWindowSize.top + 394)) // ±³È¯Ã¢ { if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 4, dwInvenX, dwInvenY, m_dwVaultTab)) != ITEM_FAILED) { Item::ItemPos pItemIndex; pItemIndex.SetPos(dwInvenX, dwInvenY, m_dwVaultTab); pItemIndex.m_cPos = ClientSocket::ItemPos_Deposit; if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex) { CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetDepositItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); if(lpExistItem) { if(g_ClientMain.m_lpPickItem->GetIsEnableStack()) { unsigned long dwDurability = lpExistItem->GetNowDurability() + g_ClientMain.m_lpPickItem->GetNowDurability(); lpExistItem->SetNowDurability(dwDurability); g_ClientMain.m_csStatus.SetQuickSlot(lpExistItem); delete g_ClientMain.m_lpPickItem; g_ClientMain.SetPickItem(NULL); } } else { g_ClientMain.m_csStatus.AddDepositItem(g_ClientMain.m_lpPickItem); g_ClientMain.SetPickItem(NULL); } return TRUE; } if(ddItem == ITEM_EMPTY) { if(g_ClientMain.m_lpPickItem->GetIsEnableStack()) { CItemInstance *lpExistItem = NULL; switch(g_ClientMain.m_lpPickItem->GetItemPos()) { case ClientSocket::ItemPos_Inven: lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; case ClientSocket::ItemPos_Upgrade: lpExistItem = g_ClientMain.m_csStatus.m_lpUpgrade[g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos().m_cIndex]; break; case ClientSocket::ItemPos_Exchange: lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; case ClientSocket::ItemPos_Deposit: lpExistItem = g_ClientMain.m_csStatus.GetDepositItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); break; } if(lpExistItem && lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID()) { // ±âÁ¸ÀÇ ÀÚ¸®¿¡ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ¸¸é ¾ÆÀÌÅÛÀÌ ³ª´²Áø°É·Î »ý°¢, ¾ÆÀÌÅÛÀ» ½ºÅÃÇÑ´Ù. g_ClientMain.m_Network.SendSplitItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability()); } else { g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability()); } } else { // ¾ÆÀÌÅÛ À̵¿ g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1); } } else { CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetDepositItem(ddItem); if(g_ClientMain.m_lpPickItem->GetIsEnableStack() && lpExistItem && (dwInvenX == lpExistItem->m_lpItemBase->GetPos().GetXIndex() && dwInvenY == lpExistItem->m_lpItemBase->GetPos().GetYIndex()) && lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID() && lpExistItem->GetNowDurability() < lpExistItem->GetMaxDurability()) { // ¾ÆÀÌÅÛÀ» ½ºÅÃÇÑ´Ù. unsigned char cNum; if(lpExistItem->GetMaxDurability() - lpExistItem->GetNowDurability() < g_ClientMain.m_lpPickItem->GetNowDurability()) { cNum = lpExistItem->GetMaxDurability() - lpExistItem->GetNowDurability(); } else { cNum = g_ClientMain.m_lpPickItem->GetNowDurability(); } g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, cNum); return TRUE; } // Àκ¥Å丮 ¸®½ºÆ®¿¡¼­ ¾ÆÀÌÅÛÀ» ã´Â´Ù.(¿Ï·á) // ½º¿ÒÇϱâ CItemInstance *lpInvenItem = NULL; if(g_ClientMain.m_lpPickItem->GetIsEnableStack() && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_Temp) lpInvenItem = g_ClientMain.m_csStatus.GetDepositItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos()); if(!lpInvenItem) g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, lpExistItem); } return TRUE; } } } } if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_CLICK) { // ÀÔ±Ý CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[615], MB_NUMBER | MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwVaultGoldResult); lpMessageBox->SetValue(&m_dwGoldValue); g_TextEdit.SetFocus(); m_dwVaultGoldResult = 0; m_dwGoldValue = 0; } else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK) { // Ãâ±Ý CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[616], MB_NUMBER | MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwInvenGoldResult); lpMessageBox->SetValue(&m_dwGoldValue); g_TextEdit.SetFocus(); m_dwInvenGoldResult = 0; m_dwGoldValue = 0; } else if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_CLICK) { m_dwShowVault = 2; m_ButtonManager.m_lstButton[5]->m_bShow = TRUE; m_ButtonManager.m_lstButton[6]->m_bShow = TRUE; g_TextEdit.m_dwEditMode = EDITMODE_CURPASS; g_TextEdit.SetFocus(); g_TextEdit.InitMessage(); g_TextEdit.SetEditLength(4); } break; case 1: // ºñ¹ø ÀÎÁõ â if(g_TextEdit.IsFocus()) { if(g_TextEdit.m_dwEditMode == EDITMODE_DEPOSITPASS) { strcpy(m_strCurPass, g_TextEdit.GetMessage()); } } if(g_DeviceInput.GetIsLeftMouseDown()) { if(g_DeviceInput.InRect(m_lstSprite[2]->m_nPutX + 47, m_lstSprite[2]->m_nPutY + 69, m_lstSprite[2]->m_nPutX + 175, m_lstSprite[2]->m_nPutY + 84)) { if(!g_TextEdit.IsFocus()) g_TextEdit.SetFocus(); g_TextEdit.m_dwEditMode = EDITMODE_DEPOSITPASS; } } if(m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_CLICK) { // È®ÀÎ BOOL bPass = TRUE; unsigned long i; if(strlen(m_strCurPass) < 4) bPass = FALSE; for(i = 0; i < 4; i++) { if(!((48 <= m_strCurPass[i] && m_strCurPass[i] <= 57) || (65 <= m_strCurPass[i] && m_strCurPass[i] <= 90) || (97 <= m_strCurPass[i] && m_strCurPass[i] <= 122))) bPass = FALSE; } if(bPass) { g_ClientMain.m_Network.m_pSocket->StoreLogin(m_strCurPass, m_cSavePass); } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[617]); strcpy(m_strCurPass, ""); g_TextEdit.InitMessage(); } } else if(m_ButtonManager.m_lstButton[4]->m_nState == BUTTON_CLICK) { // Ãë¼Ò strcpy(m_strCurPass, ""); strcpy(m_strNewPass, ""); g_TextEdit.InitMessage(); g_ClientMain.SetFocus(); g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_TextEdit.SetEditLength(100); ShowWindow(FALSE); } break; case 2: // ºñ¹ø º¯°æ â if(g_TextEdit.IsFocus()) { if(g_TextEdit.m_dwEditMode == EDITMODE_CURPASS) { strcpy(m_strCurPass, g_TextEdit.GetMessage()); } else if(g_TextEdit.m_dwEditMode == EDITMODE_NEWPASS) { strcpy(m_strNewPass, g_TextEdit.GetMessage()); } } if(g_DeviceInput.GetIsLeftMouseDown()) { if(g_TextEdit.m_dwEditMode != EDITMODE_CURPASS && g_DeviceInput.InRect(m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 59, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 74)) { if(!g_TextEdit.IsFocus()) g_TextEdit.SetFocus(); g_TextEdit.m_dwEditMode = EDITMODE_CURPASS; g_TextEdit.InitMessage(); } else if(g_TextEdit.m_dwEditMode != EDITMODE_NEWPASS && g_DeviceInput.InRect(m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 107, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 122)) { if(!g_TextEdit.IsFocus()) g_TextEdit.SetFocus(); g_TextEdit.m_dwEditMode = EDITMODE_NEWPASS; g_TextEdit.InitMessage(); } } if(m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_CLICK) { // È®ÀÎ BOOL bPass = TRUE; unsigned long i; if(strlen(m_strCurPass) < 4) bPass = FALSE; if(strlen(m_strNewPass) < 4) bPass = FALSE; for(i = 0; i < 4; i++) { if(!((48 <= m_strCurPass[i] && m_strCurPass[i] <= 57) || (65 <= m_strCurPass[i] && m_strCurPass[i] <= 90) || (97 <= m_strCurPass[i] && m_strCurPass[i] <= 122))) bPass = FALSE; if(!((48 <= m_strNewPass[i] && m_strNewPass[i] <= 57) || (65 <= m_strNewPass[i] && m_strNewPass[i] <= 90) || (97 <= m_strNewPass[i] && m_strNewPass[i] <= 122))) bPass = FALSE; } if(bPass) { g_ClientMain.m_Network.m_pSocket->StoreChangePass(m_strCurPass, m_strNewPass); } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[617]); strcpy(m_strCurPass, ""); strcpy(m_strNewPass, ""); g_TextEdit.m_dwEditMode = EDITMODE_CURPASS; g_TextEdit.InitMessage(); } } else if(m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_CLICK) { // Ãë¼Ò strcpy(m_strCurPass, ""); strcpy(m_strNewPass, ""); g_TextEdit.InitMessage(); g_ClientMain.SetFocus(); g_TextEdit.m_dwEditMode = EDITMODE_CHAT; g_TextEdit.SetEditLength(100); if(g_ClientMain.m_csStatus.m_cUsedDeposit) { ShowNormal(); } else { ShowWindow(FALSE); } } break; } if(m_ButtonManager.m_lstButton[7]->m_nState == BUTTON_CLICK) { m_ButtonManager.m_lstButton[7]->m_nState = BUTTON_NONE; ShowWindow(FALSE); } return TRUE; } void CHumanVault::ShowWindow(BOOL bShow) { m_bShow = bShow; m_ButtonManager.m_lstButton[3]->m_bShow = FALSE; m_ButtonManager.m_lstButton[4]->m_bShow = FALSE; m_ButtonManager.m_lstButton[5]->m_bShow = FALSE; m_ButtonManager.m_lstButton[6]->m_bShow = FALSE; ZeroMemory(m_strCurPass, sizeof(m_strCurPass)); ZeroMemory(m_strNewPass, sizeof(m_strNewPass)); if(m_bLogined) { g_ClientMain.m_Network.m_pSocket->StoreLogout(); } InitValue(); } void CHumanVault::Render(LPDIRECT3DDEVICE8 lpD3DDevice) { m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[5]->Render(lpD3DDevice, m_cAlpha); m_lstSprite[6 + m_dwVaultTab]->Render(lpD3DDevice, m_cAlpha); for(int i = 0; i < 4 - g_ClientMain.m_csStatus.m_dwMaxTab; i++) { m_lstSprite[10]->m_nPutX = m_rcWindowSize.left + 166 - i * 53; m_lstSprite[10]->m_nPutY = m_rcWindowSize.top + 56; m_lstSprite[10]->Render(lpD3DDevice, m_cAlpha); } if(m_bLogined) { RECT rcRect; SetRect(&rcRect, 69 + m_rcWindowSize.left, 412 + m_rcWindowSize.top, 192 + m_rcWindowSize.left, 434 + m_rcWindowSize.top); g_TextEdit.DrawText(g_TextEdit.MakePrintGold(g_ClientMain.m_csStatus.m_dwDepositGold), &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); list::iterator it; for(it = g_ClientMain.m_csStatus.m_lstDeposit.begin(); it != g_ClientMain.m_csStatus.m_lstDeposit.end(); it++) { if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwVaultTab) { continue; } (*it)->Render(lpD3DDevice); } if(g_ClientMain.m_lpPickItem && g_MessageBoxManager.m_lstMessageBox.empty()) { if(g_DeviceInput.InRect(m_rcWindowSize.left + 8, m_rcWindowSize.top + 84, m_rcWindowSize.left + 215, m_rcWindowSize.top + 394)) { Item::ItemPos pItemIndex; POINT *ptMousePos = g_DeviceInput.GetMousePosition(); pItemIndex.SetPos((ptMousePos->x - (m_rcWindowSize.left + 8)) / 26, (ptMousePos->y - (m_rcWindowSize.top + 84)) / 26, 0); __int64 ddItem; if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 4, pItemIndex.GetXIndex(), pItemIndex.GetYIndex(), m_dwVaultTab)) != ITEM_FAILED) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 8 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 84 + pItemIndex.GetYIndex() * 26, m_rcWindowSize.left + 8 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 84 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26, 0xFF0000FF, 0x80); } else { if(g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize + pItemIndex.GetXIndex() < 8 && g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize + pItemIndex.GetYIndex() < 12) { g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 8 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 84 + pItemIndex.GetYIndex() * 26, m_rcWindowSize.left + 8 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 84 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26, 0xFFFF0000, 0x80); } } } } } switch(m_dwShowVault) { case 1: // ºñ¹ø ÀÎÁõ â m_lstSprite[2]->Render(lpD3DDevice, m_cAlpha); if(g_TextEdit.IsFocus()) { char strText[10]; RECT rcRect; if(g_TextEdit.m_dwEditMode == EDITMODE_DEPOSITPASS) { SetRect(&rcRect, m_lstSprite[2]->m_nPutX + 47, m_lstSprite[2]->m_nPutY + 69, m_lstSprite[2]->m_nPutX + 175, m_lstSprite[2]->m_nPutY + 84); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strCurPass)); strcat(strText, "_"); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } } else { char strText[10]; RECT rcRect; SetRect(&rcRect, m_lstSprite[2]->m_nPutX + 47, m_lstSprite[2]->m_nPutY + 69, m_lstSprite[2]->m_nPutX + 175, m_lstSprite[2]->m_nPutY + 84); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strCurPass)); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } break; case 2: // ºñ¹ø º¯°æ â m_lstSprite[3]->Render(lpD3DDevice, m_cAlpha); if(g_TextEdit.IsFocus()) { char strText[10]; RECT rcRect; if(g_TextEdit.m_dwEditMode == EDITMODE_CURPASS) { SetRect(&rcRect, m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 59, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 74); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strCurPass)); strcat(strText, "_"); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); SetRect(&rcRect, m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 107, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 122); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strNewPass)); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } else if(g_TextEdit.m_dwEditMode == EDITMODE_NEWPASS) { SetRect(&rcRect, m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 59, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 74); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strCurPass)); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); SetRect(&rcRect, m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 107, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 122); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strNewPass)); strcat(strText, "_"); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } } else { char strText[10]; RECT rcRect; SetRect(&rcRect, m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 59, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 74); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strCurPass)); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); SetRect(&rcRect, m_lstSprite[3]->m_nPutX + 47, m_lstSprite[3]->m_nPutY + 107, m_lstSprite[3]->m_nPutX + 175, m_lstSprite[3]->m_nPutY + 122); ZeroMemory(strText, sizeof(strText)); memset(strText, '*', strlen(m_strCurPass)); g_TextEdit.DrawText(strText, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255)); } break; } m_ButtonManager.Render(lpD3DDevice); } void CHumanVault::InitVault(void) { if(g_ClientMain.m_csStatus.m_cUsedDeposit) { m_dwShowVault = 1; m_ButtonManager.m_lstButton[3]->m_bShow = TRUE; m_ButtonManager.m_lstButton[4]->m_bShow = TRUE; g_TextEdit.m_dwEditMode = EDITMODE_DEPOSITPASS; g_TextEdit.SetFocus(); g_TextEdit.InitMessage(); g_TextEdit.SetEditLength(4); } else { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[618], MB_CONFIRM | MB_EXIT); m_dwShowVault = 2; m_ButtonManager.m_lstButton[5]->m_bShow = TRUE; m_ButtonManager.m_lstButton[6]->m_bShow = TRUE; g_TextEdit.m_dwEditMode = EDITMODE_CURPASS; g_TextEdit.SetFocus(); g_TextEdit.InitMessage(); g_TextEdit.SetEditLength(4); } } void CHumanVault::ShowNormal(void) { m_dwShowVault = 0; m_ButtonManager.m_lstButton[3]->ShowButton(FALSE); m_ButtonManager.m_lstButton[4]->ShowButton(FALSE); m_ButtonManager.m_lstButton[5]->ShowButton(FALSE); m_ButtonManager.m_lstButton[6]->ShowButton(FALSE); } BOOL CHumanVault::SelectItem() { BOOL bPickItem = FALSE; const Item::ItemInfo *lpItemInfo; ///// â°í ¾ÆÀÌÅÛ ¾÷µ¥ÀÌÆ® ¹× ¼±Åà list::iterator it; for(it = g_ClientMain.m_csStatus.m_lstDeposit.begin(); it != g_ClientMain.m_csStatus.m_lstDeposit.end();) { lpItemInfo = &(*it)->GetItemInfo(); if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwVaultTab) { it++; continue; } (*it)->m_wPutX = m_rcWindowSize.left + 8 + 26 * (*it)->m_lpItemBase->GetPos().GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - (*it)->m_lpSprite->GetSizeX()) / 2); (*it)->m_wPutY = m_rcWindowSize.top + 84 + 26 * (*it)->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2); if(!g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && (*it)->IsOverMouse()) { if((*it)->GetIsEnableStack() && g_DeviceInput.KeyHold(VK_SHIFT) && (*it)->GetNowDurability() > 1) { CGUIMessageBox *lpMessageBox; lpMessageBox = new CGUIMessageBox; lpMessageBox->Create(g_StringTable.m_strString[170], MB_NUMBER | MB_YES | MB_NO | MB_EXIT); lpMessageBox->SetResult(&m_dwSplitResult); lpMessageBox->SetValue(&m_dwSplitValue); g_TextEdit.SetFocus(); m_lpSplitItem = (*it); m_dwSplitResult = 0; m_dwSplitValue = 0; CSoundManager &sm = CSoundManager::GetInstance(); char Temp[MAX_PATH]; sprintf(Temp, "%s\\Sound\\Interface\\click.mnd", g_ClientMain.m_strClientPath); ISoundObject &sb = sm.GetBuffer(Temp, false); sb.Play(false); it++; } else { g_ClientMain.SetPickItem((*it)); g_ClientMain.m_csStatus.CheckDepositField(0, g_ClientMain.m_lpPickItem); it = g_ClientMain.m_csStatus.m_lstDeposit.erase(it); bPickItem = TRUE; } } else { it++; } } if(bPickItem) { return TRUE; } return FALSE; }