Quellcode durchsuchen

Add fallback for empty terrain types. Still it's a workaround and does not solve the root cause.

Tomasz Zieliński vor 2 Jahren
Ursprung
Commit
23a5a32756
1 geänderte Dateien mit 10 neuen und 1 gelöschten Zeilen
  1. 10 1
      lib/rmg/Functions.cpp

+ 10 - 1
lib/rmg/Functions.cpp

@@ -134,7 +134,16 @@ void initTerrainType(Zone & zone, CMapGenerator & gen)
 		}
 		else
 		{
-			zone.setTerrainType(*RandomGeneratorUtil::nextItem(zone.getTerrainTypes(), gen.rand));
+			auto terrainTypes = zone.getTerrainTypes();
+			if (terrainTypes.empty())
+			{
+				logGlobal->warn("No terrain types found, falling back to DIRT");
+				zone.setTerrainType(ETerrainId::DIRT);
+			}
+			else
+			{
+				zone.setTerrainType(*RandomGeneratorUtil::nextItem(terrainTypes, gen.rand));
+			}
 		}
 		
 		//Now, replace disallowed terrains on surface and in the underground