+
+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;
+}
+