Keep dead Tux small, resolves bug#638 and issue#5
[supertux.git] / src / object / player.cpp
index 427c653..538e205 100644 (file)
@@ -335,6 +335,7 @@ Player::update(float elapsed_time)
   no_water = true;
 
   if(dying && dying_timer.check()) {
+    set_bonus(NO_BONUS, true);
     dead = true;
     return;
   }
@@ -384,7 +385,7 @@ Player::update(float elapsed_time)
   // check if we landed
   if(on_ground()) {
     jumping = false;
-    if (backflipping && (!backflip_timer.started())) {
+    if (backflipping && (backflip_timer.get_timegone() > 0.15f)) {
       backflipping = false;
       backflip_direction = 0;
 
@@ -636,7 +637,7 @@ Player::do_backflip() {
   backflipping = true;
   do_jump(-580);
   sound_manager->play("sounds/flip.wav");
-  backflip_timer.start(0.15f);
+  backflip_timer.start(TUX_BACKFLIP_TIME);
 }
 
 void
@@ -829,6 +830,12 @@ Player::handle_input()
       log_debug << "Non MovingObject grabbed?!?" << std::endl;
     }
   }
+
+  /* stop backflipping at will */
+  if( backflipping && ( !controller->hold(Controller::JUMP) && !backflip_timer.started()) ){
+    backflipping = false;
+    backflip_direction = 0;
+  }
 }
 
 void