diff options
Diffstat (limited to 'src/game/PoolHandler.h')
-rw-r--r-- | src/game/PoolHandler.h | 68 |
1 files changed, 31 insertions, 37 deletions
diff --git a/src/game/PoolHandler.h b/src/game/PoolHandler.h index b920db5f7d2..747dae62edb 100644 --- a/src/game/PoolHandler.h +++ b/src/game/PoolHandler.h @@ -36,11 +36,37 @@ struct PoolObject PoolObject(uint32 _guid, float _chance): guid(_guid), chance(fabs(_chance)), spawned(false) {} }; -class PoolHandler +template <class T> +class PoolGroup { - template <class T> class PoolGroup; - class Pool; + public: + PoolGroup(); + ~PoolGroup() {}; + bool isEmpty() { return ExplicitlyChanced.size()==0 && EqualChanced.size()==0; } + void AddEntry(PoolObject& poolitem, uint32 maxentries); + bool CheckPool(void); + uint32 RollOne(void); + bool IsSpawnedObject(uint32 guid); + void DespawnObject(uint32 guid=0); + void Despawn1Object(uint32 guid); + void SpawnObject(uint32 limit, bool cache=false); + bool Spawn1Object(uint32 guid); + bool ReSpawn1Object(uint32 guid); + void RemoveOneRelation(uint16 child_pool_id); + private: + typedef std::vector<PoolObject> PoolObjectList; + uint32 CacheValue; // Store the guid of the removed creature/gameobject during a pool update + PoolObjectList ExplicitlyChanced; + PoolObjectList EqualChanced; + uint32 Spawned; // Used to know the number of spawned objects +}; +class Pool // for Pool of Pool case +{ +}; + +class PoolHandler +{ public: PoolHandler(); ~PoolHandler() {}; @@ -53,15 +79,13 @@ class PoolHandler void UpdatePool(uint16 pool_id, uint32 guid, uint32 type); void Initialize(); - private: - protected: bool isSystemInit; uint16 max_pool_id; typedef std::vector<PoolTemplateData> PoolTemplateDataMap; - typedef std::vector<PoolGroup<Creature> > PoolGroupCreatureMap; + typedef std::vector<PoolGroup<Creature> > PoolGroupCreatureMap; typedef std::vector<PoolGroup<GameObject> > PoolGroupGameObjectMap; - typedef std::vector<PoolGroup<Pool> > PoolGroupPoolMap; + typedef std::vector<PoolGroup<Pool> > PoolGroupPoolMap; typedef std::pair<uint32, uint16> SearchPair; typedef std::map<uint32, uint16> SearchMap; @@ -75,35 +99,5 @@ class PoolHandler }; -template <class T> -class PoolHandler::PoolGroup -{ - public: - PoolGroup(); - ~PoolGroup() {}; - bool isEmpty() { return ExplicitlyChanced.size()==0 && EqualChanced.size()==0; } - void AddEntry(PoolObject& poolitem, uint32 maxentries); - bool CheckPool(void); - uint32 RollOne(void); - bool IsSpawnedObject(uint32 guid); - void DespawnObject(uint32 guid=0); - void Despawn1Object(uint32 guid); - void SpawnObject(uint32 limit, bool cache=false); - bool Spawn1Object(uint32 guid); - bool ReSpawn1Object(uint32 guid); - void RemoveOneRelation(uint16 child_pool_id); - private: - typedef std::vector<PoolObject> PoolObjectList; - uint32 CacheValue; // Store the guid of the removed creature/gameobject during a pool update - PoolObjectList ExplicitlyChanced; - PoolObjectList EqualChanced; - uint32 Spawned; // Used to know the number of spawned objects - -}; - -class PoolHandler::Pool -{ -}; - #define poolhandler MaNGOS::Singleton<PoolHandler>::Instance() #endif |