diff options
Diffstat (limited to 'src/world.cpp')
-rw-r--r-- | src/world.cpp | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/src/world.cpp b/src/world.cpp index 281cbad..8067fe7 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -71,16 +71,37 @@ World::World(void){ memset(star,0,100*sizeof(vec2)); } +void World::deleteEntities(void){ + while(!mob.empty()){ + delete mob.back(); + mob.pop_back(); + } + while(!npc.empty()){ + delete npc.back(); + npc.pop_back(); + } + while(!build.empty()){ + delete build.back(); + build.pop_back(); + } + while(!object.empty()){ + delete object.back(); + object.pop_back(); + } + while(!entity.empty()) entity.pop_back(); +} + World::~World(void){ + + if(behind){ + delete behind; + } + delete bgTex; delete[] star; delete[] line; - - delete &mob; - delete &npc; - delete &build; - delete &object; - delete &entity; + + deleteEntities(); } void World::generate(unsigned int width){ // Generates the world and sets all variables contained in the World class. @@ -847,12 +868,8 @@ IndoorWorld::~IndoorWorld(void){ delete bgTex; delete[] star; delete[] line; - - delete &mob; - delete &npc; - delete &build; - delete &object; - delete &entity; + + deleteEntities(); } void IndoorWorld::generate(unsigned int width){ // Generates a flat area of width 'width' @@ -917,12 +934,8 @@ Arena::~Arena(void){ delete bgTex; delete[] star; delete[] line; - - delete &mob; - delete &npc; - delete &build; - delete &object; - delete &entity; + + deleteEntities(); } World *Arena::exitArena(Player *p){ |