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>
812 lines
31 KiB
C++
812 lines
31 KiB
C++
// HumanExchange.cpp: implementation of the CHumanExchange class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "ClientMain.h"
|
|
#include "WinInput.h"
|
|
#include "HumanExchange.h"
|
|
#include "GUIMessageBox.h"
|
|
#include "GUITooltipItem.h"
|
|
#include "GUITextEdit.h"
|
|
#include "GUIMessageBox.h"
|
|
#include "GUIMessageBoxManager.h"
|
|
|
|
#include "Item\ItemMgr.h"
|
|
#include "Item\ItemFactory.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CHumanExchange::CHumanExchange()
|
|
{
|
|
|
|
}
|
|
|
|
CHumanExchange::~CHumanExchange()
|
|
{
|
|
|
|
}
|
|
|
|
BOOL CHumanExchange::Init(unsigned short x, unsigned short y)
|
|
{
|
|
CSprite *lpSprite;
|
|
lpSprite = new CSprite;
|
|
lpSprite->Create(x, y, 0, 0, 222, 252, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
lpSprite = new CSprite;
|
|
lpSprite->Create(x + 222, y, 0, 0, 222, 252, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
// 0 : »ó´ë¹æ È®ÀÎ
|
|
CGUIButton *lpButton;
|
|
lpButton = new CGUIButton;
|
|
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
|
|
lpButton->m_lpNormalButton = new CSprite;
|
|
lpButton->m_lpNormalButton->Create(35, 215, 114, 130, 182, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(35, 215, 182, 130, 250, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[125]);
|
|
lpButton->SetMove(x, y);
|
|
m_ButtonManager.AddButton(lpButton);
|
|
|
|
// 1 : »ó´ë¹æ Ãë¼Ò
|
|
lpButton = new CGUIButton;
|
|
lpButton->m_nMethod = BUTTON_SIMPLE;
|
|
lpButton->m_lpNormalButton = new CSprite;
|
|
lpButton->m_lpNormalButton->Create(120, 215, 114, 104, 182, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(120, 215, 182, 104, 250, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[126]);
|
|
lpButton->SetMove(x, y);
|
|
m_ButtonManager.AddButton(lpButton);
|
|
|
|
// 2: È®ÀÎ
|
|
lpButton = new CGUIButton;
|
|
lpButton->m_nMethod = BUTTON_SIMPLECHECK;
|
|
lpButton->m_lpNormalButton = new CSprite;
|
|
lpButton->m_lpNormalButton->Create(35 + 222, 215, 114, 130, 182, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(35 + 222, 215, 182, 130, 250, 156, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[125]);
|
|
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(120 + 222, 215, 114, 104, 182, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(120 + 222, 215, 182, 104, 250, 130, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[126]);
|
|
lpButton->SetMove(x, y);
|
|
m_ButtonManager.AddButton(lpButton);
|
|
|
|
// 4 : µ· ¹öư
|
|
lpButton = new CGUIButton;
|
|
lpButton->m_nMethod = BUTTON_SIMPLE;
|
|
lpButton->m_lpNormalButton = new CSprite;
|
|
lpButton->m_lpNormalButton->Create(180 + 222, 185, 180, 185, 208, 205, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(180 + 222, 185, 85, 153, 113, 173, g_ClientMain.m_lpInterface->m_lstTexture[11]);
|
|
lpButton->SetTooltip(&m_TooltipManager, "");
|
|
lpButton->SetMove(x, y);
|
|
m_ButtonManager.AddButton(lpButton);
|
|
|
|
// 5 : »ó´ëÆí ¶ô
|
|
lpButton = new CGUIButton;
|
|
lpButton->m_nMethod = BUTTON_CHECK;
|
|
lpButton->m_lpNormalButton = new CSprite;
|
|
lpButton->m_lpNormalButton->Create(192, 32, 222, 0, 248, 26, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->m_lpOnMouseButton = new CSprite;
|
|
lpButton->m_lpOnMouseButton->Create(192, 32, 222, 26, 248, 52, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(192, 32, 222, 52, 248, 78, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[129]);
|
|
lpButton->SetMove(x, y);
|
|
m_ButtonManager.AddButton(lpButton);
|
|
|
|
// 6 : ¶ô
|
|
lpButton = new CGUIButton;
|
|
lpButton->m_nMethod = BUTTON_CHECK;
|
|
lpButton->m_lpNormalButton = new CSprite;
|
|
lpButton->m_lpNormalButton->Create(192 + 222, 32, 222, 0, 248, 26, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->m_lpOnMouseButton = new CSprite;
|
|
lpButton->m_lpOnMouseButton->Create(192 + 222, 32, 222, 26, 248, 52, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(192 + 222, 32, 222, 52, 248, 78, g_ClientMain.m_lpInterface->m_lstTexture[39]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[129]);
|
|
lpButton->SetMove(x, y);
|
|
m_ButtonManager.AddButton(lpButton);
|
|
|
|
m_bShow = FALSE;
|
|
|
|
InitValue();
|
|
|
|
m_dwWindowKind = WINDOW_FIX;
|
|
|
|
m_rcWindowSize.left = x; m_rcWindowSize.top = y;
|
|
m_rcWindowSize.right = x + 444; m_rcWindowSize.bottom = y + 252;
|
|
|
|
m_rcMoveEdge.left = x; m_rcMoveEdge.top = y;
|
|
m_rcMoveEdge.right = x + 444; m_rcMoveEdge.bottom = y + 20;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CHumanExchange::InitValue(void)
|
|
{
|
|
m_dwSplitResult = 0;
|
|
m_dwSplitValue = 0;
|
|
m_lpSplitItem = NULL;
|
|
m_bSingleWindow = FALSE;
|
|
m_dwExchangeGoldResult = 0;
|
|
m_dwExchangeGoldValue = 0;
|
|
|
|
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[1]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[3]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_NONE;
|
|
}
|
|
|
|
BOOL CHumanExchange::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;
|
|
}
|
|
}
|
|
|
|
POINT *ptMousePos = g_DeviceInput.GetMousePosition();
|
|
|
|
// ¼Õ¿¡ ¹°°ÇÀ» µé°í ÀÖÀ»¶§ Ãë¼Ò¿Í µ· ³õ±â ¹öưÀ» ´©¸£Áö ¸øÇÑ´Ù.
|
|
if(!g_ClientMain.m_lpPickItem && !m_bSingleWindow)
|
|
{
|
|
m_ButtonManager.m_lstButton[3]->Update();
|
|
m_ButtonManager.m_lstButton[4]->Update();
|
|
}
|
|
|
|
// È®ÀÎÀÌ ´·¯Áö¸é ¶ôÀÌ È°µ¿À» ¸øÇÑ´Ù.
|
|
if(!m_bSingleWindow && !g_ClientMain.m_lpPickItem &&
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_NONE &&
|
|
g_DeviceInput.InRect(192 + 222 + m_rcWindowSize.left, 32 + m_rcWindowSize.top, 192 + 222 + 26 + m_rcWindowSize.left, 32 + 26 + m_rcWindowSize.top) &&
|
|
g_DeviceInput.GetIsLeftMouseDown())
|
|
{
|
|
unsigned short wCmd;
|
|
if(m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_NONE)
|
|
{
|
|
wCmd = ClientSocket::ExchangeCmd_Lock;
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, wCmd);
|
|
} else
|
|
{
|
|
wCmd = ClientSocket::ExchangeCmd_UnLock;
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, wCmd);
|
|
}
|
|
}
|
|
|
|
m_TooltipManager.Update();
|
|
|
|
// ³ª´©±â
|
|
if(m_dwSplitResult & MB_YES)
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
|
|
if(m_dwSplitValue)
|
|
{
|
|
if(m_dwSplitValue >= m_lpSplitItem->GetNowDurability())
|
|
{
|
|
g_ClientMain.SetPickItem(m_lpSplitItem, FALSE);
|
|
g_ClientMain.m_csStatus.DeleteExchangeItem(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->SetPos(m_lpSplitItem->m_lpItemBase->GetPos().m_cIndex);
|
|
g_ClientMain.m_lpPickItem->SetNowDurability(m_dwSplitValue);
|
|
|
|
g_ClientMain.m_lpPickItem->SetItemPos(ClientSocket::ItemPos_Exchange);
|
|
g_ClientMain.m_lpPickItem->m_dwItemUID = m_lpSplitItem->m_dwItemUID;
|
|
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 dwDurability = m_lpSplitItem->GetNowDurability() - m_dwSplitValue;
|
|
m_lpSplitItem->SetNowDurability(dwDurability);
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
// µ· ¿Ã¸®±â
|
|
if(m_dwExchangeGoldResult & MB_YES)
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
|
|
if(g_ClientMain.m_csStatus.m_Info.Gold <= m_dwExchangeGoldValue)
|
|
{
|
|
m_dwExchangeGoldValue = g_ClientMain.m_csStatus.m_Info.Gold;
|
|
}
|
|
|
|
__int64 ddGold = (__int64)m_dwExchangeGoldValue - (__int64)g_ClientMain.m_csStatus.m_dwExchangeGold;
|
|
if(ddGold > 0)
|
|
{
|
|
g_ClientMain.m_Network.m_nsNetworkState = NS_TAKEGOLD;
|
|
g_ClientMain.m_Network.m_pSocket->CharTakeGold(g_ClientMain.m_dwMyChrID, ClientSocket::ItemPos_Inven, ClientSocket::ItemPos_Exchange, (unsigned long)ddGold);
|
|
} else if(ddGold < 0)
|
|
{
|
|
g_ClientMain.m_Network.m_nsNetworkState = NS_TAKEGOLD;
|
|
g_ClientMain.m_Network.m_pSocket->CharTakeGold(g_ClientMain.m_dwMyChrID, ClientSocket::ItemPos_Exchange, ClientSocket::ItemPos_Inven, (unsigned long)-ddGold);
|
|
}
|
|
|
|
m_dwExchangeGoldResult = 0;
|
|
m_dwExchangeGoldValue = 0;
|
|
g_TextEdit.m_dwEditMode = EDITMODE_CHAT;
|
|
g_ClientMain.SetFocus();
|
|
|
|
return TRUE;
|
|
} else if(m_dwExchangeGoldResult & MB_NO || m_dwExchangeGoldResult & MB_EXIT)
|
|
{
|
|
m_dwExchangeGoldResult = 0;
|
|
m_dwExchangeGoldValue = 0;
|
|
g_TextEdit.m_dwEditMode = EDITMODE_CHAT;
|
|
g_ClientMain.SetFocus();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
// ±³È¯Ã¢ ¾ÆÀÌÅÛ ¼±ÅÃ
|
|
if(m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_NONE)
|
|
{
|
|
if(SelectItem())
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
// È®ÀÎ ¹öư ´©¸£±â
|
|
if(!m_bSingleWindow && !g_ClientMain.m_lpPickItem &&
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD && m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD &&
|
|
g_DeviceInput.InRect(35 + 222 + m_rcWindowSize.left, 215 + m_rcWindowSize.top, 35 + 222 + 68 + m_rcWindowSize.left, 215 + 26 + m_rcWindowSize.top) &&
|
|
g_DeviceInput.GetIsLeftMouseDown())
|
|
{
|
|
unsigned short wCmd;
|
|
if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_NONE)
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD)
|
|
wCmd = ClientSocket::ExchangeCmd_Exchange;
|
|
else
|
|
wCmd = ClientSocket::ExchangeCmd_OK;
|
|
}
|
|
else
|
|
{
|
|
wCmd = ClientSocket::ExchangeCmd_Cancel;
|
|
}
|
|
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, wCmd);
|
|
}
|
|
|
|
// Ãë¼Ò ¹öư ´©¸£±â
|
|
if(m_ButtonManager.m_lstButton[3]->m_nState == BUTTON_CLICK)
|
|
{
|
|
unsigned short wCmd;
|
|
if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD)
|
|
{
|
|
wCmd = ClientSocket::ExchangeCmd_Cancel;
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, wCmd);
|
|
}
|
|
else if(m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_NONE)
|
|
{
|
|
wCmd = ClientSocket::ExchangeCmd_Quit;
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, wCmd);
|
|
}
|
|
}
|
|
|
|
// µ· ¹öư ´©¸£±â
|
|
if(m_ButtonManager.m_lstButton[4]->m_nState == BUTTON_CLICK &&
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_NONE &&
|
|
g_ClientMain.m_dwKindCursor == CURSOR_NORMAL && !g_ClientMain.m_lpPickItem)
|
|
{
|
|
CGUIMessageBox *lpMessageBox;
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[128], MB_NUMBER | MB_YES | MB_NO | MB_EXIT);
|
|
lpMessageBox->SetResult(&m_dwExchangeGoldResult);
|
|
lpMessageBox->SetValue(&m_dwExchangeGoldValue);
|
|
g_TextEdit.SetFocus();
|
|
|
|
m_dwExchangeGoldResult = 0;
|
|
m_dwExchangeGoldValue = 0;
|
|
}
|
|
|
|
unsigned long dwInvenX = (ptMousePos->x - (m_rcWindowSize.left + 230)) / 26;
|
|
unsigned long dwInvenY = (ptMousePos->y - (m_rcWindowSize.top + 72)) / 26;
|
|
|
|
__int64 ddItem;
|
|
|
|
if(m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_NONE)
|
|
{
|
|
if(g_DeviceInput.GetIsLeftMouseDown() && g_ClientMain.m_lpPickItem && g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_QSlot)
|
|
{
|
|
if(g_DeviceInput.InRect(m_rcWindowSize.left + 230, m_rcWindowSize.top + 72, m_rcWindowSize.left + 437, m_rcWindowSize.top + 175)) // ±³È¯Ã¢
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 3, dwInvenX, dwInvenY)) != ITEM_FAILED)
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.SetPos(dwInvenX, dwInvenY, 0);
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Exchange;
|
|
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
if(lpExistItem)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->GetIsEnableStack())
|
|
{
|
|
unsigned dwDurability = lpExistItem->GetNowDurability() + g_ClientMain.m_lpPickItem->GetNowDurability();
|
|
lpExistItem->SetNowDurability(dwDurability);
|
|
delete g_ClientMain.m_lpPickItem;
|
|
g_ClientMain.SetPickItem(NULL);
|
|
}
|
|
} else
|
|
{
|
|
g_ClientMain.m_csStatus.AddExchangeItem(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_Exchange:
|
|
lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
break;
|
|
}
|
|
|
|
if(lpExistItem && lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID())
|
|
{
|
|
// ±âÁ¸ÀÇ ÀÚ¸®¿¡ ¾ÆÀÌÅÛÀÌ ³²¾ÆÀÖÀ¸¸é ¾ÆÀÌÅÛÀÌ ³ª´²Áø°É·Î »ý°¢, ¾ÆÀÌÅÛÀ» ½ºÅÃÇÑ´Ù.
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
g_ClientMain.m_Network.SendSplitItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability());
|
|
} else
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_lpPickItem->GetNowDurability());
|
|
}
|
|
} else
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
}
|
|
} else
|
|
{
|
|
CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetExchangeItem(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();
|
|
}
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
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.GetExchangeItem(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
if(!lpInvenItem)
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[5]->m_nState == BUTTON_HOLD ||
|
|
m_ButtonManager.m_lstButton[6]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_UnLock);
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, lpExistItem);
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CHumanExchange::ShowWindow(BOOL bShow)
|
|
{
|
|
if(bShow)
|
|
{
|
|
m_bShow = TRUE;
|
|
m_ButtonManager.m_lstButton[0]->ShowButton(TRUE);
|
|
m_ButtonManager.m_lstButton[1]->ShowButton(TRUE);
|
|
m_ButtonManager.m_lstButton[2]->ShowButton(TRUE);
|
|
m_ButtonManager.m_lstButton[3]->ShowButton(TRUE);
|
|
m_ButtonManager.m_lstButton[5]->ShowButton(TRUE);
|
|
m_ButtonManager.m_lstButton[6]->ShowButton(TRUE);
|
|
|
|
m_bSingleWindow = FALSE;
|
|
|
|
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[1]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[3]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_NONE;
|
|
} else
|
|
{
|
|
m_ButtonManager.m_lstButton[0]->ShowButton(FALSE);
|
|
m_ButtonManager.m_lstButton[1]->ShowButton(FALSE);
|
|
m_ButtonManager.m_lstButton[5]->ShowButton(FALSE);
|
|
|
|
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[1]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[3]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_NONE;
|
|
|
|
if(g_ClientMain.m_csStatus.m_lstExchange.size() || g_ClientMain.m_csStatus.m_dwExchangeGold || g_ClientMain.m_Network.m_nsNetworkState != NS_NOWAITING || g_ClientMain.m_lpPickItem)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_bShow = FALSE;
|
|
m_bSingleWindow = FALSE;
|
|
}
|
|
}
|
|
|
|
void CHumanExchange::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
|
|
{
|
|
RECT rcRect;
|
|
|
|
if(!m_bSingleWindow)
|
|
{
|
|
m_lstSprite[0]->Render(lpD3DDevice);
|
|
CCreature *lpCreature = g_CharacterData.GetCreature(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID);
|
|
if(lpCreature)
|
|
{
|
|
SetRect(&rcRect, 48 + m_rcWindowSize.left, 42 + m_rcWindowSize.top, 175 + m_rcWindowSize.left, 57 + m_rcWindowSize.top);
|
|
g_TextEdit.DrawText(lpCreature->m_strName, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
|
|
}
|
|
|
|
SetRect(&rcRect, 51 + m_rcWindowSize.left, 188 + m_rcWindowSize.top, 178 + m_rcWindowSize.left, 203 + m_rcWindowSize.top);
|
|
g_TextEdit.DrawText(g_TextEdit.MakePrintGold(g_ClientMain.m_csStatus.m_dwExchange2Gold), &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
|
|
}
|
|
|
|
m_lstSprite[1]->Render(lpD3DDevice);
|
|
SetRect(&rcRect, 48 + 222 + m_rcWindowSize.left, 42 + m_rcWindowSize.top, 175 + 222 + m_rcWindowSize.left, 57 + m_rcWindowSize.top);
|
|
g_TextEdit.DrawText(g_ClientMain.m_csStatus.m_Info.Name, &rcRect, DT_VCENTER | DT_CENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
|
|
|
|
SetRect(&rcRect, 51 + 222 + m_rcWindowSize.left, 188 + m_rcWindowSize.top, 178 + 222 + m_rcWindowSize.left, 203 + m_rcWindowSize.top);
|
|
g_TextEdit.DrawText(g_TextEdit.MakePrintGold(g_ClientMain.m_csStatus.m_dwExchangeGold), &rcRect, DT_CENTER | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, 255));
|
|
__int64 ddItem;
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange.begin(); it != g_ClientMain.m_csStatus.m_lstExchange.end(); it++)
|
|
{
|
|
(*it)->Render(lpD3DDevice);
|
|
}
|
|
|
|
if(!m_bSingleWindow)
|
|
{
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange2.begin(); it != g_ClientMain.m_csStatus.m_lstExchange2.end(); it++)
|
|
{
|
|
(*it)->Render(lpD3DDevice);
|
|
}
|
|
}
|
|
|
|
if(g_ClientMain.m_lpPickItem && g_MessageBoxManager.m_lstMessageBox.empty())
|
|
{
|
|
if(g_DeviceInput.InRect(m_rcWindowSize.left + 230, m_rcWindowSize.top + 72, m_rcWindowSize.left + 437, m_rcWindowSize.top + 175)) // Àκ¥
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
POINT *ptMousePos = g_DeviceInput.GetMousePosition();
|
|
pItemIndex.SetPos((ptMousePos->x - (m_rcWindowSize.left + 230)) / 26, (ptMousePos->y - (m_rcWindowSize.top + 72)) / 26, 0);
|
|
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 3, pItemIndex.GetXIndex(), pItemIndex.GetYIndex())) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
|
|
m_rcWindowSize.left + 230 + pItemIndex.GetXIndex() * 26,
|
|
m_rcWindowSize.top + 72 + pItemIndex.GetYIndex() * 26,
|
|
m_rcWindowSize.left + 230 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26,
|
|
m_rcWindowSize.top + 72 + 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() < 4)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
|
|
m_rcWindowSize.left + 230 + pItemIndex.GetXIndex() * 26,
|
|
m_rcWindowSize.top + 72 + pItemIndex.GetYIndex() * 26,
|
|
m_rcWindowSize.left + 230 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26,
|
|
m_rcWindowSize.top + 72 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26,
|
|
0xFFFF0000, 0x80);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
m_ButtonManager.Render(lpD3DDevice);
|
|
}
|
|
|
|
BOOL CHumanExchange::SelectItem()
|
|
{
|
|
BOOL bPickItem = FALSE;
|
|
const Item::ItemInfo *lpItemInfo;
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange2.begin(); it != g_ClientMain.m_csStatus.m_lstExchange2.end(); it++)
|
|
{
|
|
lpItemInfo = &(*it)->GetItemInfo();
|
|
|
|
(*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 + 72 + 26 * (*it)->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2);
|
|
}
|
|
|
|
///// Àκ¥ ¾ÆÀÌÅÛ ¾÷µ¥ÀÌÆ® ¹× ¼±ÅÃ
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange.begin(); it != g_ClientMain.m_csStatus.m_lstExchange.end();)
|
|
{
|
|
lpItemInfo = &(*it)->GetItemInfo();
|
|
|
|
(*it)->m_wPutX = m_rcWindowSize.left + 230 + 26 * (*it)->m_lpItemBase->GetPos().GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - (*it)->m_lpSprite->GetSizeX()) / 2);
|
|
(*it)->m_wPutY = m_rcWindowSize.top + 72 + 26 * (*it)->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2);
|
|
if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_NONE && g_ClientMain.m_dwKindCursor == CURSOR_NORMAL && !g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && (*it)->IsOverMouse())
|
|
{
|
|
/* if((*it)->GetIsEnableStack() && g_DeviceInput.KeyHold(VK_SHIFT) && (*it)->m_lpItemBase->m_nNowDurability > 1)
|
|
{
|
|
if(m_ButtonManager.m_lstButton[0]->m_nState == BUTTON_HOLD || m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Cancel);
|
|
}
|
|
|
|
CGUIMessageBox *lpMessageBox;
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[127], 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;
|
|
|
|
it++;
|
|
} else*/
|
|
{
|
|
g_ClientMain.SetPickItem((*it));
|
|
g_ClientMain.m_csStatus.CheckExchangeField(0, g_ClientMain.m_lpPickItem);
|
|
it = g_ClientMain.m_csStatus.m_lstExchange.erase(it);
|
|
|
|
bPickItem = TRUE;
|
|
}
|
|
} else
|
|
{
|
|
it++;
|
|
}
|
|
}
|
|
|
|
if(bPickItem)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
void CHumanExchange::ExchangeAccept(unsigned long dwChrID)
|
|
{
|
|
if(dwChrID == g_ClientMain.m_dwMyChrID)
|
|
{
|
|
m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_HOLD;
|
|
}
|
|
else
|
|
{
|
|
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_HOLD;
|
|
|
|
if(m_ButtonManager.m_lstButton[2]->m_nState == BUTTON_HOLD)
|
|
{
|
|
g_ClientMain.m_Network.SendExchangeCmd(g_ClientMain.m_lpInterface->m_dwExchangeCmdSenderID, ClientSocket::ExchangeCmd_Exchange);
|
|
}
|
|
}
|
|
}
|
|
|
|
void CHumanExchange::ExchangeCancel(unsigned long dwChrID)
|
|
{
|
|
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE;
|
|
m_ButtonManager.m_lstButton[2]->m_nState = BUTTON_NONE;
|
|
}
|
|
|
|
void CHumanExchange::ExchangeQuit()
|
|
{
|
|
m_bSingleWindow = TRUE;
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
CItemInstance *lpItem;
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange2.begin(); it != g_ClientMain.m_csStatus.m_lstExchange2.end();)
|
|
{
|
|
lpItem = (*it);
|
|
g_ClientMain.m_csStatus.CheckExchangeField(0, lpItem, FALSE);
|
|
it = g_ClientMain.m_csStatus.m_lstExchange2.erase(it);
|
|
delete lpItem;
|
|
}
|
|
g_ClientMain.m_csStatus.m_lstExchange2.clear();
|
|
g_ClientMain.m_csStatus.m_Info.Gold += g_ClientMain.m_csStatus.m_dwExchangeGold;
|
|
g_ClientMain.m_csStatus.m_dwExchangeGold = 0;
|
|
g_ClientMain.m_csStatus.m_dwExchange2Gold = 0;
|
|
|
|
ShowWindow(FALSE);
|
|
}
|
|
|
|
void CHumanExchange::ProcessExchange()
|
|
{
|
|
m_bSingleWindow = TRUE;
|
|
g_ClientMain.m_csStatus.m_Info.Gold += g_ClientMain.m_csStatus.m_dwExchange2Gold;
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
CItemInstance *lpItem;
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange.begin(); it != g_ClientMain.m_csStatus.m_lstExchange.end();)
|
|
{
|
|
lpItem = (*it);
|
|
g_ClientMain.m_csStatus.CheckExchangeField(0, lpItem);
|
|
it = g_ClientMain.m_csStatus.m_lstExchange.erase(it);
|
|
delete lpItem;
|
|
}
|
|
g_ClientMain.m_csStatus.m_lstExchange.clear();
|
|
g_ClientMain.m_csStatus.m_dwExchangeGold = 0;
|
|
|
|
for(it = g_ClientMain.m_csStatus.m_lstExchange2.begin(); it != g_ClientMain.m_csStatus.m_lstExchange2.end();)
|
|
{
|
|
lpItem = (*it);
|
|
g_ClientMain.m_csStatus.CheckExchangeField(0, lpItem, FALSE);
|
|
g_ClientMain.m_csStatus.AddExchangeItem(lpItem);
|
|
it = g_ClientMain.m_csStatus.m_lstExchange2.erase(it);
|
|
}
|
|
g_ClientMain.m_csStatus.m_lstExchange2.clear();
|
|
g_ClientMain.m_csStatus.m_dwExchange2Gold = 0;
|
|
|
|
ShowWindow(FALSE);
|
|
}
|
|
|
|
void CHumanExchange::InitPos(CItemInstance *lpItem)
|
|
{
|
|
const Item::ItemInfo *lpItemInfo = &lpItem->GetItemInfo();
|
|
|
|
lpItem->m_wPutX = m_rcWindowSize.left + 8 + 26 * lpItem->m_lpItemBase->GetPos().GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - lpItem->m_lpSprite->GetSizeX()) / 2);
|
|
lpItem->m_wPutY = m_rcWindowSize.top + 72 + 26 * lpItem->m_lpItemBase->GetPos().GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - lpItem->m_lpSprite->GetSizeY()) / 2);
|
|
}
|
|
|
|
void CHumanExchange::ExchangeLock(unsigned long dwChrID)
|
|
{
|
|
if(dwChrID == g_ClientMain.m_dwMyChrID)
|
|
{
|
|
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_HOLD;
|
|
}
|
|
else
|
|
{
|
|
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_HOLD;
|
|
}
|
|
}
|
|
|
|
void CHumanExchange::ExchangeUnLock(unsigned long dwChrID)
|
|
{
|
|
if(dwChrID == g_ClientMain.m_dwMyChrID)
|
|
{
|
|
m_ButtonManager.m_lstButton[6]->m_nState = BUTTON_NONE;
|
|
}
|
|
else
|
|
{
|
|
m_ButtonManager.m_lstButton[5]->m_nState = BUTTON_NONE;
|
|
}
|
|
}
|