/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2007.07.02 * ³» ¿ë : ¾ÆÀÌÅÛ °ü¸®ÀÚ * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Item_Common.h" #include "ItemScript.h" class cItemDefine; class cItemAbility; class cItemLimit; class cItemCard; class cItemSetInfo; class cItemTarot; class cItemSpread; struct sItemDisjoint; struct sItemPutCardSlot; typedef tPointerArray cEnhancedOptionArr; /// npc ¾ÆÀÌÅÛ »óÁ¡ ÅÇ °¹¼ö const int NPCSTORE_SLOT_COUNT = 10; // ¼ö·ÉÇÔ ½½·Ô °¹¼ö const int RECEIPT_SLOT_COUNT = 100; enum eNotInvenSlotIndex { /// ¾ÆÀÌÅÛ Npc »óÁ¡ ½½·Ô NPCSTORE_SLOT_BEGIN = MAX_INVENTORY + 1, NPCSTORE_SLOT_END = NPCSTORE_SLOT_BEGIN + NPCSTORE_SLOT_COUNT - 1, /// Ä«µåÀåÂø ¾ÆÀÌÅÛ ½½·Ô PUTCARD_ITEM_SLOT, PUTCARD_CARD_SLOT_BEGIN, PUTCARD_CARD_SLOT_END = PUTCARD_CARD_SLOT_BEGIN + MAX_CARD_SLOT - 1, /// ¾ÆÀÌÅÛ¸ô ¼ö·ÉÇÔ RECEIPT_SLOT_BEGIN, RECEIPT_SLOT_END = RECEIPT_SLOT_BEGIN + RECEIPT_SLOT_COUNT - 1, NOTINVENSLOT_MAX, }; /// Àκ¥Å丮 ÀåÂø ½½·Ô const int EQUIP_SLOT_COUNT = INVENTORY_EQUIP_END - INVENTORY_WEAR_BEGIN + 1; /// Àκ¥Å丮 ½¬Æ® ½½·Ô const int INVENSHEET_SLOT_COUNT = INVENTORY_BAG0_END - INVENTORY_BAG0_BEGIN + 1; /// Àκ¥Å丮 °¡¹æ ½½·Ô const int BAG_SLOT_COUNT = INVENTORY_BAG1_END - INVENTORY_BAG1_BEGIN + 1; /// ¾ÆÀÌÅÛ Ã¢°í ½½·Ô const int WAREHOUSE_SLOT_COUNT = INVENTORY_WAREHOUSE0_END - INVENTORY_WAREHOUSE0_BEGIN + 1; /// ¾ÆÀÌÅÛ ½½·Ô const int ITEM_SLOT_COUNT = MAX_INVENTORY + NOTINVENSLOT_MAX + 1; /// ¾ÆÀÌÅÛ ½½·Ô ¼Ò¼Ó /// °¢½½·ÔÀÌ ¾î´À â¿¡ ¼ÓÇÏ´ÂÁö ¾Ë¼ö ÀÖÀ½. enum eItemIn { ITEM_IN_NULL = 0, ITEM_IN_EQUIP, ITEM_IN_INVEN_PRIVATE, ITEM_IN_INVEN_QUEST, ITEM_IN_INVEN_MALL, ITEM_IN_WAREHOUSE_PRIVATE, ITEM_IN_WAREHOUSE_MALL, ITEM_IN_NPCSTORE, ITEM_IN_USERSELL, ITEM_IN_PUTCARD_ITEMSLOT, ITEM_IN_PUTCARD_CARDSLOT, }; // ¾ÆÀÌÅÛ Á¦ÇÑ Ã¼Å© enum { ITEMLIMIT_SUCCESS = 0, ITEMLIMIT_ERROR, ITEMLIMIT_RACE, /// Á¾Á· ITEMLIMIT_GENDER, /// ¼ºº° ITEMLIMIT_JOB, /// Á÷¾÷ ITEMLIMIT_LEVEL, /// ·¹º§ ITEMLIMIT_PVPONLY, /// ÀüÀå ITEMLIMIT_TUTORIALONLY, /// Æ©Å丮¾ó ITEMLIMIT_FORCETYPE, /// ¼¼·Â ¿À·ù ITEMLIMIT_MAKESKILL, /// Àü¹®Á÷¾÷ ¿À·ù ITEMLIMIT_MIXSKILLSTEP, /// Àü¹®Á÷¾÷ ´Ü°è ¿¡·¯ ITEMLIMIT_MIXRECIPESTEP, /// ·¹½ÃÇÇÀÇ ¿ä±¸´Ü°è ¿¡·¯ ITEMLIMIT_MIXRECIPEEXP, /// ¼÷·Ãµµ ¿¡·¯ // ITEMLIMIT_HAVETITLE, /// À̹̼ÒÀ¯ÇÑ È£Äª }; struct sDealCategory { char mHighKey; /// ´ëºÐ·ù short mMiddleKey; /// Áߺзù sDealCategory() { mHighKey = 0; mMiddleKey = 0; } }; struct sChangeCount { unsigned long itemIdx; int total; sChangeCount() { itemIdx = 0; total = 0; } }; // ¾ÆÀÌÅÛ °¹¼ö Á¤º¸ struct sItemCount { int bag; //ÀåÂø+°¡¹æ int warehouse; //â°í int total; //¸ðµç ÇÕ sItemCount() { bag = 0; warehouse = 0; total = 0; } }; /// ¾ÆÀÌÅÛ °ü¸®ÀÚ class cItemManager { static cItemManager* mSingleton; public: /// Á¤º¸ ( text index, ºÐ·ù ¸®½ºÆ® ) typedef tPair cDataPair; public: cItemManager(); ~cItemManager(); static cItemManager* GetSingleton(); /// ÃʱâÈ­ bool Init(); cItemDefine* GetItemDefine( unsigned long itemIndex ); cItemAbility* GetItemAbility( unsigned long itemIndex ); cItemSetInfo* GetItemSetInfo( unsigned int setIndex ); cItemLimit* GetItemLimit( unsigned long itemIndex ); cItemCard* GetItemCard( unsigned long itemIndex ); cItemTarot* GetItemTarot( unsigned long itemIndex ); cItemSpread* GetItemSpread( unsigned long itemIndex ); sItemDisjoint* GetItemDisjoint( unsigned long index ); cEnhancedOptionArr* GetItemEnhanced( unsigned long index ); sItemPutCardSlot* GetItemPutCardSlot( unsigned long index ); protected: /// ·Îµù bool LoadDefine( const cString& pathName ); bool LoadAbility( const cString& pathName ); bool LoadLimit( const cString& pathName ); bool LoadCard( const cString& pathName ); bool LoadTarot( const cString& pathName ); bool LoadSpread( const cString& pathName ); bool LoadNpcStore( const cString& pathName ); bool LoadDisjoint( const cString& pathName ); bool LoadEnhanced( const cString& pathName ); bool LoadCardSlot( const cString& pathName ); bool LoadItemSet( const cString& pathName ); protected: /// ¾ÆÀÌÅÛ Á¤ÀÇ typedef tHashMap cDefineMap; cDefineMap mDefineMap; /// ¾ÆÀÌÅÛ ´É·Â typedef tHashMap cAbilityMap; cAbilityMap mAbilityMap; /// ¾ÆÀÌÅÛ Á¦ÇÑ typedef tHashMap cLimitMap; cLimitMap mLimitMap; /// ¾ÆÀÌÅÛ Ä«µå typedef tHashMap cCardMap; cCardMap mCardMap; /// ¾ÆÀÌÅÛ Å¸·Ô typedef tHashMap cTarotMap; cTarotMap mTarotMap; /// ¾ÆÀÌÅÛ ½ºÇÁ·¹µå typedef tHashMap cSpreadMap; cSpreadMap mSpreadMap; /// ¾ÆÀÌÅÛ ºÐÇØ µ¥ÀÌÅÍ typedef tHashMap cDisjointMap; cDisjointMap mDisjointMap; /// ¾ÆÀÌÅÛ °­È­ µ¥ÀÌÅÍ typedef tHashMap cEnhancedMap; cEnhancedMap mEnhancedMap; /// Ä«µå ½½·Ô µ¥ÀÌÅÍ typedef tHashMap cPutCardSlotMap; cPutCardSlotMap mPutCardSlotMap; /// ¾ÆÀÌÅÛ ¼¼Æ® µ¥ÀÌÅÍ typedef tPointerHashMap cSetInfoMap; cSetInfoMap mSetInfoMap; }; inline cItemManager* cItemManager::GetSingleton() { return mSingleton; } #define ITEMMAN cItemManager::GetSingleton()