#ifndef _VIRTUAL_AREA_MONSTER_MANAGER_H_ #define _VIRTUAL_AREA_MONSTER_MANAGER_H_ #pragma once #pragma warning(disable:4800) #include #include #include #include // Àü¹æ ÂüÁ¶ class CCreature; class CAggresiveCreature; class CCharacter; class CMonster; struct Position; // Singleton ¾Æ´Ô!! class CVirtualMonsterMgr { public: CVirtualMonsterMgr(); ~CVirtualMonsterMgr(); enum eAdminMonster { NO_BLANK_UID = 0x8FFF, INIT_UID = 0x8FFE }; bool AddMonster(CMonster* lpMonster); CCreature* GetCreature(unsigned long dwCID); CAggresiveCreature* GetAggresiveCreature(unsigned long dwCID); CMonster* GetMonster(unsigned long dwCID); bool IsSummonee(unsigned long dwCID); bool SummonMonster(int nKID, Position Pos, CCharacter* lpMaster); bool AdminSummonMonster(int nKID, Position Pos, unsigned short wMapIndex); void ProcessAllMonster(); void ProcessMonsterRegenHPAndMP(); void ProcessSummonMonsterDead(void); unsigned short GetAvailableMonsterUID(unsigned short wKindID); unsigned short GetMonsterNum(void) { return static_cast(m_MonsterMap.size()); } // Type Á¤ÀÇ typedef std::map, boost::fast_pool_allocator > > MonsterMap; typedef std::map AdminMonsterUIDMap; // < KindID, NextUID(»óÀ§16ºñÆ®) > MonsterMap& GetMonsterMap() { return m_MonsterMap; } private: void DestroyMonsterList(); MonsterMap m_MonsterMap; AdminMonsterUIDMap m_AdminMonsterUIDMap; // ·é ¿ÀÇÁ ¼Òȯ ¸ó½ºÅÍ Ä«¿îÅÍ ¼ö unsigned short m_usSummonCount; }; #endif // _VIRTUAL_AREA_MONSTER_MANAGER_H_