X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmap%2FMap.cpp;h=3f05962a43b2e55db519f84565b362b16d748cc0;hb=2ccc2369d32fb680a3047519d79c17de34c4e10a;hp=1c55eaf0690a552d470efcbb97a4be5ffe2ca2dd;hpb=f1e445b660889a18eaf05e7fcc16b360fb8605d5;p=l2e.git diff --git a/src/map/Map.cpp b/src/map/Map.cpp index 1c55eaf..3f05962 100644 --- a/src/map/Map.cpp +++ b/src/map/Map.cpp @@ -11,11 +11,14 @@ #include "Tile.h" #include "Trigger.h" #include "../graphics/Sprite.h" +#include "../loader/TypeDescription.h" #include "../sdl/utility.h" #include using geometry::Vector; +using loader::FieldDescription; +using loader::TypeDescription; namespace map { @@ -149,4 +152,31 @@ void Map::RenderDebug(SDL_Surface *dest, const Vector &inOffset) const { } } + +void Map::CreateTypeDescription() { + Map m; + + int areaId(TypeDescription::GetTypeId("Area")); + int entityId(TypeDescription::GetTypeId("Entity")); + int imageId(TypeDescription::GetTypeId("Image")); + int numberId(TypeDescription::GetTypeId("Number")); + int spriteId(TypeDescription::GetTypeId("Sprite")); + int triggerId(TypeDescription::GetTypeId("Trigger")); + + TypeDescription &td(TypeDescription::CreateOrGet("Map")); + td.SetConstructor(&Construct); + td.SetSize(sizeof(Map)); + + td.AddField("tileset", FieldDescription(((char *)&m.tileset) - ((char *)&m), spriteId).SetReferenced()); + td.AddField("battlebg", FieldDescription(((char *)&m.battlebg) - ((char *)&m), imageId).SetReferenced()); + td.AddField("areas", FieldDescription(((char *)&m.areas) - ((char *)&m), areaId).SetReferenced().SetAggregate()); + td.AddField("triggers", FieldDescription(((char *)&m.triggers) - ((char *)&m), triggerId).SetReferenced().SetAggregate()); + td.AddField("entities", FieldDescription(((char *)&m.entities) - ((char *)&m), entityId).SetReferenced().SetAggregate()); + td.AddField("width", FieldDescription(((char *)&m.width) - ((char *)&m), numberId)); +} + +void Map::Construct(void *data) { + new (data) Map; +} + }