From 9510e4fbbe817ab62ce014ee50283edd62fa00d9 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Tue, 9 Feb 2021 18:27:03 -0500 Subject: Entity prototypes can be stored in the map file now --- src/map.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/map.cpp') diff --git a/src/map.cpp b/src/map.cpp index 0c4f9d6..1a2a250 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -51,6 +51,35 @@ Map::Map(std::string_view filename, Renderer& renderer) { } layers_.push_back(std::move(tilesToStore)); + } else if (layer->getType() == tmx::Layer::Type::Object) { + const auto& objectLayer = layer->getLayerAs(); + + for (const tmx::Object& object : objectLayer.getObjects()) { + if (object.getType() == "sprite") { + Prototype p; + p.name = object.getName(); + p.pos.x() = object.getPosition().x; + p.pos.y() = object.getPosition().y; + + for (const tmx::Property& property : object.getProperties()) { + if (property.getName() == "collisionOffsetX") { + p.collisionOffset.x() = property.getIntValue(); + } else if (property.getName() == "collisionOffsetY") { + p.collisionOffset.y() = property.getIntValue(); + } else if (property.getName() == "collisionWidth") { + p.collisionSize.w() = property.getIntValue(); + } else if (property.getName() == "collisionHeight") { + p.collisionSize.h() = property.getIntValue(); + } else if (property.getName() == "animation") { + p.animationFilename = property.getStringValue(); + } else if (property.getName() == "interactionScript") { + p.interactionScript = property.getStringValue(); + } + } + + prototypes_.push_back(std::move(p)); + } + } } } } -- cgit 1.4.1