Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
972 lines
34 KiB
C++
972 lines
34 KiB
C++
// 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<CItemInstance *>::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<CItemInstance *>::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;
|
|
}
|