Reverted bigger parts of tuxdev patch:
[supertux.git] / src / object / player.cpp
index 7664a3b..dc2ae81 100644 (file)
@@ -108,10 +108,10 @@ TuxBodyParts::draw(DrawingContext& context, const Vector& pos, int layer)
     feet->draw(context, pos, layer-2);
 }
 
-Player::Player(PlayerStatus* _player_status, std::string name) :
-  MovingObject(name), player_status(_player_status), grabbed_object(NULL),
-  ghost_mode(false)
+Player::Player(PlayerStatus* _player_status, const std::string& name)
+  : player_status(_player_status), grabbed_object(NULL), ghost_mode(false)
 {
+  this->name = name;
   controller = main_controller;
   smalltux_gameover = sprite_manager->create("images/creatures/tux_small/smalltux-gameover.sprite");
   smalltux_star = sprite_manager->create("images/creatures/tux_small/smalltux-star.sprite");
@@ -171,14 +171,18 @@ Player::init()
 void
 Player::expose(HSQUIRRELVM vm, SQInteger table_idx)
 {
-  if (name.empty()) return;
+  if (name.empty())
+    return;
+
   Scripting::expose_object(vm, table_idx, dynamic_cast<Scripting::Player *>(this), name, false);
 }
 
 void
 Player::unexpose(HSQUIRRELVM vm, SQInteger table_idx)
 {
-  if (name.empty()) return;
+  if (name.empty())
+    return;
+
   Scripting::unexpose_object(vm, table_idx, name);
 }
 
@@ -516,7 +520,6 @@ Player::do_jump(float yspeed) {
 void
 Player::handle_vertical_input()
 {
-
   // Press jump key
   if(controller->pressed(Controller::JUMP) && (can_jump)) {
     if (duck) {
@@ -544,6 +547,13 @@ Player::handle_vertical_input()
   /* When Down is not held anymore, disable butt jump */
   if(butt_jump && !controller->hold(Controller::DOWN))
     butt_jump = false;
+
+  // swimming
+  physic.set_acceleration_y(0);
+  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);
+  }
 }
 
 void