Browse Source

Merge pull request #1638 from rilian-la-te/fix-road-river

vcmi: fix road and river loading
Ivan Savenko 2 years ago
parent
commit
a503c9d413
1 changed files with 7 additions and 14 deletions
  1. 7 14
      lib/mapping/MapFormatJson.cpp

+ 7 - 14
lib/mapping/MapFormatJson.cpp

@@ -1005,27 +1005,20 @@ void CMapLoaderJson::readTerrainTile(const std::string & src, TerrainTile & tile
 		if (startPos >= src.size())
 			return;
 		bool hasRoad = true;
-		//FIXME: check without exceptions?
 		{//road type
 			const std::string typeCode = src.substr(startPos, 2);
 			startPos += 2;
-			try
+			tile.roadType = getRoadByCode(typeCode);
+			if(!tile.roadType) //it's not a road, it's a river
 			{
-				tile.roadType = getRoadByCode(typeCode);
-			}
-			catch (const std::exception&) //it's not a road, it's a river
-			{
-				try
-				{
-					tile.riverType = getRiverByCode(typeCode);
-					hasRoad = false;
-				}
-				catch (const std::exception&)
+				tile.roadType = VLC->roadTypeHandler->getById(Road::NO_ROAD);
+				tile.riverType = getRiverByCode(typeCode);
+				hasRoad = false;
+				if(!tile.riverType)
 				{
 					throw std::runtime_error("Invalid river type in " + src);
 				}
-
-			}	
+			}
 		}
 		if (hasRoad)
 		{//road dir