Changeset - r17954:c07311e9d598
[Not reviewed]
master
0 3 0
michi_cc - 13 years ago 2011-08-20 20:07:02
michi_cc@openttd.org
(svn r22773) -Add: Some grass around rivers in desert areas.
3 files changed with 26 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/landscape.cpp
Show inline comments
 
@@ -1038,7 +1038,12 @@ static void River_GetNeighbours(AyStar *
 
static void River_FoundEndNode(AyStar *aystar, OpenListNode *current)
 
{
 
	for (PathNode *path = &current->path; path != NULL; path = path->parent) {
 
		if (!IsWaterTile(path->node.tile)) MakeRiver(path->node.tile, Random());
 
		TileIndex tile = path->node.tile;
 
		if (!IsWaterTile(tile)) {
 
			MakeRiver(tile, Random());
 
			/* Remove desert directly around the river tile. */
 
			CircularTileSearch(&tile, 5, RiverModifyDesertZone, NULL);
 
		}
 
	}
 
}
 

	
 
@@ -1168,7 +1173,7 @@ static void CreateRivers()
 
	if (amount == 0) return;
 

	
 
	uint wells = ScaleByMapSize(4 << _settings_game.game_creation.amount_of_rivers);
 
	SetGeneratingWorldProgress(GWP_RIVER, wells);
 
	SetGeneratingWorldProgress(GWP_RIVER, wells + 256 / 64); // Include the tile loop calls below.
 
	bool *marks = CallocT<bool>(MapSize());
 

	
 
	for (; wells != 0; wells--) {
 
@@ -1181,6 +1186,12 @@ static void CreateRivers()
 
	}
 

	
 
	free(marks);
 

	
 
	/* Run tile loop to update the ground density. */
 
	for (uint i = 0; i != 256; i++) {
 
		if (i % 64 == 0) IncreaseGeneratingWorldProgress(GWP_RIVER);
 
		RunTileLoop();
 
	}
 
}
 

	
 
void GenerateLandscape(byte mode)
src/water.h
Show inline comments
 
@@ -41,4 +41,6 @@ void DrawShoreTile(Slope tileh);
 

	
 
void MakeWaterKeepingClass(TileIndex tile, Owner o);
 

	
 
bool RiverModifyDesertZone(TileIndex tile, void *data);
 

	
 
#endif /* WATER_H */
src/water_cmd.cpp
Show inline comments
 
@@ -308,6 +308,13 @@ CommandCost CmdBuildLock(TileIndex tile,
 
	return DoBuildLock(tile, dir, flags);
 
}
 

	
 
/** Callback to create non-desert around a river tile. */
 
bool RiverModifyDesertZone(TileIndex tile, void *)
 
{
 
	if (GetTropicZone(tile) == TROPICZONE_DESERT) SetTropicZone(tile, TROPICZONE_NORMAL);
 
	return false;
 
}
 

	
 
/**
 
 * Build a piece of canal.
 
 * @param tile end tile of stretch-dragging
 
@@ -350,6 +357,10 @@ CommandCost CmdBuildCanal(TileIndex tile
 
			switch (wc) {
 
				case WATER_CLASS_RIVER:
 
					MakeRiver(tile, Random());
 
					if (_game_mode == GM_EDITOR) {
 
						TileIndex tile2 = tile;
 
						CircularTileSearch(&tile2, 5, RiverModifyDesertZone, NULL);
 
					}
 
					break;
 

	
 
				case WATER_CLASS_SEA:
0 comments (0 inline, 0 general)