Pārlūkot izejas kodu

Do not aquire pointer to Terrain type multiple times

Ivan Savenko 10 mēneši atpakaļ
vecāks
revīzija
94981076a2
1 mainītis faili ar 4 papildinājumiem un 3 dzēšanām
  1. 4 3
      lib/pathfinder/CPathfinder.cpp

+ 4 - 3
lib/pathfinder/CPathfinder.cpp

@@ -596,11 +596,12 @@ void CPathfinderHelper::getNeighbours(
 			continue;
 			continue;
 
 
 		const TerrainTile & destTile = map->getTile(destCoord);
 		const TerrainTile & destTile = map->getTile(destCoord);
-		if(!destTile.getTerrain()->isPassable())
+		const TerrainType* terrain = destTile.getTerrain();
+		if(!terrain->isPassable())
 			continue;
 			continue;
 
 
 		/// Following condition let us avoid diagonal movement over coast when sailing
 		/// Following condition let us avoid diagonal movement over coast when sailing
-		if(srcTile.isWater() && limitCoastSailing && destTile.isWater() && dir.x && dir.y) //diagonal move through water
+		if(srcTile.isWater() && limitCoastSailing && terrain->isWater() && dir.x && dir.y) //diagonal move through water
 		{
 		{
 			const int3 horizontalNeighbour = srcCoord + int3{dir.x, 0, 0};
 			const int3 horizontalNeighbour = srcCoord + int3{dir.x, 0, 0};
 			const int3 verticalNeighbour = srcCoord + int3{0, dir.y, 0};
 			const int3 verticalNeighbour = srcCoord + int3{0, dir.y, 0};
@@ -608,7 +609,7 @@ void CPathfinderHelper::getNeighbours(
 				continue;
 				continue;
 		}
 		}
 
 
-		if(indeterminate(onLand) || onLand == destTile.isLand())
+		if(indeterminate(onLand) || onLand == terrain->isLand())
 		{
 		{
 			vec.push_back(destCoord);
 			vec.push_back(destCoord);
 		}
 		}