#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 == "")
lisp.get("solid", solid);
lisp.get("physic-enabled", physic_enabled);
lisp.get("visible", visible);
+ lisp.get("layer", layer);
if(solid)
flags |= FLAG_SOLID;
}
void
ScriptedObject::set_velocity(float x, float y)
{
- physic.set_velocity(x, y);
+ new_vel = Vector(x, y);
+ new_vel_set = true;
}
float
}
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();
}
}
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);
}
if(!visible)
return;
- sprite->draw(context, get_pos(), LAYER_OBJECTS);
+ sprite->draw(context, get_pos(), layer);
}
HitResponse