From d16d0a7ab75ca2b63de55a3e68ea58075c42277d Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Sun, 20 Oct 2013 13:33:23 +0200 Subject: Fixed memory leaks in cMobSpawner. --- source/MobSpawner.h | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'source/MobSpawner.h') diff --git a/source/MobSpawner.h b/source/MobSpawner.h index bb9e95172..ba2a18f2e 100644 --- a/source/MobSpawner.h +++ b/source/MobSpawner.h @@ -7,12 +7,20 @@ #include "FastRandom.h" #include "Mobs/Monster.h" //this is a side-effect of keeping Mobfamily inside Monster class. I'd prefer to keep both (Mobfamily and Monster) inside a "Monster" namespace MG TODO : do it + + + +// fwd: class cChunk; -// This class is used to determine wich monster can be spawned on wich place -// it is essentially static (f.i. Squids spawn in water, Zombie spawn in dark places) -// but it also has dynamic part depending on the world.ini + + + +/** This class is used to determine which monster can be spawned in which place +it is essentially static (eg. Squids spawn in water, Zombies spawn in dark places) +but it also has dynamic part depending on the world.ini settings. +*/ class cMobSpawner { public : @@ -21,26 +29,26 @@ public : // a_AllowedTypes is the set of types allowed for mobs it will spawn. Empty set // would result in no spawn at all // Allowed mobs thah are not of the right Family will not be include (no warning) - cMobSpawner(cMonster::eFamily MobFamily, const std::set& a_AllowedTypes); + cMobSpawner(cMonster::eFamily MobFamily, const std::set & a_AllowedTypes); - // Check if specified block can be a Pack center for this spawner + /// Check if specified block can be a Pack center for this spawner bool CheckPackCenter(BLOCKTYPE a_BlockType); // Try to create a monster here // if this is the first of a Pack : determine the type of monster - // BlockType & BlockMeta are use to know what kind of Mob can Spawn here + // BlockType & BlockMeta are used to decide what kind of Mob can Spawn here // MaxPackSize is set to the maximal size for a pack this type of mob - cMonster* TryToSpawnHere(BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, BLOCKTYPE a_BlockType_below, NIBBLETYPE a_BlockMeta_below, BLOCKTYPE a_BlockType_above, NIBBLETYPE a_BlockMeta_above, EMCSBiome a_Biome, int a_Level, int& a_MaxPackSize); + cMonster * TryToSpawnHere(BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta, BLOCKTYPE a_BlockType_below, NIBBLETYPE a_BlockMeta_below, BLOCKTYPE a_BlockType_above, NIBBLETYPE a_BlockMeta_above, EMCSBiome a_Biome, int a_Level, int& a_MaxPackSize); // mark the beginning of a new Pack // all mobs of the same Pack are the same type - void NewPack(); + void NewPack(void); // return true if there is at least one allowed type - bool CanSpawnSomething(); + bool CanSpawnAnything(void); - typedef const std::set tSpawnedContainer; - tSpawnedContainer& getSpawned(); + typedef const std::set tSpawnedContainer; + tSpawnedContainer & getSpawned(void); protected : // return true if specified type of mob can spawn on specified block @@ -51,7 +59,7 @@ protected : cMonster::eType ChooseMobType(EMCSBiome a_Biome); // add toAdd inside toAddIn, if toAdd is in m_AllowedTypes - void addIfAllowed(cMonster::eType toAdd, std::set& toAddIn); + void addIfAllowed(cMonster::eType toAdd, std::set & toAddIn); protected : cMonster::eFamily m_MonsterFamily; @@ -60,13 +68,8 @@ protected : cMonster::eType m_MobType; std::set m_Spawned; cFastRandom m_Random; +} ; -public : - typedef const std::set tMobTypes; // MG TODO : maybe relocate all those statics set/maps in the same place ? - static tMobTypes& m_MobTypes(); -protected : - static tMobTypes initMobTypesBeforeCx11(); -}; -- cgit v1.2.3