//======================================================================================================================= /// EventInventorySlotContainer /** @author Kim Min Wook < taiyo@webzen.com > @since 2006. 1. 19 @remark - À̺¥Æ® ¾ÆÀÌÅÛÀ» °¡Á® ¿À±â À§ÇÑ Àκ¥Å丮¸¦ ³ªÅ¸³½´Ù. @implement - Àκ¥Å丮¿¡¼­ À̺¥Æ® Àκ¥Å丮 ¹öưÀ» ´©¸£¸é, Open() ÇÔ¼ö¸¦ È£ÃâÇÏ¿© DB·ÎºÎÅÍ À̺¥Æ® ¾ÆÀÌÅÛÀ» Äõ¸®ÇÑ´Ù. À̺¥Æ® ¾ÆÀÌÅÛ½ºÆ®¸² Ŭ·¯½ºÅ͸¦ ¹Þ°í ³ª¼­(ÀÌ¿ëÇÒ¼öÀִ»óÅ·κ¯°æ) ´Ù¸¥ Æ®·£Á§¼ÇÀ» ¼öÇàÇÒ¼öÀÖ´Ù. @todo - Àκ¥Æ®¾ÆÀÌÅÛÄڵ带 ½ÇÁ¦¾ÆÀÌÅÛ ÄÚµå·Î º¯°æÇÏ´Â ÀÛ¾÷À» ÀÚµ¿ÀûÀ¸·Î ó¸®ÇϰÔ! - Ŭ¶óÀÌ¾ðÆ®¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô @history - */ //======================================================================================================================= #pragma once #include #include "ItemManager.h" enum eEVENT_INVENTORY_STATE { EVENT_INVEN_STATE_UNAVAILABLE, EVENT_INVEN_STATE_AVAILABLE, }; enum eEVENT_INVENTORY_TRANSACTION { EVENT_INVEN_TRANS_END = (1<<0), EVENT_INVEN_TRANS_BEGIN = (1<<1), EVENT_INVEN_TRANS_BEGIN_SELECT = ( EVENT_INVEN_TRANS_BEGIN | (1<<2) ), EVENT_INVEN_TRANS_BEGIN_MOVE_TO_INVEN = ( EVENT_INVEN_TRANS_BEGIN | (1<<3) ), }; class EventInventorySlotContainer : public SCItemSlotContainer { public: EventInventorySlotContainer(void); virtual ~EventInventorySlotContainer(void); virtual eSlotType GetSlotType() const { return ST_EVENT; } virtual SCSlot * CreateSlot(); virtual VOID ClearAll(); // custom VOID InsertSlot( POSTYPE AtPos, EVENTSLOTEX & IN rSlotInfo ); public: // À̺¥Æ® Àκ¥Å丮¸¦ ¿­¶§ RC::eITEM_RESULT Open(); VOID Serialize( EVENT_ITEM_TOTAL_INFO & rTotalInfo, eSERIALIZE se ); private: VOID Close(); inline BOOL IsEventTransaction() { return (EVENT_INVEN_TRANS_BEGIN & m_eEventIvenTransaction); } inline VOID SetEventTransaction(eEVENT_INVENTORY_TRANSACTION stat) { m_eEventIvenTransaction=stat; } public: // À̺¥Æ® Àκ¥Å丮¿¡¼­ »õ·Î°íħÀ» ´©¸¦¶§ RC::eITEM_RESULT Select(); VOID OnSelect( BOOL bSuccess, EVENT_ITEM_TOTAL_INFO_EX * IN pTotalInfo ); // À̺¥Æ® ¾ÆÀÌÅÛÀ» Àκ¥Å丮·Î °¡Á®¿Ã ¶§ RC::eITEM_RESULT MoveItemToInventory( POSTYPE AtPos, DWORD & OUT ItemSeq ); VOID OnMoveItemToInventory( BOOL bSuccess, POSTYPE atPos, JUST_INVENTORY_TOTAL_INFO * OUT pTotalInfoOut ); inline VOID SetPlayer( Player * pPlayer ) { m_pPlayer = pPlayer; } protected: Player * m_pPlayer; private: eEVENT_INVENTORY_STATE m_eEventIvenState; eEVENT_INVENTORY_TRANSACTION m_eEventIvenTransaction; static const int MAX_LOCKED_INFO_NUM = MAX_INVENTORY_SLOT_NUM; EVENTSLOT m_TransactionInfo; LOCKED_INFO m_TransLockedInfo[MAX_LOCKED_INFO_NUM]; POSTYPE m_LockedCount; };