-optimized and cleaned up collision_object_map
[supertux.git] / src / player.cpp
index fe5604f..afc4eb5 100644 (file)
@@ -371,7 +371,7 @@ Player::handle_horizontal_input()
 void
 Player::handle_vertical_input()
 {
-  if(input.up == DOWN)
+  if(input.up == DOWN && input.old_up == UP)
     {
       if (on_ground())
         {
@@ -410,6 +410,7 @@ Player::handle_input()
     {
       handle_vertical_input();
     }
+  input.old_up = input.up;
 
   /* Shoot! */
 
@@ -455,6 +456,8 @@ Player::handle_input()
       duck = false;
       base.y -= 32;
       base.height = 64;
+      // changing base size confuses collision otherwise
+      old_base = previous_base = base;                        
     }
 }
 
@@ -467,13 +470,6 @@ Player::grow()
   size = BIG;
   base.height = 64;
   base.y -= 32;
-  // eventually go in duck mode if there's no space
-  if(collision_object_map(base))
-    {
-      base.height = 32;
-      base.y += 32;
-      duck = true;
-    }
 
   old_base = previous_base = base;
 }