Files
2022-10-26 12:25:11 +08:00

60 lines
1.5 KiB
C++

//=============================================================================================================================
/// UnitGroupManager class
/**
@author Kim Min Wook < taiyo@webzen.com >
@since 2006. 7. 31
@note
- << diagram >>
GameField -> UnitGroupManager <>- UnitListOfGroup
NPC -> UnitListOfGroup
@history
*/
//=============================================================================================================================
#pragma once
#include "UnitListOfGroup.h"
typedef STLX_HASH_MAP<UNITGROUPID, UnitListOfGroup *> UNIT_GROUP_HASH;
class UnitGroupManager
{
typedef util::CMemoryPoolFactory<UnitListOfGroup> _POOL;
typedef std::pair<UNITGROUPID, UnitListOfGroup *> _UNIT_GROUP_PAIR;
public:
UnitGroupManager(void);
~UnitGroupManager(void);
void Clear();
static void CreatePool( DWORD dwPoolSize );
UnitListOfGroup * Join( UNITGROUPID id, REGENID regen_id, NPC * pNPC );
BOOL Leave( UNITGROUPID id, REGENID regen_id );
__inline UnitListOfGroup * Find( UNITGROUPID id )
{
UNIT_GROUP_HASH::iterator it = m_Hash.find( id );
if( it != m_Hash.end() )
return it->second;
return NULL;
}
// µð¹ö±×¿ë
__inline int GetCount() { return (int)m_Hash.size(); }
private:
__inline UnitListOfGroup * create( UNITGROUPID id )
{
UnitListOfGroup * pGroup = UnitListOfGroup::ALLOC();
//pGroup->SetGroupID( id );
m_Hash[id] = pGroup;
return pGroup;
}
__inline void destroy( _UNIT_GROUP_PAIR value_type )
{
UnitListOfGroup::FREE(value_type.second);
}
UNIT_GROUP_HASH m_Hash;
static _POOL m_Pool;
};