#ifndef _STALL_CONTAINER_H_ #define _STALL_CONTAINER_H_ #include "ItemContainer.h" // Àü¹æ ÂüÁ¶ class CChatPacket; class CSendStream; class CAggresiveCreature; class CCharacter; class CCell; namespace Item { class CShopContainer : public CArrayContainer { public: enum { MAX_CUSTOMER_NUM = 10 }; CShopContainer(); virtual ~CShopContainer(); bool Initialize(unsigned long dwCID, unsigned char cWidth, unsigned char cHeight); virtual void Clear(void); virtual CItem* GetItem(ItemPos itemPos); virtual bool SetItem(ItemPos itemPos, CItem* lpItem) = 0; virtual bool RemoveItem(ItemPos itemPos); void SwapPosAllItem(void); bool StallPriceOut(unsigned long* szStallPriceBuffer_Out, unsigned char& cItemNum_Out) const; bool Enter(CCharacter *lpCustomer); bool Leave(CCharacter *lpCustomer); unsigned char GetCurrentCustomerNum(void); virtual bool Close(void); virtual bool SendCharStallItemInfo(CCharacter *lpCustomer) = 0; virtual bool SendAllCustomer(const char* szPacket, const unsigned long dwPacketSize, bool bIncludeOwner, unsigned char cCMD_In); bool SendRemoveItem(TakeType takeType, unsigned char cCmd, const char* strBuyUser); bool SendCharStallEnter(unsigned long dwCustomerID, unsigned long dwOwnerID); protected: void Destroy(); unsigned long m_aryCustomerID[MAX_CUSTOMER_NUM]; // ¼Õ´ÔµéÀÇ ¾ÆÀ̵ð ¹è¿­ }; class CCharacterShopContainer : public CShopContainer { public: enum { MAX_STALL_NAME_LEN = 32 }; CCharacterShopContainer(); virtual ~CCharacterShopContainer(); virtual void Clear(void); void RollBackAllItem(void); virtual bool SetItem(ItemPos itemPos, CItem* lpItem); void SetOtherOwner(unsigned long dwCID) { m_dwOtherOwnerID = dwCID; } unsigned long GetOtherOwner(void) { return m_dwOtherOwnerID; } char* GetStallName(void) { return m_strStallName; } bool Open(char *strStallName); virtual bool Close(void); virtual bool SendCharStallItemInfo(CCharacter *lpCustomer); virtual bool SendAllCustomer(const char* szPacket, const unsigned long dwPacketSize, bool bIncludeOwner, unsigned char cCMD_In); bool SendCharStallOpen(char *strStallName); protected: unsigned long m_dwOtherOwnerID; // ÁÖÀÎÀÇ ¾ÆÀ̵ð (³²ÀÌ °³¼³ÇÑ ³ëÁ¡»ó¿¡ ÀÔÀåÇÑ °æ¿ì) char m_strStallName[MAX_STALL_NAME_LEN]; // ³ëÁ¡»ó À̸§ }; class CCampShopContainer : public CShopContainer { public: CCampShopContainer(void); virtual ~CCampShopContainer(void); virtual bool SetItem(ItemPos itemPos, CItem* lpItem); virtual bool RemoveItem(ItemPos itemPos); void DropItem(CCell* lpCell, const Position& currentPos, unsigned long dwOffencerGID); bool StallPriceIn(const unsigned long* szStallPriceBuffer_In, unsigned char cItemNum_In); virtual bool SendCharStallItemInfo(CCharacter *lpCustomer); CItem* RegisterCancelItem(CCharacter* lpCharacter, TakeType takeType, unsigned long dwPrice, unsigned char cCmd); bool CheckUpdateCount(void); void IncreaseUpdateCount(void) { ++m_cUpdateCount; } bool SendCharStallItemInfo(CSendStream& SendStream); bool IsEmpty() const; protected: enum Const { UPDATE_COUNT = 1 }; unsigned char m_cUpdateCount; // ¾÷µ¥ÀÌÆ® Ä«¿îÆ® (UPDATE_COUNT¸¦ ³Ñ¾î¼­¸é DB¿¡ ¾÷µ¥ÀÌÆ®ÇÑ´Ù.) }; }; #endif