hopefully fixed the crash on exit, keep sectors script bundled in the sector and...
[supertux.git] / src / object / player.cpp
index e2df368..1769811 100644 (file)
@@ -41,6 +41,7 @@
 #include "object/bullet.hpp"
 #include "trigger/trigger_base.hpp"
 #include "control/joystickkeyboardcontroller.hpp"
+#include "scripting/wrapper_util.hpp"
 #include "main.hpp"
 #include "platform.hpp"
 #include "badguy/badguy.hpp"
@@ -106,6 +107,7 @@ Player::Player(PlayerStatus* _player_status)
   smalltux_gameover = sprite_manager->create("images/creatures/tux_small/smalltux-gameover.sprite");
   smalltux_star = sprite_manager->create("images/creatures/tux_small/smalltux-star.sprite");
   bigtux_star = sprite_manager->create("images/creatures/tux_big/bigtux-star.sprite");
+
   init();
 }
 
@@ -120,9 +122,9 @@ void
 Player::init()
 {
   if(is_big())
-    bbox.set_size(31.8, 63.8);
+    bbox.set_size(31.8, 62.8);
   else
-    bbox.set_size(31.8, 31.8);
+    bbox.set_size(31.8, 30.8);
   adjust_height = 0;
 
   dir = RIGHT;
@@ -150,6 +152,19 @@ Player::init()
 }
 
 void
+Player::expose(HSQUIRRELVM vm, int table_idx)
+{
+  Scripting::Player* interface = static_cast<Scripting::Player*> (this);
+  expose_object(vm, table_idx, interface, "Tux", false);
+}
+
+void
+Player::unexpose(HSQUIRRELVM vm, int table_idx)
+{
+  Scripting::unexpose_object(vm, table_idx, "Tux");
+}
+
+void
 Player::set_controller(Controller* controller)
 {
   this->controller = controller;
@@ -180,7 +195,7 @@ Player::update(float elapsed_time)
       if(moving_object) {
         moving_object->set_pos(pos);
       } else {
-        msg_debug("Non MovingObjetc grabbed?!?");
+        msg_debug << "Non MovingObjetc grabbed?!?" << std::endl;
       }
       grabbed_object->ungrab(*this, dir);
       grabbed_object = 0;
@@ -525,7 +540,7 @@ Player::set_bonus(BonusType type, bool animate)
     return;
   
   if(player_status->bonus == NO_BONUS) {
-    adjust_height = 63.8;
+    adjust_height = 62.8;
     if(animate)
       growing_timer.start(GROWING_TIME);
   }
@@ -660,28 +675,12 @@ Player::draw(DrawingContext& context)
   if(dying) {
     smalltux_gameover->draw(context, get_pos(), layer);
   } else if(growing_timer.get_timeleft() > 0) {
-    if(!is_big())
-      {
-      if (dir == RIGHT)
-        context.draw_surface(growingtux_right[GROWING_FRAMES-1 - 
-                 int((growing_timer.get_timegone() *
-                 GROWING_FRAMES) / GROWING_TIME)], get_pos(), layer);
-      else
-        context.draw_surface(growingtux_left[GROWING_FRAMES-1 - 
-                int((growing_timer.get_timegone() *
-                GROWING_FRAMES) / GROWING_TIME)], get_pos(), layer);
-      }
-    else
-      {
-      if (dir == RIGHT)
-        context.draw_surface(growingtux_right[
-            int((growing_timer.get_timegone() *
-                GROWING_FRAMES) / GROWING_TIME)], get_pos(), layer);
-      else
-        context.draw_surface(growingtux_left[
-            int((growing_timer.get_timegone() *
-                             GROWING_FRAMES) / GROWING_TIME)],
-            get_pos(), layer);
+      if (dir == RIGHT) {
+        context.draw_surface(growingtux_right[int((growing_timer.get_timegone() *
+                 GROWING_FRAMES) / GROWING_TIME)], get_pos() - Vector(0, 32), layer);
+      } else {
+        context.draw_surface(growingtux_left[int((growing_timer.get_timegone() *
+                GROWING_FRAMES) / GROWING_TIME)], get_pos() - Vector(0, 32), layer);
       }
     }
   else if (safe_timer.started() && size_t(game_time*40)%2)
@@ -850,7 +849,7 @@ Player::kill(HurtMode mode)
         {
           //growing_timer.start(GROWING_TIME);
           safe_timer.start(TUX_SAFE_TIME /* + GROWING_TIME */);
-          adjust_height = 31.8;
+          adjust_height = 30.8;
           duck = false;
           player_status->bonus = NO_BONUS;
         }
@@ -965,3 +964,4 @@ void Player::walk(float speed)
 {
   physic.set_velocity_x(speed);
 }
+