diff options
author | n0n4m3 <none@none> | 2009-12-18 06:54:49 +0100 |
---|---|---|
committer | n0n4m3 <none@none> | 2009-12-18 06:54:49 +0100 |
commit | 304f59f2bb18439addc3da1471fae8d6dacbb8b2 (patch) | |
tree | dd0244de98513ac119959e4e5574ecc5ca7f69fd /src/game/PoolHandler.h | |
parent | 6da2105aa9992af48b359c3c3f21d105f4f9cb9b (diff) |
[8667] Correctly respawn pooled object in case the same object is selected for respawn
[8701] Fixes and inprovements in pool system. thx Frankir
--HG--
branch : trunk
Diffstat (limited to 'src/game/PoolHandler.h')
-rw-r--r-- | src/game/PoolHandler.h | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/game/PoolHandler.h b/src/game/PoolHandler.h index 652d8e2cf3b..a3f6755bfde 100644 --- a/src/game/PoolHandler.h +++ b/src/game/PoolHandler.h @@ -40,25 +40,24 @@ struct PoolObject template <class T> class PoolGroup { + typedef std::vector<PoolObject> PoolObjectList; public: - PoolGroup(); + PoolGroup() : m_SpawnedPoolAmount(0) {} ~PoolGroup() {}; bool isEmpty() { return ExplicitlyChanced.empty() && EqualChanced.empty(); } void AddEntry(PoolObject& poolitem, uint32 maxentries); bool CheckPool(void); - uint32 RollOne(void); + void RollOne(int32& index, PoolObjectList** store, uint32 triggerFrom); bool IsSpawnedObject(uint32 guid); void DespawnObject(uint32 guid=0); void Despawn1Object(uint32 guid); - void SpawnObject(uint32 limit, bool cache=false); + void SpawnObject(uint32 limit, uint32 triggerFrom); bool Spawn1Object(uint32 guid); bool ReSpawn1Object(uint32 guid); void RemoveOneRelation(uint16 child_pool_id); private: - typedef std::vector<PoolObject> PoolObjectList; PoolObjectList ExplicitlyChanced; PoolObjectList EqualChanced; - uint32 m_LastDespawnedNode; // Store the guid of the removed creature/gameobject during a pool update uint32 m_SpawnedPoolAmount; // Used to know the number of spawned objects }; @@ -75,7 +74,7 @@ class PoolHandler uint16 IsPartOfAPool(uint32 guid, uint32 type); bool IsSpawnedObject(uint16 pool_id, uint32 guid, uint32 type); bool CheckPool(uint16 pool_id); - void SpawnPool(uint16 pool_id, bool cache=false); + void SpawnPool(uint16 pool_id, uint32 guid, uint32 type); void DespawnPool(uint16 pool_id); void UpdatePool(uint16 pool_id, uint32 guid, uint32 type); void Initialize(); |