From 1de9a57a7631d2cc8d54d95eaaa4aa51c958e52f Mon Sep 17 00:00:00 2001 From: nordsoft Date: Sat, 22 Apr 2023 20:08:52 +0400 Subject: [PATCH] Add validation for hero duplicate --- mapeditor/validator.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mapeditor/validator.cpp b/mapeditor/validator.cpp index c7a342542..c1b5892a1 100644 --- a/mapeditor/validator.cpp +++ b/mapeditor/validator.cpp @@ -74,6 +74,8 @@ std::list Validator::validate(const CMap * map) if(!hplayers) issues.emplace_back("No human players allowed to play this map", true); + std::set allHeroesOnMap; //used to find hero duplicated + //checking all objects in the map for(auto o : map->objects) { @@ -121,6 +123,9 @@ std::list Validator::validate(const CMap * map) { if(!map->allowedHeroes[ins->type->getId().getNum()]) issues.emplace_back(QString("Hero %1 is prohibited by map settings").arg(ins->type->getNameTranslated().c_str()), false); + + if(!allHeroesOnMap.insert(ins->type).second) + issues.emplace_back(QString("Hero %1 has duplicate on map").arg(ins->type->getNameTranslated().c_str()), false); } else issues.emplace_back(QString("Hero %1 has an empty type and must be removed").arg(ins->instanceName.c_str()), true);