Преглед изворни кода

Added check for validness of native terrain

Ivan Savenko пре 2 година
родитељ
комит
4f739d426d
1 измењених фајлова са 6 додато и 0 уклоњено
  1. 6 0
      lib/CTownHandler.cpp

+ 6 - 0
lib/CTownHandler.cpp

@@ -19,6 +19,7 @@
 #include "CHeroHandler.h"
 #include "CArtHandler.h"
 #include "GameSettings.h"
+#include "TerrainHandler.h"
 #include "spells/CSpellHandler.h"
 #include "filesystem/Filesystem.h"
 #include "mapObjects/CObjectClassesHandler.h"
@@ -1035,6 +1036,11 @@ CFaction * CTownHandler::loadFromJson(const std::string & scope, const JsonNode
 	{
 		VLC->modh->identifiers.requestIdentifier("terrain", source["nativeTerrain"], [=](int32_t index){
 			faction->nativeTerrain = TerrainId(index);
+
+			auto const & terrain = VLC->terrainTypeHandler->getById(faction->nativeTerrain);
+
+			if (!terrain->isSurface() && !terrain->isUnderground())
+				logMod->warn("Faction %s has terrain %s as native, but terrain is not suitable for either surface or subterranean layers!", faction->getJsonKey(), terrain->getJsonKey());
 		});
 	}