#ifndef __INC_METIN_II_GAME_SHOP_H__ #define __INC_METIN_II_GAME_SHOP_H__ enum { SHOP_MAX_DISTANCE = 1000 }; class CGrid; /* ---------------------------------------------------------------------------------- */ class CShop { public: typedef struct shop_item { BYTE pos; DWORD vnum; // ¾ÆÀÌÅÛ ¹øÈ£ long price; // °¡°İ #ifdef ENABLE_CHEQUE_SYSTEM int cheque; #endif BYTE count; // ¾ÆÀÌÅÛ °³¼ö LPITEM pkItem; int itemid; // ¾ÆÀÌÅÛ °íÀ¯¾ÆÀ̵ğ shop_item() { vnum = 0; price = 0; #ifdef ENABLE_CHEQUE_SYSTEM cheque = 0; #endif count = 0; itemid = 0; pkItem = NULL; } } SHOP_ITEM; CShop(); virtual ~CShop(); bool Create(DWORD dwVnum, DWORD dwNPCVnum, TShopItemTable * pItemTable); void SetShopItems(TShopItemTable * pItemTable, BYTE bItemCount); virtual void SetPCShop(LPCHARACTER ch); virtual bool IsPCShop() { return m_pkPC ? true : false; } virtual bool AddGuest(LPCHARACTER ch,DWORD owner_vid, bool bOtherEmpire); void RemoveGuest(LPCHARACTER ch); virtual int Buy(LPCHARACTER ch, BYTE pos, bool isSearchBuy /*= false*/); void BroadcastUpdateItem(BYTE pos); int GetNumberByVnum(DWORD dwVnum); virtual bool IsSellingItem(DWORD itemID); std::vector GetItemVector() { return m_itemVector; } DWORD GetVnum() { return m_dwVnum; } DWORD GetNPCVnum() { return m_dwNPCVnum; } protected: void Broadcast(const void * data, int bytes); protected: DWORD m_dwVnum; DWORD m_dwNPCVnum; CGrid * m_pGrid; typedef TR1_NS::unordered_map GuestMapType; GuestMapType m_map_guest; std::vector m_itemVector; // ÀÌ »óÁ¡¿¡¼­ Ã뱪ÇÏ´Â ¹°°Çµé LPCHARACTER m_pkPC; #ifdef _OFFSHOP_GORUNTULEME_ DWORD m_dwDisplayedCount; #endif #ifdef OFFLINE_SHOP public: int GetItemCount(); bool GetItems(); void SetLocked(bool val) { m_bLocked = val; } bool IsLocked() { return m_bLocked; } void RemoveGuests(LPCHARACTER except=NULL); void ClearItems(); void SetPrivShopItems(std::vector map_shop); LPCHARACTER GetPC() { return m_pkPC; } protected: bool m_bLocked; #endif }; #endif