Only draw Tux' arm in front of other objects if he's actually holding something ...
[supertux.git] / src / object / player.cpp
index 31cac18..b332cae 100644 (file)
@@ -51,6 +51,8 @@
 #include "object/sprite_particle.hpp"
 #include "trigger/climbable.hpp"
 
+//#define DO_SWIMMING
+
 static const int TILES_FOR_BUTTJUMP = 3;
 static const float SHOOTING_TIME = .150f;
 /// time before idle animation starts
@@ -112,16 +114,16 @@ TuxBodyParts::set_action(std::string action, int loops)
 }
 
 void
-TuxBodyParts::draw(DrawingContext& context, const Vector& pos, int layer)
+TuxBodyParts::draw(DrawingContext& context, const Vector& pos, int layer, Portable* grabbed_object)
 {
   if(head != NULL)
-    head->draw(context, pos, layer-1);
+    head->draw(context, pos, layer-2);
   if(body != NULL)
-    body->draw(context, pos, layer-3);
+    body->draw(context, pos, layer-4);
   if(arms != NULL)
-    arms->draw(context, pos, layer+10);
+    arms->draw(context, pos, layer-1 + (grabbed_object?10:0));
   if(feet != NULL)
-    feet->draw(context, pos, layer-2);
+    feet->draw(context, pos, layer-3);
 }
 
 Player::Player(PlayerStatus* _player_status, const std::string& name)
@@ -601,11 +603,13 @@ Player::handle_vertical_input()
 
   // swimming
   physic.set_acceleration_y(0);
+#ifdef SWIMMING
   if (swimming) {
     if (controller->hold(Controller::UP) || controller->hold(Controller::JUMP))
       physic.set_acceleration_y(-2000);
     physic.set_velocity_y(physic.get_velocity_y() * 0.94);
   }
+#endif
 }
 
 void
@@ -1022,7 +1026,7 @@ Player::draw(DrawingContext& context)
   else if (safe_timer.started() && size_t(game_time*40)%2)
     ;  // don't draw Tux
   else
-    tux_body->draw(context, get_pos(), layer);
+    tux_body->draw(context, get_pos(), layer, grabbed_object);
 
 }
 
@@ -1032,6 +1036,7 @@ Player::collision_tile(uint32_t tile_attributes)
   if(tile_attributes & Tile::HURTS)
     kill(false);
 
+#ifdef SWIMMING
   if( swimming ){
     if( tile_attributes & Tile::WATER ){
       no_water = false;
@@ -1045,6 +1050,7 @@ Player::collision_tile(uint32_t tile_attributes)
       sound_manager->play( "sounds/splash.ogg" );
     }
   }
+#endif
 }
 
 void