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>
1366 lines
55 KiB
C++
1366 lines
55 KiB
C++
// AkhanInven.cpp: implementation of the CAkhanInven class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
//#include <crtdbg.h>
|
|
#include "ClientMain.h"
|
|
#include "AkhanInven.h"
|
|
#include "WinInput.h"
|
|
#include "GUITextEdit.h"
|
|
#include "GUITooltipItem.h"
|
|
#include "GUIMessageBox.h"
|
|
#include "GUIMessageBoxManager.h"
|
|
|
|
#include "Item\ItemMgr.h"
|
|
#include "Item\ItemFactory.h"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CAkhanInven::CAkhanInven()
|
|
{
|
|
|
|
}
|
|
|
|
CAkhanInven::~CAkhanInven()
|
|
{
|
|
|
|
}
|
|
|
|
void CAkhanInven::InitValue(void)
|
|
{
|
|
m_dwBackInven = 0;
|
|
m_dwRepairResult = 0;
|
|
m_lpRepairItem = NULL;
|
|
m_lpSplitItem = NULL;
|
|
m_dwSplitResult = 0;
|
|
m_dwSplitValue = 0;
|
|
}
|
|
|
|
BOOL CAkhanInven::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[9]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
lpSprite = new CSprite;
|
|
lpSprite->Create(x, y + 256, 0, 0, 222, 224, g_ClientMain.m_lpInterface->m_lstTexture[10]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
// ¹éÆÑ 1
|
|
lpSprite = new CSprite;
|
|
lpSprite->Create(x + 176, y + 283, 0, 0, 34, 160, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
// ¹éÆÑ 2
|
|
lpSprite = new CSprite;
|
|
lpSprite->Create(x + 176, y + 283, 38, 0,76, 160, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
// ¹éÆÑ 3
|
|
lpSprite = new CSprite;
|
|
lpSprite->Create(x + 176, y + 283, 76, 0, 114, 160, g_ClientMain.m_lpInterface->m_lstTexture[12]);
|
|
m_lstSprite.push_back(lpSprite);
|
|
|
|
CGUIButton *lpButton;
|
|
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[160]);
|
|
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(131, 30, 175, 164, 243, 186, g_ClientMain.m_lpInterface->m_lstTexture[11]);
|
|
lpButton->m_lpClickMouseButton = new CSprite;
|
|
lpButton->m_lpClickMouseButton->Create(131, 30, 175, 186, 243, 208, g_ClientMain.m_lpInterface->m_lstTexture[11]);
|
|
lpButton->SetTooltip(&m_TooltipManager, g_StringTable.m_strString[171]);
|
|
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 + 150; m_rcMoveEdge.bottom = y + 20;
|
|
|
|
InitValue();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CAkhanInven::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();
|
|
unsigned long dwMousePosX = ptMousePos->x - (m_rcWindowSize.left + 18);
|
|
unsigned long dwMousePosY = ptMousePos->y - (m_rcWindowSize.top + 286);
|
|
|
|
m_ButtonManager.Update();
|
|
m_TooltipManager.Update();
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
|
|
// ¼ö¸®ÇÏ±â ÆÐŶ º¸³»±â
|
|
if(m_dwRepairResult & MB_YES)
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharRepairItem(g_ClientMain.m_dwTradingNpcID, &m_lpRepairItem->m_lpItemBase->GetPos(), m_lpRepairItem->m_lpItemBase->GetRepairPrice());
|
|
|
|
m_dwRepairResult = 0;
|
|
m_lpRepairItem = NULL;
|
|
return TRUE;
|
|
} else if(m_dwRepairResult & MB_NO || m_dwRepairResult & MB_EXIT)
|
|
{
|
|
m_dwRepairResult = 0;
|
|
m_lpRepairItem = NULL;
|
|
return TRUE;
|
|
}
|
|
|
|
// ³ª´©±â
|
|
if(m_dwSplitResult & MB_YES)
|
|
{
|
|
if(m_dwSplitValue)
|
|
{
|
|
if(m_dwSplitValue >= m_lpSplitItem->GetNowDurability())
|
|
{
|
|
g_ClientMain.SetPickItem(m_lpSplitItem, FALSE);
|
|
g_ClientMain.m_csStatus.DeleteInventoryItem(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_Inven);
|
|
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);
|
|
|
|
g_ClientMain.m_csStatus.SetQuickSlot(m_lpSplitItem);
|
|
}
|
|
}
|
|
|
|
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(g_ClientMain.m_lpInterface->GetIsTrade())
|
|
{
|
|
if(g_ClientMain.m_dwKindCursor == CURSOR_REPAIR && g_DeviceInput.GetIsLeftMouseDown())
|
|
{
|
|
// ¼ö¸®
|
|
for(int i = 0; i < 15; i++)
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[i])
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[i]->IsOverMouse() && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetIsEnableRepair() &&
|
|
g_ClientMain.m_csStatus.m_lstEquipment[i]->GetNowDurability() < g_ClientMain.m_csStatus.m_lstEquipment[i]->GetMaxDurability())
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_Info.Gold > g_ClientMain.m_csStatus.m_lstEquipment[i]->m_lpItemBase->GetRepairPrice())
|
|
{
|
|
char strString[200];
|
|
sprintf(strString, g_StringTable.m_strString[161],
|
|
g_ClientMain.m_csStatus.m_lstEquipment[i]->m_lpItemBase->GetRepairPrice());
|
|
|
|
CGUIMessageBox *lpMessageBox;
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(strString, MB_YES | MB_NO | MB_EXIT);
|
|
lpMessageBox->SetResult(&m_dwRepairResult);
|
|
m_lpRepairItem = g_ClientMain.m_csStatus.m_lstEquipment[i];
|
|
m_dwRepairResult = 0;
|
|
} else
|
|
{
|
|
CGUIMessageBox *lpMessageBox;
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[162]);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++)
|
|
{
|
|
if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwBackInven)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if( (*it)->GetIsEnableRepair() && // ÀåºñÀ̰í
|
|
(*it)->IsOverMouse() && // ¸¶¿ì½º·Î ¼±ÅÃ
|
|
(*it)->GetNowDurability() < (*it)->GetMaxDurability()) // ³»±¸µµ°¡ ÀûÀ»¶§
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_Info.Gold > (*it)->m_lpItemBase->GetRepairPrice())
|
|
{
|
|
char strString[200];
|
|
sprintf(strString, g_StringTable.m_strString[161], (*it)->m_lpItemBase->GetRepairPrice());
|
|
|
|
CGUIMessageBox *lpMessageBox;
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(strString, MB_YES | MB_NO | MB_EXIT);
|
|
lpMessageBox->SetResult(&m_dwRepairResult);
|
|
m_lpRepairItem = (*it);
|
|
m_dwRepairResult = 0;
|
|
} else
|
|
{
|
|
CGUIMessageBox *lpMessageBox;
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[162]);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else
|
|
{
|
|
if(g_DeviceInput.GetIsRightMouseDown())
|
|
{
|
|
for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++)
|
|
{
|
|
if((*it)->m_lpItemBase->GetPos().GetZIndex() != m_dwBackInven)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if((*it)->IsOverMouse())
|
|
{
|
|
switch((*it)->GetItemType())
|
|
{
|
|
case Item::CItemType::SKILLBOOK:
|
|
UseSkillBook((*it));
|
|
break;
|
|
|
|
case Item::CItemType::POTION:
|
|
UsePotion((*it));
|
|
break;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Àåºñ ¹× Àκ¥Å丮 ¾ÆÀÌÅÛ ¼±ÅÃ
|
|
if(SelectItem()) return TRUE;
|
|
|
|
if(g_DeviceInput.GetIsLeftMouseDown())
|
|
{
|
|
if(g_DeviceInput.InRect(m_rcWindowSize.left + 177, m_rcWindowSize.top + 284, m_rcWindowSize.left + 207, m_rcWindowSize.top + 328))
|
|
{
|
|
m_dwBackInven = 0;
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 177, m_rcWindowSize.top + 335, m_rcWindowSize.left + 207, m_rcWindowSize.top + 379))
|
|
{
|
|
m_dwBackInven = 1;
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 177, m_rcWindowSize.top + 386, m_rcWindowSize.left + 207, m_rcWindowSize.top + 430))
|
|
{
|
|
m_dwBackInven = 2;
|
|
}
|
|
|
|
if(g_ClientMain.m_lpPickItem &&
|
|
g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_Stall &&
|
|
g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_QSlot &&
|
|
g_ClientMain.m_lpPickItem->GetItemPos() != ClientSocket::ItemPos_SSlot) // ¼Õ¿¡ ÀÖ´Â ¾ÆÀÌÅÛ Ã³¸®
|
|
{
|
|
unsigned long dwInvenX = dwMousePosX / 26;
|
|
unsigned long dwInvenY = dwMousePosY / 26;
|
|
|
|
__int64 ddItem;
|
|
if(g_DeviceInput.InRect(m_rcWindowSize.left + 187, m_rcWindowSize.top + 60, m_rcWindowSize.left + 212, m_rcWindowSize.top + 85)) // ¹ÝÁö 1
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::RINGL;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGL)) != ITEM_FAILED)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(),
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 161, m_rcWindowSize.top + 60, m_rcWindowSize.left + 186, m_rcWindowSize.top + 85)) // ¹ÝÁö 2
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::RINGR;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGR)) != ITEM_FAILED)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(),
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 72, m_rcWindowSize.top + 33, m_rcWindowSize.left + 123, m_rcWindowSize.top + 84)) // Çï¸ä
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::HELM;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::HELM)) != ITEM_FAILED)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(),
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 135, m_rcWindowSize.top + 60, m_rcWindowSize.left + 160, m_rcWindowSize.top + 85)) // ¸ñ°ÉÀÌ
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::NECKLACE;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::NECKLACE)) != ITEM_FAILED)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(),
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 10, m_rcWindowSize.top + 170, m_rcWindowSize.left + 61, m_rcWindowSize.top + 273)) // ¹«±â 1
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::WEAPON_HAND1;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::WEAPON_HAND1)) != ITEM_FAILED)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(),
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 72, m_rcWindowSize.top + 101, m_rcWindowSize.left + 149, m_rcWindowSize.top + 204)) // ¸öÅë
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::ARMOUR;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::ARMOUR)) != ITEM_FAILED)
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->GetPos(),
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 161, m_rcWindowSize.top + 101, m_rcWindowSize.left + 211, m_rcWindowSize.top + 204)) // ¹«±â 2
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::SHIELD_HAND1)) != ITEM_FAILED)
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::SHIELD_HAND1;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 10, m_rcWindowSize.top + 57, m_rcWindowSize.left + 61, m_rcWindowSize.top + 160)) // Àå°©
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::GLOVE)) != ITEM_FAILED)
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::GLOVE;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 160, m_rcWindowSize.top + 222, m_rcWindowSize.left + 211, m_rcWindowSize.top + 273)) // ¸ÁÅä
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::CLOAK)) != ITEM_FAILED)
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::CLOAK;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 86, m_rcWindowSize.top + 222, m_rcWindowSize.left + 137, m_rcWindowSize.top + 273)) // ½Å¹ß
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::BOOTS)) != ITEM_FAILED)
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.m_cIndex = Item::EquipmentPos::BOOTS;
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Equip;
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
g_ClientMain.m_csStatus.AddEquipItem(pItemIndex.m_cIndex, g_ClientMain.m_lpPickItem);
|
|
g_ClientMain.SetPickItem(NULL);
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
return TRUE;
|
|
}
|
|
|
|
if(ddItem == ITEM_EMPTY)
|
|
{
|
|
// ¾ÆÀÌÅÛ À̵¿
|
|
g_ClientMain.m_Network.SendTakeItem(g_ClientMain.m_lpPickItem, &pItemIndex, 1);
|
|
} else
|
|
{
|
|
// ½º¿ÒÇϱâ
|
|
g_ClientMain.m_Network.SendSwapItem(g_ClientMain.m_lpPickItem, &pItemIndex, g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]);
|
|
}
|
|
|
|
return TRUE;
|
|
}/* else
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex])
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_dwItemPos,
|
|
&g_ClientMain.m_csStatus.m_lstEquipment[pItemIndex.m_cIndex]->m_lpItemBase->m_ItemInfo.m_nItemIndex,
|
|
g_ClientMain.m_lpPickItem->m_dwItemPos,
|
|
&g_ClientMain.m_lpPickItem->m_lpItemBase->m_ItemInfo.m_nItemIndex);
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
}*/
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 18, m_rcWindowSize.top + 286, m_rcWindowSize.left + 172, m_rcWindowSize.top + 440)) // Àκ¥
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 0, dwInvenX, dwInvenY, m_dwBackInven)) != ITEM_FAILED)
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
pItemIndex.SetPos(dwInvenX, dwInvenY, m_dwBackInven);
|
|
pItemIndex.m_cPos = ClientSocket::ItemPos_Inven;
|
|
if(g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos() == pItemIndex)
|
|
{
|
|
CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(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.AddInventoryItem(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.GetInventoryItem(ddItem);
|
|
|
|
if(g_ClientMain.m_lpPickItem->GetIsEnableStack() && lpExistItem)
|
|
{
|
|
CItemInstance *lpStallItem = g_ClientMain.m_csStatus.GetStreetTradeItem(lpExistItem->m_dwItemUID);
|
|
if(!lpStallItem)
|
|
{
|
|
// ¼ÒÄÏ ¹Ú±â
|
|
if(g_ClientMain.m_csStatus.GetIsInstallSocket(lpExistItem, g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_Network.m_pSocket->CharInstallSocket(g_ClientMain.m_dwMyChrID,
|
|
&lpExistItem->m_lpItemBase->GetPos(), &g_ClientMain.m_lpPickItem->m_lpItemBase->GetPos());
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
// ¾ÆÀÌÅÛ ½ºÅÃ
|
|
if(lpExistItem->GetProtoTypeID() == g_ClientMain.m_lpPickItem->GetProtoTypeID() &&
|
|
(pItemIndex.GetXIndex() == lpExistItem->m_lpItemBase->GetPos().GetXIndex() &&
|
|
pItemIndex.GetYIndex() == lpExistItem->m_lpItemBase->GetPos().GetYIndex()) &&
|
|
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.GetInventoryItem(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)
|
|
{
|
|
m_ButtonManager.m_lstButton[0]->m_nState = BUTTON_NONE;
|
|
ShowWindow(FALSE);
|
|
} else if(m_ButtonManager.m_lstButton[1]->m_nState == BUTTON_CLICK)
|
|
{
|
|
if(!g_ClientMain.m_lpInterface->GetBusy())
|
|
{
|
|
g_ClientMain.m_lpInterface->InitStreetStall(g_ClientMain.m_dwMyChrID, NULL);
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CAkhanInven::ShowWindow(BOOL bShow)
|
|
{
|
|
if(bShow == FALSE)
|
|
{
|
|
if(!g_ClientMain.m_lpInterface->GetIsExchange())
|
|
{
|
|
m_bShow = bShow;
|
|
g_ClientMain.m_lpInterface->m_lstWindow[8]->ShowWindow(bShow);
|
|
g_ClientMain.m_lpInterface->m_lstWindow[13]->ShowWindow(bShow);
|
|
g_ClientMain.m_lpInterface->m_lstWindow[19]->ShowWindow(bShow);
|
|
g_ClientMain.m_lpInterface->m_lstWindow[20]->ShowWindow(bShow);
|
|
}
|
|
} else
|
|
{
|
|
m_bShow = bShow;
|
|
}
|
|
}
|
|
|
|
void CAkhanInven::Render(LPDIRECT3DDEVICE8 lpD3DDevice)
|
|
{
|
|
m_lstSprite[0]->Render(lpD3DDevice, m_cAlpha);
|
|
m_lstSprite[1]->Render(lpD3DDevice, m_cAlpha);
|
|
|
|
switch(m_dwBackInven)
|
|
{
|
|
case 0:
|
|
m_lstSprite[2]->Render(lpD3DDevice, m_cAlpha);
|
|
break;
|
|
|
|
case 1:
|
|
m_lstSprite[3]->Render(lpD3DDevice, m_cAlpha);
|
|
break;
|
|
|
|
case 2:
|
|
m_lstSprite[4]->Render(lpD3DDevice, m_cAlpha);
|
|
break;
|
|
}
|
|
|
|
for(int i = 0; i < 15; i++)
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[i])
|
|
{
|
|
switch(i)
|
|
{
|
|
case Item::EquipmentPos::WEAPON_HAND1:
|
|
case Item::EquipmentPos::SHIELD_HAND1:
|
|
if(g_ClientMain.m_csStatus.m_cWeaponPos == 0)
|
|
{
|
|
if(i == Item::EquipmentPos::WEAPON_HAND1 && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetTwoHandItem())
|
|
{
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutX =
|
|
m_rcWindowSize.left + 10 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeX()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutY =
|
|
m_rcWindowSize.top + 170 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeY()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->Render(lpD3DDevice);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutX =
|
|
m_rcWindowSize.left + 161 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeX()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutY =
|
|
m_rcWindowSize.top + 101 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeY()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->Render(lpD3DDevice);
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 160, m_rcWindowSize.top + 101, m_rcWindowSize.left + 211, m_rcWindowSize.top + 204, 0xFFFF0000, 0x80);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutX =
|
|
m_rcWindowSize.left + 10 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeX()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_wPutY =
|
|
m_rcWindowSize.top + 170 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND1]->m_lpSprite->GetSizeY()) / 2);
|
|
} else
|
|
{
|
|
g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case Item::EquipmentPos::WEAPON_HAND2:
|
|
case Item::EquipmentPos::SHIELD_HAND2:
|
|
if(g_ClientMain.m_csStatus.m_cWeaponPos == 1)
|
|
{
|
|
if(i == Item::EquipmentPos::WEAPON_HAND2 && g_ClientMain.m_csStatus.m_lstEquipment[i]->GetTwoHandItem())
|
|
{
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutX =
|
|
m_rcWindowSize.left + 10 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeX()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutY =
|
|
m_rcWindowSize.top + 170 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeY()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->Render(lpD3DDevice);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutX =
|
|
m_rcWindowSize.left + 161 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeX()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutY =
|
|
m_rcWindowSize.top + 101 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeY()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->Render(lpD3DDevice);
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 160, m_rcWindowSize.top + 101, m_rcWindowSize.left + 211, m_rcWindowSize.top + 204, 0xFFFF0000, 0x80);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutX =
|
|
m_rcWindowSize.left + 10 + ((50 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeX()) / 2);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_wPutY =
|
|
m_rcWindowSize.top + 170 + ((102 - g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::WEAPON_HAND2]->m_lpSprite->GetSizeY()) / 2);
|
|
} else
|
|
{
|
|
g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice);
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
g_ClientMain.m_csStatus.m_lstEquipment[i]->Render(lpD3DDevice);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end(); it++)
|
|
{
|
|
if(m_dwBackInven == (*it)->m_lpItemBase->GetPos().GetZIndex()) (*it)->Render(lpD3DDevice);
|
|
}
|
|
|
|
if(g_ClientMain.m_lpPickItem && g_MessageBoxManager.m_lstMessageBox.empty())
|
|
{
|
|
__int64 ddItem;
|
|
if(g_DeviceInput.InRect(m_rcWindowSize.left + 187, m_rcWindowSize.top + 60, m_rcWindowSize.left + 212, m_rcWindowSize.top + 85)) // ¹ÝÁö 1
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGL)) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 187, m_rcWindowSize.top + 60, m_rcWindowSize.left + 212, m_rcWindowSize.top + 85, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGL]
|
|
&& g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGL], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 187, m_rcWindowSize.top + 60, m_rcWindowSize.left + 212, m_rcWindowSize.top + 85, 0xFFFFFFFF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 187, m_rcWindowSize.top + 60, m_rcWindowSize.left + 212, m_rcWindowSize.top + 85, 0xFFFF0000, 0x80);
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 161, m_rcWindowSize.top + 60, m_rcWindowSize.left + 186, m_rcWindowSize.top + 85)) // ¹ÝÁö 2
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::RINGR)) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 161, m_rcWindowSize.top + 60, m_rcWindowSize.left + 186, m_rcWindowSize.top + 85, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGR]
|
|
&& g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::RINGR], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 161, m_rcWindowSize.top + 60, m_rcWindowSize.left + 186, m_rcWindowSize.top + 85, 0xFFFFFFFF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 161, m_rcWindowSize.top + 60, m_rcWindowSize.left + 186, m_rcWindowSize.top + 85, 0xFFFF0000, 0x80);
|
|
}
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 72, m_rcWindowSize.top + 33, m_rcWindowSize.left + 123, m_rcWindowSize.top + 84)) // Çï¸ä
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::HELM)) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 72, m_rcWindowSize.top + 33, m_rcWindowSize.left + 123, m_rcWindowSize.top + 84, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
if(g_ClientMain.m_lpPickItem->GetIsSocketItem() && g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::HELM]
|
|
&& g_ClientMain.m_csStatus.GetIsInstallSocket(g_ClientMain.m_csStatus.m_lstEquipment[Item::EquipmentPos::HELM], g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 72, m_rcWindowSize.top + 33, m_rcWindowSize.left + 123, m_rcWindowSize.top + 84, 0xFFFFFFFF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 72, m_BAAD$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@2@I@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?_Dec@const_iterator@?$_Tree@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@QAEXXZ
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?_Inc@const_iterator@?$_Tree@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@QAEXXZ
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??0_Node@?$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@QAE@PAU012@00ABU?$pair@$$CBKPAVCTextureCacheObj@@@2@D@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??0out_of_range@std@@QAE@ABV01@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?allocate@?$allocator@D@std@@QAEPADI@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?max_size@?$allocator@D@std@@QBEIXZ
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?_Max@?$_Tree@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@2@PAU342@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?_Min@?$_Tree@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@KAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@2@PAU342@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??0?$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@IAE@ABU?$less@K@1@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@1@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ?construct@?$allocator@PAU_Node@?$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@std@@@std@@QAEXPAPAU_Node@?$_Tree_nod@V?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@@2@ABQAU342@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??0?$_Tmap_traits@KPAVCTextureCacheObj@@U?$less@K@std@@V?$allocator@U?$pair@$$CBKPAVCTextureCacheObj@@@std@@@3@$0A@@std@@QAE@U?$less@K@1@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Pow_int@N@@YANNH@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Pow_int@H@@YAHHH@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Pow_int@M@@YAMMH@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Pow_int@O@@YAOOH@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$use_facet@V?$ctype@D@std@@@std@@YAABV?$ctype@D@0@ABVlocale@0@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$use_facet@V?$ctype@_W@std@@@std@@YAABV?$ctype@_W@0@ABVlocale@0@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$copy@PAPAVCTextureNode@@PAPAV1@@std@@YAPAPAVCTextureNode@@PAPAV1@00@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Destroy_range@PAVCTextureNode@@V?$allocator@PAVCTextureNode@@@std@@@std@@YAXPAPAVCTextureNode@@0AAV?$allocator@PAVCTextureNode@@@0@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Uninitialized_fill_n@PAPAVCTextureNode@@IPAV1@V?$allocator@PAVCTextureNode@@@std@@@std@@YAXPAPAVCTextureNode@@IABQAV1@AAV?$allocator@PAVCTextureNode@@@0@@Z
|
|
_TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
|
|
_TEXT ENDS
|
|
; COMDAT ??$_Ucopy@PAPAVCTextureNode@@@?$vector@PAVCTextureNode@@V?$allocator@PAVCTextureNode@@@std@@@std@@IAEPAPAVCTextureNode@@PAPAV2@00@Z
|
|
_TEXT S+ 211, m_rcWindowSize.top + 204, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 161, m_rcWindowSize.top + 101, m_rcWindowSize.left + 211, m_rcWindowSize.top + 204, 0xFFFF0000, 0x80);
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 10, m_rcWindowSize.top + 57, m_rcWindowSize.left + 61, m_rcWindowSize.top + 160)) // Àå°©
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::GLOVE)) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 10, m_rcWindowSize.top + 57, m_rcWindowSize.left + 61, m_rcWindowSize.top + 160, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 10, m_rcWindowSize.top + 57, m_rcWindowSize.left + 61, m_rcWindowSize.top + 160, 0xFFFF0000, 0x80);
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 160, m_rcWindowSize.top + 222, m_rcWindowSize.left + 211, m_rcWindowSize.top + 273)) // ¸ÁÅä
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::CLOAK)) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 160, m_rcWindowSize.top + 222, m_rcWindowSize.left + 211, m_rcWindowSize.top + 273, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 160, m_rcWindowSize.top + 222, m_rcWindowSize.left + 211, m_rcWindowSize.top + 273, 0xFFFF0000, 0x80);
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 86, m_rcWindowSize.top + 222, m_rcWindowSize.left + 137, m_rcWindowSize.top + 273)) // ½Å¹ß
|
|
{
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 1, Item::EquipmentPos::BOOTS)) != ITEM_FAILED)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 222, m_rcWindowSize.left + 137, m_rcWindowSize.top + 273, 0xFF0000FF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice, m_rcWindowSize.left + 86, m_rcWindowSize.top + 222, m_rcWindowSize.left + 137, m_rcWindowSize.top + 273, 0xFFFF0000, 0x80);
|
|
}
|
|
} else if(g_DeviceInput.InRect(m_rcWindowSize.left + 18, m_rcWindowSize.top + 286, m_rcWindowSize.left + 172, m_rcWindowSize.top + 440)) // Àκ¥
|
|
{
|
|
Item::ItemPos pItemIndex;
|
|
POINT *ptMousePos = g_DeviceInput.GetMousePosition();
|
|
pItemIndex.SetPos((ptMousePos->x - (m_rcWindowSize.left + 18)) / 26, (ptMousePos->y - (m_rcWindowSize.top + 286)) / 26, m_dwBackInven);
|
|
|
|
if((ddItem = g_ClientMain.m_csStatus.IsCheckItem(g_ClientMain.m_lpPickItem, 0, pItemIndex.GetXIndex(), pItemIndex.GetYIndex(), m_dwBackInven)) != ITEM_FAILED)
|
|
{
|
|
CItemInstance *lpExistItem = g_ClientMain.m_csStatus.GetInventoryItem(ddItem);
|
|
CItemInstance *lpStallItem = NULL;
|
|
if(lpExistItem)
|
|
{
|
|
lpStallItem = g_ClientMain.m_csStatus.GetStreetTradeItem(lpExistItem->m_dwItemUID);
|
|
}
|
|
|
|
if(!lpStallItem && (g_ClientMain.m_lpPickItem->GetItemType() == Item::CItemType::GEM ||
|
|
g_ClientMain.m_lpPickItem->GetItemType() == Item::CItemType::RUNE) &&
|
|
lpExistItem && g_ClientMain.m_csStatus.GetIsInstallSocket(lpExistItem, g_ClientMain.m_lpPickItem))
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
|
|
m_rcWindowSize.left + 18 + lpExistItem->m_lpItemBase->GetPos().GetXIndex() * 26,
|
|
m_rcWindowSize.top + 286 + lpExistItem->m_lpItemBase->GetPos().GetYIndex() * 26,
|
|
m_rcWindowSize.left + 18 + lpExistItem->GetItemInfo().m_DetailData.m_cXSize * 26 + lpExistItem->m_lpItemBase->GetPos().GetXIndex() * 26,
|
|
m_rcWindowSize.top + 286 + lpExistItem->GetItemInfo().m_DetailData.m_cYSize * 26 + lpExistItem->m_lpItemBase->GetPos().GetYIndex() * 26,
|
|
0xFFFFFFFF, 0x80);
|
|
} else
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
|
|
m_rcWindowSize.left + 18 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 286 + pItemIndex.GetYIndex() * 26,
|
|
m_rcWindowSize.left + 18 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26,
|
|
m_rcWindowSize.top + 286 + 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() < 6 &&
|
|
g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize + pItemIndex.GetYIndex() < 6)
|
|
{
|
|
g_ClientMain.m_lpCommonInterface->RenderRect(lpD3DDevice,
|
|
m_rcWindowSize.left + 18 + pItemIndex.GetXIndex() * 26, m_rcWindowSize.top + 286 + pItemIndex.GetYIndex() * 26,
|
|
m_rcWindowSize.left + 18 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cXSize * 26 + pItemIndex.GetXIndex() * 26,
|
|
m_rcWindowSize.top + 286 + g_ClientMain.m_lpPickItem->GetItemInfo().m_DetailData.m_cYSize * 26 + pItemIndex.GetYIndex() * 26,
|
|
0xFFFF0000, 0x80);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
RECT rcRect;
|
|
// Gold
|
|
SetRect(&rcRect, 62 + m_rcWindowSize.left, 455 + m_rcWindowSize.top, 177 + m_rcWindowSize.left, 470 + m_rcWindowSize.top);
|
|
g_TextEdit.DrawText(g_TextEdit.MakePrintGold(g_ClientMain.m_csStatus.m_Info.Gold), &rcRect, DT_RIGHT | DT_VCENTER, D3DCOLOR_RGBA(255, 255, 255, m_cAlpha));
|
|
|
|
m_ButtonManager.Render(lpD3DDevice);
|
|
}
|
|
|
|
BOOL CAkhanInven::UseSkillBook(CItemInstance *lpItem)
|
|
{
|
|
/* {
|
|
Item::UseItem *lpSkillBook = ((Item::UseItem *)lpItem->m_lpItemBase);
|
|
g_ClientMain.m_Network.m_nsNetworkState = NS_USEITEM;
|
|
|
|
g_ClientMain.m_Network.m_pSocket->CharUseItem(g_ClientMain.m_dwMyChrID, g_ClientMain.m_dwMyChrID, &lpSkillBook->m_ItemInfo.m_nItemIndex);
|
|
|
|
return TRUE;
|
|
}*/// º¸³ë Àü¿ë
|
|
if(!lpItem) return FALSE;
|
|
|
|
unsigned long dwResult = g_ClientMain.m_csStatus.CheckUseSkillBook(lpItem);
|
|
|
|
CGUIMessageBox *lpMessageBox;
|
|
switch(dwResult)
|
|
{
|
|
case 0:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[163]);
|
|
break;
|
|
|
|
case 1:
|
|
{
|
|
CEffScript *test_script;
|
|
// _ASSERTE(_CrtCheckMemory());
|
|
test_script = new CEffScript;
|
|
test_script->SetInterfaceSet(true);
|
|
|
|
test_script->GetScriptBinData("inter_book.esf");
|
|
|
|
test_script->m_InterfacePos[0] = (lpItem->m_wPutX) + 26;
|
|
test_script->m_InterfacePos[1] = (lpItem->m_wPutY) + 26;
|
|
|
|
CSceneManager::m_EffectManager.AddInterfaceScript(test_script);
|
|
|
|
g_ClientMain.m_Network.m_nsNetworkState = NS_USEITEM;
|
|
g_ClientMain.m_Network.m_pSocket->CharUseItem(g_ClientMain.m_dwMyChrID, g_ClientMain.m_dwMyChrID, &lpItem->m_lpItemBase->GetPos());
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[164]);
|
|
break;
|
|
|
|
case 3:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[165]);
|
|
break;
|
|
|
|
case 4:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[163]);
|
|
break;
|
|
|
|
case 5:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[166]);
|
|
break;
|
|
|
|
case 6:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[167]);
|
|
break;
|
|
|
|
case 7:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[163]);
|
|
break;
|
|
|
|
case 8:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[168]);
|
|
break;
|
|
|
|
case 9:
|
|
lpMessageBox = new CGUIMessageBox;
|
|
lpMessageBox->Create(g_StringTable.m_strString[169]);
|
|
break;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CAkhanInven::SelectItem()
|
|
{
|
|
BOOL bPickItem = FALSE;
|
|
CItemInstance *lpInstance;
|
|
const Item::ItemInfo *lpItemInfo;
|
|
|
|
unsigned short wPosX[15] = { 72, 0, 0, 72, 10, 86, 135, 161, 187, 161, 0, 10, 0, 160, 0 };
|
|
unsigned short wPosY[15] = { 33, 0, 0, 101, 57, 222, 60, 60, 60, 101, 0, 170, 0, 222, 0 };
|
|
unsigned short wSizeX[15] = { 50, 0, 0, 76, 50, 50, 24, 24, 24, 50, 0, 50, 0, 50, 50 };
|
|
unsigned short wSizeY[15] = { 50, 0, 0, 102, 102, 50, 24, 24, 24, 102, 0, 102, 0, 50, 50 };
|
|
|
|
///// Àåºñ ¾ÆÀÌÅÛ ¾÷µ¥ÀÌÆ® ¹× ¼±ÅÃ
|
|
for(int i = 0; i < Item::EquipmentPos::MAX_EQUPMENT_POS; i++)
|
|
{
|
|
if(g_ClientMain.m_csStatus.m_lstEquipment[i])
|
|
{
|
|
lpInstance = g_ClientMain.m_csStatus.m_lstEquipment[i];
|
|
lpInstance->m_wPutX = m_rcWindowSize.left + wPosX[i] + ((wSizeX[i] - lpInstance->m_lpSprite->GetSizeX()) / 2);
|
|
lpInstance->m_wPutY = m_rcWindowSize.top + wPosY[i] + ((wSizeY[i] - lpInstance->m_lpSprite->GetSizeY()) / 2);
|
|
if(g_ClientMain.m_dwKindCursor == CURSOR_NORMAL && !g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && lpInstance->IsOverMouse())
|
|
{
|
|
g_ClientMain.SetPickItem(lpInstance);
|
|
g_ClientMain.m_csStatus.m_lstEquipment[i] = NULL;
|
|
g_ClientMain.m_Network.SendCharShape();
|
|
g_ClientMain.m_csStatus.StatusUpdate();
|
|
bPickItem = TRUE;
|
|
}
|
|
|
|
if(bPickItem && (i == Item::EquipmentPos::WEAPON_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos ||
|
|
i == Item::EquipmentPos::SHIELD_HAND1 + g_ClientMain.m_csStatus.m_cWeaponPos))
|
|
{
|
|
g_CharacterData.m_bAutoTargetAttack = false;
|
|
g_CharacterData.m_dwAutoTargetID = 0xFFFFFFFF;
|
|
}
|
|
}
|
|
}
|
|
|
|
list<CItemInstance *>::iterator it;
|
|
///// Àκ¥ ¾ÆÀÌÅÛ ¾÷µ¥ÀÌÆ® ¹× ¼±ÅÃ
|
|
for(it = g_ClientMain.m_csStatus.m_lstInventory.begin(); it != g_ClientMain.m_csStatus.m_lstInventory.end();)
|
|
{
|
|
Item::ItemPos pItemIndex = (*it)->m_lpItemBase->GetPos();
|
|
lpItemInfo = &(*it)->GetItemInfo();
|
|
|
|
if(pItemIndex.GetZIndex() != m_dwBackInven)
|
|
{
|
|
it++;
|
|
continue;
|
|
}
|
|
|
|
(*it)->m_wPutX = m_rcWindowSize.left + 18 + 26 * pItemIndex.GetXIndex() + (((lpItemInfo->m_DetailData.m_cXSize * 26 - 1) - (*it)->m_lpSprite->GetSizeX()) / 2);
|
|
(*it)->m_wPutY = m_rcWindowSize.top + 286 + 26 * pItemIndex.GetYIndex() + (((lpItemInfo->m_DetailData.m_cYSize * 26 - 1) - (*it)->m_lpSprite->GetSizeY()) / 2);
|
|
if(g_ClientMain.m_dwKindCursor == CURSOR_NORMAL && !g_ClientMain.m_lpPickItem && g_DeviceInput.GetIsLeftMouseDown() && (*it)->IsOverMouse())
|
|
{
|
|
CItemInstance *lpStallItem = g_ClientMain.m_csStatus.GetStreetTradeItem((*it)->m_dwItemUID);
|
|
if(lpStallItem)
|
|
{
|
|
TakeType pTakeType;
|
|
pTakeType.m_srcPos.m_cPos = ClientSocket::ItemPos_Stall;
|
|
pTakeType.m_srcPos.m_cIndex = 0;
|
|
pTakeType.m_dstPos = lpStallItem->m_lpItemBase->GetPos();
|
|
if(lpStallItem->GetIsEnableStack())
|
|
{
|
|
pTakeType.m_cNum = lpStallItem->GetNowDurability();
|
|
} else
|
|
{
|
|
pTakeType.m_cNum = 1;
|
|
}
|
|
g_ClientMain.m_Network.m_nsNetworkState = NS_STALLREGISTERITEM;
|
|
g_ClientMain.m_Network.m_pSocket->CharStallRegisterItem(g_ClientMain.m_dwMyChrID, pTakeType, 0, ClientSocket::StallCmd_Cancel);
|
|
}
|
|
|
|
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.CheckInvenField(0, g_ClientMain.m_lpPickItem);
|
|
it = g_ClientMain.m_csStatus.m_lstInventory.erase(it);
|
|
g_ClientMain.m_csStatus.SetQuickSlot(g_ClientMain.m_lpPickItem);
|
|
|
|
bPickItem = TRUE;
|
|
}
|
|
} else
|
|
{
|
|
it++;
|
|
}
|
|
}
|
|
|
|
if(bPickItem)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL CAkhanInven::UsePotion(CItemInstance *lpItem)
|
|
{
|
|
Item::CUseItem *lpPotion = Item::CUseItem::DowncastToUseItem(lpItem->m_lpItemBase);
|
|
if(!lpPotion) return FALSE;
|
|
|
|
unsigned long dwResult = g_ClientMain.m_csStatus.CheckUsePotion(lpItem);
|
|
|
|
if(dwResult == 1)
|
|
{
|
|
// Æ÷¼ÇÀ» ¾´´Ù.
|
|
g_ClientMain.m_Network.m_nsNetworkState = NS_USEITEM;
|
|
g_ClientMain.m_Network.m_pSocket->CharUseItem(g_ClientMain.m_dwMyChrID, g_ClientMain.m_dwMyChrID, &lpPotion->GetPos());
|
|
g_ClientMain.SetPotionCoolDown();
|
|
}
|
|
|
|
return TRUE;
|
|
}
|