Graphics for powerups: airflower and earthflower
[supertux.git] / src / object / powerup.cpp
index 686b407..f376d74 100644 (file)
@@ -51,6 +51,10 @@ PowerUp::PowerUp(const Reader& lisp) :
     lightsprite->set_color(Color(0.3f, 0.0f, 0.0f));
   } else if (sprite_name == "images/powerups/iceflower/iceflower.sprite") {
     lightsprite->set_color(Color(0.0f, 0.1f, 0.2f));
+  } else if (sprite_name == "images/powerups/airflower/airflower.sprite") {
+    lightsprite->set_color(Color(0.15f, 0.0f, 0.15f));
+  } else if (sprite_name == "images/powerups/earthflower/earthflower.sprite") {
+    lightsprite->set_color(Color(0.0f, 0.3f, 0.0f));
   } else if (sprite_name == "images/powerups/star/star.sprite") {
     lightsprite->set_color(Color(0.4f, 0.4f, 0.4f));
   }
@@ -77,6 +81,10 @@ PowerUp::PowerUp(const Vector& pos, const std::string& sprite_name_) :
     lightsprite->set_color(Color(0.3f, 0.0f, 0.0f));
   } else if (sprite_name == "images/powerups/iceflower/iceflower.sprite") {
     lightsprite->set_color(Color(0.0f, 0.1f, 0.2f));
+  } else if (sprite_name == "images/powerups/airflower/airflower.sprite") {
+    lightsprite->set_color(Color(0.15f, 0.0f, 0.15f));
+  } else if (sprite_name == "images/powerups/earthflower/earthflower.sprite") {
+    lightsprite->set_color(Color(0.0f, 0.3f, 0.0f));
   } else if (sprite_name == "images/powerups/star/star.sprite") {
     lightsprite->set_color(Color(0.4f, 0.4f, 0.4f));
   }
@@ -120,6 +128,14 @@ PowerUp::collision(GameObject& other, const CollisionHit&)
     if(!player->add_bonus(ICE_BONUS, true))
       return FORCE_MOVE;
     SoundManager::current()->play("sounds/fire-flower.wav");
+  } else if (sprite_name == "images/powerups/airflower/airflower.sprite") {
+    if(!player->add_bonus(AIR_BONUS, true))
+      return FORCE_MOVE;
+    SoundManager::current()->play("sounds/fire-flower.wav");
+  } else if (sprite_name == "images/powerups/earthflower/earthflower.sprite") {
+    if(!player->add_bonus(EARTH_BONUS, true))
+      return FORCE_MOVE;
+    SoundManager::current()->play("sounds/fire-flower.wav");
   } else if (sprite_name == "images/powerups/star/star.sprite") {
     player->make_invincible();
   } else if (sprite_name == "images/powerups/1up/1up.sprite") {
@@ -151,11 +167,13 @@ PowerUp::update(float elapsed_time)
           Vector ppos = Vector(px, py);
           Vector pspeed = Vector(0, 0);
           Vector paccel = Vector(0, 0);
-          Sector::current()->add_object(new SpriteParticle("images/objects/particles/sparkle.sprite",
-                                                          // draw bright sparkles when very close to Tux, dark sparkles when slightly further
-                                                          (disp_x*disp_x + disp_y*disp_y <= 128*128) ?
-                                                          // make every other a longer sparkle to make trail a bit fuzzy
-                                                          (size_t(game_time*20)%2) ? "small" : "medium" : "dark", ppos, ANCHOR_MIDDLE, pspeed, paccel, LAYER_OBJECTS+1+5));
+          Sector::current()->add_object(std::make_shared<SpriteParticle>(
+                                          "images/objects/particles/sparkle.sprite",
+                                          // draw bright sparkles when very close to Tux, dark sparkles when slightly further
+                                          (disp_x*disp_x + disp_y*disp_y <= 128*128) ?
+                                          // make every other a longer sparkle to make trail a bit fuzzy
+                                          (size_t(game_time*20)%2) ? "small" : "medium" : "dark",
+                                          ppos, ANCHOR_MIDDLE, pspeed, paccel, LAYER_OBJECTS+1+5));
         }
       }
     }