Changeset - r23350:b3754acf09f3
[Not reviewed]
master
0 3 0
SamuXarick - 6 years ago 2019-02-23 12:16:12
43006711+SamuXarick@users.noreply.github.com
Fix: Remove desert around lakes upon generation
3 files changed with 9 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/landscape.cpp
Show inline comments
 
@@ -1063,6 +1063,9 @@ static bool MakeLake(TileIndex tile, voi
 
		TileIndex t2 = tile + TileOffsByDiagDir(d);
 
		if (IsWaterTile(t2)) {
 
			MakeRiver(tile, Random());
 
			/* Remove desert directly around the river tile. */
 
			TileIndex t = tile;
 
			CircularTileSearch(&t, RIVER_OFFSET_DESERT_DISTANCE, RiverModifyDesertZone, NULL);
 
			return false;
 
		}
 
	}
 
@@ -1134,7 +1137,7 @@ static void River_FoundEndNode(AyStar *a
 
		if (!IsWaterTile(tile)) {
 
			MakeRiver(tile, Random());
 
			/* Remove desert directly around the river tile. */
 
			CircularTileSearch(&tile, 5, RiverModifyDesertZone, NULL);
 
			CircularTileSearch(&tile, RIVER_OFFSET_DESERT_DISTANCE, RiverModifyDesertZone, NULL);
 
		}
 
	}
 
}
 
@@ -1245,6 +1248,9 @@ static bool FlowRiver(TileIndex spring, 
 
				DistanceManhattan(spring, lakeCenter) > _settings_game.game_creation.min_river_length) {
 
			end = lakeCenter;
 
			MakeRiver(lakeCenter, Random());
 
			/* Remove desert directly around the river tile. */
 
			CircularTileSearch(&lakeCenter, RIVER_OFFSET_DESERT_DISTANCE, RiverModifyDesertZone, NULL);
 
			lakeCenter = end;
 
			uint range = RandomRange(8) + 3;
 
			CircularTileSearch(&lakeCenter, range, MakeLake, &height);
 
			/* Call the search a second time so artefacts from going circular in one direction get (mostly) hidden. */
src/water.h
Show inline comments
 
@@ -40,6 +40,7 @@ void DrawShoreTile(Slope tileh);
 
void MakeWaterKeepingClass(TileIndex tile, Owner o);
 

	
 
bool RiverModifyDesertZone(TileIndex tile, void *data);
 
static const uint RIVER_OFFSET_DESERT_DISTANCE = 5; ///< Circular tile search radius to create non-desert around a river tile.
 

	
 
bool IsWateredTile(TileIndex tile, Direction from);
 

	
src/water_cmd.cpp
Show inline comments
 
@@ -428,7 +428,7 @@ CommandCost CmdBuildCanal(TileIndex tile
 
					MakeRiver(tile, Random());
 
					if (_game_mode == GM_EDITOR) {
 
						TileIndex tile2 = tile;
 
						CircularTileSearch(&tile2, 5, RiverModifyDesertZone, NULL);
 
						CircularTileSearch(&tile2, RIVER_OFFSET_DESERT_DISTANCE, RiverModifyDesertZone, NULL);
 
					}
 
					break;
 

	
0 comments (0 inline, 0 general)