[Orxonox-commit 5928] r10587 - code/branches/towerdefenseFabien/src/modules/towerdefense

landauf at orxonox.net landauf at orxonox.net
Tue Sep 15 16:43:03 CEST 2015


Author: landauf
Date: 2015-09-15 16:43:03 +0200 (Tue, 15 Sep 2015)
New Revision: 10587

Modified:
   code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.cc
   code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.h
Log:
use list instead of vector - list is better suited for removing elements

Modified: code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.cc	2015-09-15 12:20:34 UTC (rev 10586)
+++ code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.cc	2015-09-15 14:43:03 UTC (rev 10587)
@@ -319,22 +319,16 @@
 
         //if ships are at the end they get destroyed
 
-        std::vector<orxonox::WeakPtr<TowerDefenseEnemy> >::iterator itBegin = enemies_.begin();
-        std::vector<orxonox::WeakPtr<TowerDefenseEnemy> >::iterator it = itBegin;
-        std::vector<orxonox::WeakPtr<TowerDefenseEnemy> >::iterator itEnd = enemies_.end();
-
-        while(it != itEnd)
+        for (std::list<WeakPtr<TowerDefenseEnemy> >::iterator it = enemies_.begin(); it != enemies_.end(); )
         {
             //destroys enemys at the end of the path and reduces the life by 1. No credits gifted
             Vector3 ship = (*it)->getRVWorldPosition();
             float distance = ship.distance(endpoint_);
             if(distance < 50)
             {
-                std::vector<orxonox::WeakPtr<TowerDefenseEnemy> >::iterator itTemp = it;
-                ++ it;
                 orxout() << "enemy deleted" << endl;                
-                enemies_.erase(itTemp);
-                (*itTemp)->destroy();
+                (*it)->destroy();
+                enemies_.erase(it++);
                 this->reduceLifes(1);
                 if (this->getLifes() == 0)
                 {

Modified: code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.h
===================================================================
--- code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.h	2015-09-15 12:20:34 UTC (rev 10586)
+++ code/branches/towerdefenseFabien/src/modules/towerdefense/TowerDefense.h	2015-09-15 14:43:03 UTC (rev 10587)
@@ -95,7 +95,7 @@
         int waves_;
         int lifes_;
         Timer nextwaveTimer_;
-        std::vector<orxonox::WeakPtr<TowerDefenseEnemy> > enemies_;
+        std::list<orxonox::WeakPtr<TowerDefenseEnemy> > enemies_;
         TowerDefenseField* fields_[16][16];
         std::vector<orxonox::WeakPtr<TowerDefenseField> > waypoints_;
         Vector3 endpoint_;




More information about the Orxonox-commit mailing list