diff --git a/lib/mapObjects/ObstacleSetHandler.cpp b/lib/mapObjects/ObstacleSetHandler.cpp index 45f2f113e..a33b8fda9 100644 --- a/lib/mapObjects/ObstacleSetHandler.cpp +++ b/lib/mapObjects/ObstacleSetHandler.cpp @@ -55,11 +55,13 @@ bool ObstacleSetFilter::filter(const ObstacleSet &set) const } // TODO: Also check specific factions - auto alignments = set.getAlignments(); - - if (alignment != EAlignment::ANY && !alignments.empty() && !vstd::contains(alignments, alignment)) + if (alignment != EAlignment::ANY) { - return false; + auto alignments = set.getAlignments(); + if (!alignments.empty() && !vstd::contains(alignments, alignment)) + { + return false; + } } return true; @@ -269,6 +271,8 @@ std::shared_ptr ObstacleSetHandler::loadFromJson(const std::string auto biome = json["biome"].Struct(); os->setType(ObstacleSet::typeFromString(biome["objectType"].String())); + // TODO: Handle any (every) terrain option + if (biome["terrain"].isString()) { auto terrainName = biome["terrain"].String(); @@ -306,13 +310,13 @@ std::shared_ptr ObstacleSetHandler::loadFromJson(const std::string } }; - if (json["alignment"].isString()) + if (biome["alignment"].isString()) { - os->addAlignment(parseAlignment(json["alignment"].String())); + os->addAlignment(parseAlignment(biome["alignment"].String())); } - else if (json["alignment"].isVector()) + else if (biome["alignment"].isVector()) { - auto alignments = json["alignment"].Vector(); + auto alignments = biome["alignment"].Vector(); for (const auto & node : alignments) { os->addAlignment(parseAlignment(node.String()));