]> git.localhorst.tv Git - l2e.git/blobdiff - src/map/Entity.cpp
added 500ms blackness between map transitions
[l2e.git] / src / map / Entity.cpp
index 666db7a2d2f656b0104b57dc4fbb886a6cd815f0..e1f970bea644103be655e27a094ffa478c4a3169 100644 (file)
@@ -7,7 +7,11 @@
 
 #include "Entity.h"
 
+#include "../loader/TypeDescription.h"
+
 using geometry::Vector;
+using loader::FieldDescription;
+using loader::TypeDescription;
 
 namespace map {
 
@@ -15,7 +19,8 @@ Entity::Entity()
 : follower(0)
 , animation(0)
 , orientation(ORIENTATION_NORTH)
-, speed(0) {
+, speed(0)
+, flags(0) {
        runner.SetFrameShift(1);
 }
 
@@ -108,4 +113,29 @@ void Entity::Render(SDL_Surface *dest, const Vector<int> &offset) const {
        }
 }
 
+
+void Entity::CreateTypeDescription() {
+       Entity e;
+
+       int animationId(TypeDescription::GetTypeId("Animation"));
+       int vectorId(TypeDescription::GetTypeId("Vector"));
+
+       TypeDescription &td(TypeDescription::CreateOrGet("Entity"));
+       td.SetConstructor(&Construct);
+       td.SetLoader(&Load);
+       td.SetSize(sizeof(Entity));
+
+       td.AddField("animation", FieldDescription(((char *)&e.animation) - ((char *)&e), animationId, true));
+       td.AddField("spriteOffset", FieldDescription(((char *)&e.spriteOffset) - ((char *)&e), vectorId, false));
+}
+
+void Entity::Construct(void *data) {
+       new (data) Entity;
+}
+
+void Entity::Load(void *data) {
+       Entity *entity(reinterpret_cast<Entity *>(data));
+       entity->runner.ChangeAnimation(entity->animation);
+}
+
 }