[cppcheck] Part 2: Some further style fixes etc.
[supertux.git] / src / object / trampoline.cpp
index e097dcd..b8d20ad 100644 (file)
@@ -36,19 +36,31 @@ Trampoline::Trampoline(const Reader& lisp) :
   Rock(lisp, "images/objects/trampoline/trampoline.sprite"),
   portable(true)
 {
-  sound_manager->preload(TRAMPOLINE_SOUND);
+  SoundManager::current()->preload(TRAMPOLINE_SOUND);
 
   //Check if this trampoline is not portable
   if(lisp.get("portable", portable)) {
     if(!portable) {
       //we need another sprite
       sprite_name = "images/objects/trampoline/trampoline_fix.sprite";
-      sprite = sprite_manager->create(sprite_name);
+      sprite = SpriteManager::current()->create(sprite_name);
       sprite->set_action("normal");
     }
   }
 }
 
+Trampoline::Trampoline(const Vector& pos, bool port) :
+  Rock(pos, "images/objects/trampoline/trampoline.sprite"),
+  portable(port)
+{
+  SoundManager::current()->preload(TRAMPOLINE_SOUND);
+  if(!port) {
+    sprite_name = "images/objects/trampoline/trampoline_fix.sprite";
+    sprite = SpriteManager::current()->create(sprite_name);
+    sprite->set_action("normal");
+  }
+}
+
 void
 Trampoline::update(float elapsed_time)
 {
@@ -71,13 +83,12 @@ Trampoline::collision(GameObject& other, const CollisionHit& hit)
       float vy = player->get_physic().get_velocity_y();
       //player is falling down on trampoline
       if(hit.top && vy >= 0) {
-        if(player->get_controller()->hold(Controller::JUMP)) {
-          vy = VY_MIN;
-        } else {
-          vy = VY_INITIAL;
-        }
+        if (!(player->get_status()->bonus == AIR_BONUS))
+          vy = player->get_controller()->hold(Controller::JUMP) ? VY_MIN : VY_INITIAL;
+        else
+          vy = player->get_controller()->hold(Controller::JUMP) ? VY_MIN - 300 : VY_INITIAL - 40;
         player->get_physic().set_velocity_y(vy);
-        sound_manager->play(TRAMPOLINE_SOUND);
+        SoundManager::current()->play(TRAMPOLINE_SOUND);
         sprite->set_action("swinging", 1);
         return FORCE_MOVE;
       }
@@ -90,7 +101,7 @@ Trampoline::collision(GameObject& other, const CollisionHit& hit)
       if(hit.top && vy >= 0) {
         vy = VY_INITIAL;
         walking_badguy->set_velocity_y(vy);
-        sound_manager->play(TRAMPOLINE_SOUND);
+        SoundManager::current()->play(TRAMPOLINE_SOUND);
         sprite->set_action("swinging", 1);
         return FORCE_MOVE;
       }
@@ -122,6 +133,4 @@ Trampoline::is_portable() const
   return Rock::is_portable() && portable;
 }
 
-IMPLEMENT_FACTORY(Trampoline, "trampoline");
-
 /* EOF */