netpanzer-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netPanzer-CVS] netpanzer/src/NetPanzer/Interfaces PowerUpInter...


From: Ivo Danihelka
Subject: [netPanzer-CVS] netpanzer/src/NetPanzer/Interfaces PowerUpInter...
Date: Sat, 08 Nov 2003 09:22:50 -0500

CVSROOT:        /cvsroot/netpanzer
Module name:    netpanzer
Branch:         
Changes by:     Ivo Danihelka <address@hidden>  03/11/08 09:22:49

Modified files:
        src/NetPanzer/Interfaces: PowerUpInterface.cpp 
                                  PowerUpInterface.hpp 

Log message:
        Fixed powerup updateState crash

Patches:
Index: netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.cpp
diff -u netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.cpp:1.11 
netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.cpp:1.12
--- netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.cpp:1.11        Thu Nov 
 6 15:27:18 2003
+++ netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.cpp     Sat Nov  8 
09:22:49 2003
@@ -37,7 +37,6 @@
 
 PowerUpList PowerUpInterface::powerup_list;
 
-int PowerUpInterface::powerupids = 0;
 int PowerUpInterface::power_up_limit;
 int PowerUpInterface::power_up_regen_time_upper_bound = 300;
 int PowerUpInterface::power_up_regen_time_lower_bound = 60;
@@ -78,6 +77,13 @@
     return( 0 );
 }
 
+void PowerUpList::addWithID(PowerUp *powerup)
+{
+    powerup->powerup_state.ID = id_counter++;
+    push_back(powerup);
+}
+
+//-----------------------------------------------------------------
 void PowerUpInterface::setPowerUpLimits(unsigned long map_size_x,
         unsigned long map_size_y )
 {
@@ -136,8 +142,7 @@
             return;
         }
 
-        power_up->powerup_state.ID = powerupids++;
-        powerup_list.push_back(power_up);
+        powerup_list.addWithID(power_up);
 
         create_mesg.set( power_up->powerup_state.map_loc,
                          power_up->powerup_state.ID,
@@ -205,21 +210,22 @@
         }
     }
 
-    PowerUpList::iterator i;
-    for(i=powerup_list.begin(); i!=powerup_list.end(); i++) {
-        PowerUp* powerup = *i;
+    for (PowerUpList::iterator i = powerup_list.begin();
+            i != powerup_list.end(); i++)
+    {
+        PowerUpList::iterator cur = i;
+        PowerUp* powerup = *cur;
 
         if(powerup->powerup_state.life_cycle_state ==
                 _power_up_lifecycle_state_inactive) {
             delete powerup;
-            
-            powerup_list.erase(i);
-            i = powerup_list.begin();
+            --i;
+            powerup_list.erase(cur);
         } else {
             powerup->updateState();
         }
     }
-}
+ }
 
 void PowerUpInterface::offloadGraphics( SpriteSorter &sorter )
 {
Index: netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.hpp
diff -u netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.hpp:1.4 
netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.hpp:1.5
--- netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.hpp:1.4 Thu Nov  6 
15:27:18 2003
+++ netpanzer/src/NetPanzer/Interfaces/PowerUpInterface.hpp     Sat Nov  8 
09:22:49 2003
@@ -35,6 +35,7 @@
     ~PowerUpList();
 
     PowerUp* find(int ID);
+    void addWithID(PowerUp *powerup);
 };
 
 class PowerUpInterface
@@ -42,7 +43,6 @@
 protected:
     static PowerUpList powerup_list;
 
-    static int powerupids;
     static int power_up_limit;
     static int power_up_regen_time_upper_bound;
     static int power_up_regen_time_lower_bound;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]