first very unfinished and unpolished version of the intro
[supertux.git] / src / object / scripted_object.cpp
index 82f72e9..b9378fd 100644 (file)
@@ -2,15 +2,16 @@
 
 #include <stdexcept>
 
-#include "scripted_object.h"
-#include "video/drawing_context.h"
-#include "sprite/sprite_manager.h"
-#include "resources.h"
-#include "object_factory.h"
-#include "math/vector.h"
+#include "scripted_object.hpp"
+#include "video/drawing_context.hpp"
+#include "sprite/sprite_manager.hpp"
+#include "resources.hpp"
+#include "object_factory.hpp"
+#include "math/vector.hpp"
 
 ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
-  : solid(true), physic_enabled(true), visible(true)
+  : solid(true), physic_enabled(true), visible(true), new_vel_set(false),
+    layer(LAYER_OBJECTS)
 {
   lisp.get("name", name);
   if(name == "")
@@ -33,6 +34,7 @@ ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
   lisp.get("solid", solid);
   lisp.get("physic-enabled", physic_enabled);
   lisp.get("visible", visible);
+  lisp.get("layer", layer);
   if(solid)
     flags |= FLAG_SOLID;
 }
@@ -69,7 +71,8 @@ ScriptedObject::get_pos_y()
 void
 ScriptedObject::set_velocity(float x, float y)
 {
-  physic.set_velocity(x, y);
+  new_vel = Vector(x, y);
+  new_vel_set = true;
 }
 
 float
@@ -97,13 +100,13 @@ ScriptedObject::is_visible()
 }
 
 void
-ScriptedObject::set_animation(const std::string& animation)
+ScriptedObject::set_action(const std::string& animation)
 {
   sprite->set_action(animation);
 }
 
 std::string
-ScriptedObject::get_animation()
+ScriptedObject::get_action()
 {
   return sprite->get_action_name();
 }
@@ -115,11 +118,15 @@ ScriptedObject::get_name()
 }
 
 void
-ScriptedObject::action(float elapsed_time)
+ScriptedObject::update(float elapsed_time)
 {
   if(!physic_enabled)
     return;
 
+  if(new_vel_set) {
+    physic.set_velocity(new_vel.x, new_vel.y);
+    new_vel_set = false;
+  }
   movement = physic.get_movement(elapsed_time);
 }
 
@@ -129,7 +136,7 @@ ScriptedObject::draw(DrawingContext& context)
   if(!visible)
     return;
 
-  sprite->draw(context, get_pos(), LAYER_OBJECTS);
+  sprite->draw(context, get_pos(), layer);
 }
 
 HitResponse