#include "stdafx.h" #include #include #include #include #include #include #include "Character.h" Item::CItem* CCharacter::GetItem(Item::ItemPos SrcPos) { switch (SrcPos.m_cPos) { case TakeType::TS_EQUIP: return m_Equipments.GetItem(SrcPos); case TakeType::TS_INVEN: return m_Inventory.GetItem(SrcPos); case TakeType::TS_TEMP: SrcPos.m_cIndex = Item::ExtraSpacePos::HOLDITEM_POS; case TakeType::TS_EXTRA: return m_ExtraSpace.GetItem(SrcPos); case TakeType::TS_EXCHANGE: return m_Exchange.GetItem(SrcPos); case TakeType::TS_DEPOSIT: return m_Deposit.GetItem(SrcPos); case TakeType::TS_STALL: return m_Stall.GetItem(SrcPos); case TakeType::TS_TEMPINVEN: return m_TempInven.GetItem(SrcPos); } return NULL; } bool CCharacter::RemoveItem(Item::ItemPos SrcPos) { Item::CItem* lpItem = GetItem(SrcPos); if (NULL == lpItem) { ERRLOG3(g_Log, "CID:0x%08x »èÁ¦ÇÒ ¾ÆÀÌÅÛÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. SrcPos:(%d/%d)", m_dwCID, SrcPos.m_cPos, SrcPos.m_cIndex); return false; } // ³ëÁ¡»ó¿¡¼­ÀÇ »èÁ¦°¡ ¾Æ´Ñµ¥ ³ëÁ¡»ó Á¤º¸°¡ ³²¾Æ ÀÖÀ» ½Ã... (À߸øÇÏ¸é ¼­¹ö°¡ Á×À» ¼ö ÀÖ½À´Ï´Ù.) if (TakeType::TS_STALL != SrcPos.m_cPos && TakeType::TS_STALL == lpItem->GetRealPos().m_cPos) { // RemoveItem() À¸·Î RealPos °¡ ¹Ù²î¹Ç·Î ¹Ì¸® ÀúÀåÇØµÎ°í, ±× °ªÀ¸·Î SendRemoveItem ¿¡ º¸³»ÁØ´Ù. by Vincent Item::ItemPos realPos = lpItem->GetRealPos(); m_Stall.RemoveItem(lpItem->GetRealPos()); unsigned char cNum = (lpItem->IsSet(Item::DetailData::STACKABLE)) ? lpItem->GetNumOrDurability() : 1; m_Stall.SendRemoveItem(TakeType::TakeType(realPos, realPos, cNum), PktStRI::SC_CANCEL, ""); } switch (SrcPos.m_cPos) { case TakeType::TS_EQUIP: return m_Equipments.RemoveItem(SrcPos); case TakeType::TS_INVEN: return m_Inventory.RemoveItem(SrcPos); case TakeType::TS_TEMP: SrcPos.m_cIndex = Item::ExtraSpacePos::HOLDITEM_POS; case TakeType::TS_EXTRA: return m_ExtraSpace.RemoveItem(SrcPos); case TakeType::TS_EXCHANGE: return m_Exchange.RemoveItem(SrcPos); case TakeType::TS_DEPOSIT: return m_Deposit.RemoveItem(SrcPos); case TakeType::TS_STALL: { bool bResult = m_Stall.RemoveItem(SrcPos); if (true == bResult) { unsigned char cNum = (lpItem->IsSet(Item::DetailData::STACKABLE)) ? lpItem->GetNumOrDurability() : 1; m_Stall.SendRemoveItem(TakeType::TakeType(SrcPos, SrcPos, cNum), PktStRI::SC_CANCEL, ""); } return bResult; } case TakeType::TS_TEMPINVEN: return m_TempInven.RemoveItem(SrcPos); } return true; } bool CCharacter::SetItem(Item::ItemPos SrcPos, Item::CItem* lpItem) { switch (SrcPos.m_cPos) { case TakeType::TS_EQUIP: return m_Equipments.SetItem(SrcPos, lpItem); case TakeType::TS_INVEN: return m_Inventory.SetItem(SrcPos, lpItem); case TakeType::TS_TEMP: SrcPos.m_cIndex = Item::ExtraSpacePos::HOLDITEM_POS; case TakeType::TS_EXTRA: return m_ExtraSpace.SetItem(SrcPos, lpItem); case TakeType::TS_EXCHANGE: return m_Exchange.SetItem(SrcPos, lpItem); case TakeType::TS_DEPOSIT: return m_Deposit.SetItem(SrcPos, lpItem); case TakeType::TS_STALL: return m_Stall.SetItem(SrcPos, lpItem); case TakeType::TS_TEMPINVEN: return m_TempInven.SetItem(SrcPos, lpItem); } return false; }