X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmap%2FMap.cpp;h=823847c92213eae625b86469ded3b80ba38a5084;hb=a3ba4dc677ad7c92eeb78b20b642241563605c9d;hp=3f05962a43b2e55db519f84565b362b16d748cc0;hpb=7c43158af1abf38fa896a442cb3c6d8a5bc630e7;p=l2e.git diff --git a/src/map/Map.cpp b/src/map/Map.cpp index 3f05962..823847c 100644 --- a/src/map/Map.cpp +++ b/src/map/Map.cpp @@ -1,23 +1,19 @@ -/* - * Map.cpp - * - * Created on: Sep 29, 2012 - * Author: holy - */ - #include "Map.h" #include "Area.h" #include "Tile.h" #include "Trigger.h" #include "../graphics/Sprite.h" +#include "../loader/Interpreter.h" #include "../loader/TypeDescription.h" #include "../sdl/utility.h" #include -using geometry::Vector; +using math::Vector; +using graphics::Sprite; using loader::FieldDescription; +using loader::Interpreter; using loader::TypeDescription; namespace map { @@ -80,7 +76,7 @@ const Tile *Map::TileAt(const Vector &offset) const { } } -Trigger *Map::TriggerAt(const geometry::Vector &offset) { +Trigger *Map::TriggerAt(const math::Vector &offset) { // TODO: add support for multiple triggers on a tile? Vector coords(TileCoordinates(offset)); for (Trigger *i(triggers); i != triggers + numTriggers; ++i) { @@ -91,7 +87,7 @@ Trigger *Map::TriggerAt(const geometry::Vector &offset) { return 0; } -SDL_Surface *Map::BattleBackgroundAt(const geometry::Vector &position) { +SDL_Surface *Map::BattleBackgroundAt(const math::Vector &position) { Tile *tile(TileAt(position)); if (tile && tile->BattleBackground()) { return tile->BattleBackground(); @@ -156,23 +152,16 @@ 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")); + TypeDescription &td(TypeDescription::Create(TYPE_ID, "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)); + td.AddField("tileset", FieldDescription(((char *)&m.tileset) - ((char *)&m), Sprite::TYPE_ID).SetReferenced()); + td.AddField("battlebg", FieldDescription(((char *)&m.battlebg) - ((char *)&m), Interpreter::IMAGE_ID).SetReferenced()); + td.AddField("areas", FieldDescription(((char *)&m.areas) - ((char *)&m), Area::TYPE_ID).SetReferenced().SetAggregate()); + td.AddField("triggers", FieldDescription(((char *)&m.triggers) - ((char *)&m), Trigger::TYPE_ID).SetReferenced().SetAggregate()); + td.AddField("entities", FieldDescription(((char *)&m.entities) - ((char *)&m), Entity::TYPE_ID).SetReferenced().SetAggregate()); + td.AddField("width", FieldDescription(((char *)&m.width) - ((char *)&m), Interpreter::NUMBER_ID)); } void Map::Construct(void *data) {