Fix for coverity #29401
[supertux.git] / src / object / coin_rain.cpp
index 41f4529..66a67af 100644 (file)
 static const float DROP_TIME = .1f; // time duration between "drops" of coin rain
 
 CoinRain::CoinRain(const Vector& pos, bool emerge) :
-  sprite(),
-  position(pos), 
+  sprite(SpriteManager::current()->create("images/objects/coin/coin.sprite")),
+  position(pos),
   emerge_distance(0),
   timer(),
   counter(0),
   drop(0)
 {
-  sprite = sprite_manager->create("images/objects/coin/coin.sprite");
-
   if(emerge) {
     emerge_distance = sprite->get_height();
   }
@@ -50,7 +48,7 @@ CoinRain::update(float elapsed_time)
   } // then the first collectable coin drops from one of ten random positions
   else if (counter==0){
     drop = gameRandom.rand(10);
-    Sector::current()->add_object(new HeavyCoin(Vector (position.x+32*((drop<5)?-drop-1:drop-4),-32), Vector (0,0)));
+    Sector::current()->add_object(std::make_shared<HeavyCoin>(Vector (position.x+32*((drop<5)?-drop-1:drop-4),-32), Vector (0,0)));
     counter++;
     timer.start(DROP_TIME);
   } // finally the remainder of the coins drop in a determined but appears to be a random order
@@ -58,7 +56,7 @@ CoinRain::update(float elapsed_time)
     if(counter<10){
       drop += 7;
       if(drop >= 10) drop -=10;
-      Sector::current()->add_object(new HeavyCoin(Vector (position.x+32*((drop<5)?-drop-1:drop-4),-32), Vector (0,0)));
+      Sector::current()->add_object(std::make_shared<HeavyCoin>(Vector (position.x+32*((drop<5)?-drop-1:drop-4),-32), Vector (0,0)));
       counter++;
       timer.start(DROP_TIME);
     }else{