X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmap%2FMap.cpp;h=10b74d079a01d43b422fa7719bb1a84298aa8d8d;hb=b27f427bbb6a1a1ee1230bacb4fce0eb3a8af240;hp=7712a024838ca5a7e1719300db70af327bc8164e;hpb=d969efe468d2d9775ab2c5388be1cde8efa0b9ad;p=l2e.git diff --git a/src/map/Map.cpp b/src/map/Map.cpp index 7712a02..10b74d0 100644 --- a/src/map/Map.cpp +++ b/src/map/Map.cpp @@ -30,8 +30,8 @@ Map::Map() const Area &Map::AreaAt(const Vector &offset) const { if (numAreas > 0) { - Vector tileOffset(offset.X() / tileset->Width(), offset.Y() / tileset->Height()); - Vector areaOffset(tileOffset.X() / areas[0].Width(), tileOffset.Y() / areas[0].Height()); + Vector coords(TileCoordinates(offset)); + Vector areaOffset(coords.X() / areas[0].Width(), coords.Y() / areas[0].Height()); int areaIndex(areaOffset.Y() * width + areaOffset.X()); if (areaIndex < numAreas) { return areas[areaIndex]; @@ -48,15 +48,19 @@ const Tile &Map::TileAt(const Vector &offset) const { Trigger *Map::TriggerAt(const geometry::Vector &offset) { // TODO: add support for multiple triggers on a tile? - Vector tilePosition(offset.X() / tileset->Width(), offset.Y() / tileset->Height()); + Vector coords(TileCoordinates(offset)); for (Trigger *i(triggers); i != triggers + numTriggers; ++i) { - if (i->TilePosition() == tilePosition) { + if (i->TilePosition() == coords) { return i; } } return 0; } +Vector Map::TileCoordinates(const Vector &position) const { + return Vector(position.X() / tileset->Width(), position.Y() / tileset->Height()); +} + void Map::Render(SDL_Surface *dest, const Vector &inOffset) const { // TODO: skip invisible areas