//============================================================================================================================= /// UnitRegenManager class /** @author Kim Min Wook < taiyo@webzen.com > @since 2006. 7. 31 @note - Field°¡ ÃʱâÈ­µÉ¶§, Init()µÈ´Ù. Áï, ¸®Á¨µÉ ¸ó½ºÅ͵é Á¤º¸°¡ m_WaitingHash¿¡ Ãß°¡µÈ´Ù. - Update() ¸¶´Ù ÁöÁ¨ ¿©ºÎ ŸÀӾƿô üũ ÈÄ, ¸®Á¨½ÃŲ´Ù. GameField->EnterField(); - FieldÀÇ NPCÀÇ Update()°¡ False¸é UnitRegenManager¿¡ AddOnWaiting()ÇÔ @todo - UnitRegen°ü·Ã->Regen°ü·ÃÀ¸·Î º¯°æÇÒ ¿¹Á¤ - ObjectManagerÀÇ ¸ó½ºÅÍ Ã³¸®¸¦ Á¦°ÅÇÒ ¿¹Á¤ : ³Ê¹« ²¿¿© ÀÖÀ½;; @history */ //============================================================================================================================= #pragma once #include ".\UnitRegenInfoManager.h" #include "UnitRegen.h" #include #include class GameField; class Monster; class RegenLocation; typedef STLX_SET SET_SECTOR_REGEN; typedef SET_SECTOR_REGEN::iterator SET_SECTOR_REGEN_ITR; class UnitRegenManager { typedef util::CMemoryPoolFactory _POOL; typedef STLX_HASH_MAP UNITREGEN_HASH; typedef std::pair UNITREGEN_PAIR; public: UnitRegenManager(void); ~UnitRegenManager(void){} static void CreatePool( DWORD dwPoolSize ); void Init( GameField * pField, UnitRegenInfoManager * pInfo, bool bPreRegen ); void Release(); __inline UnitRegen * Find( REGENID id ) { UNITREGEN_HASH::iterator it = m_WaitingUnitRegenHash.find(id); if( it != m_WaitingUnitRegenHash.end() ) return it->second; return NULL; } void Update(); int GetCount() const { return (int)m_WaitingUnitRegenHash.size(); } // ƯÁ¤ ¸®Á¨½Ã°£À» ³Ñ±æ ¼ö ÀÖÀ½ void AddOnWaiting( REGENID id, DWORD SomeRegenTime = 0 ); void SpawnSector( DWORD dwSectorIndex ); private: bool Spawn( UnitRegenInfo * pUnitInfo ); //_NA_0_20100706_RANDOM_REGEN »èÁ¦ void Insert( REGENID id, UnitRegen * p ) { m_WaitingUnitRegenHash.insert( UNITREGEN_HASH::value_type(id, p) ); } void SpawnAll( UNITREGENINFO_PAIR value_type ); void free( UNITREGEN_PAIR value_type ); private: __PTR_PROPERTY( GameField, GameField ); __PTR_PROPERTY( UnitRegenInfoManager, UnitRegenInfoManager ); UNITREGEN_HASH m_WaitingUnitRegenHash; static _POOL m_Pool; bool m_bPreRegen; SET_SECTOR_REGEN m_setRegenSector; // ±× ¼½ÅÍÀÇ ¸®Á¨À» ¿Ï·áÇß´ÂÁö ¿©ºÎ };