From 937875c4e1432b418f0f5051759e02c8d4c9ffa4 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Fri, 5 Mar 2021 18:53:06 -0500 Subject: Added the mask sprite layer This layer is below the normal sprite layer. Sprites on it are only rendered within the area of a zone that is defined per-map. --- src/map.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/map.cpp') diff --git a/src/map.cpp b/src/map.cpp index c3ac828..8d0ada6 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -71,12 +71,20 @@ Map::Map(std::string_view name) : name_(name) { } else if (layer->getType() == tmx::Layer::Type::Object) { const auto& objectLayer = layer->getLayerAs(); + bool masked = false; + for (const tmx::Property& property : objectLayer.getProperties()) { + if (property.getName() == "masked" && property.getBoolValue()) { + masked = true; + } + } + 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; + p.masked = masked; for (const tmx::Property& property : object.getProperties()) { if (property.getName() == "collisionOffsetX") { @@ -159,6 +167,8 @@ Map::Map(std::string_view name) : name_(name) { for (const tmx::Property& property : mapfile.getProperties()) { if (property.getName() == "music") { music_ = property.getStringValue(); + } else if (property.getName() == "maskZone") { + maskZone_ = property.getStringValue(); } } } -- cgit 1.4.1