Browse Source

Warn in log instead of crash on invalid building ID from mod

Ivan Savenko 1 year ago
parent
commit
2eeb6510c1
1 changed files with 5 additions and 2 deletions
  1. 5 2
      client/windows/CCastleInterface.cpp

+ 5 - 2
client/windows/CCastleInterface.cpp

@@ -1540,8 +1540,11 @@ CHallInterface::CHallInterface(const CGTownInstance * Town):
 			const CBuilding * building = nullptr;
 			for(auto & buildingID : boxList[row][col])//we are looking for the first not built structure
 			{
-				if (town->town->buildings.count(buildingID) == 0)
-					throw std::runtime_error("Town " + Town->town->faction->getJsonKey() + " has no building with ID " + std::to_string(buildingID.getNum()));
+				if (!buildingID.hasValue())
+				{
+					logMod->warn("Invalid building ID found in hallSlots of town '%s'", town->town->faction->getJsonKey() );
+					continue;
+				}
 
 				const CBuilding * current = town->town->buildings.at(buildingID);
 				if(vstd::contains(town->builtBuildings, buildingID))