mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Use separate function for planting an individual tree. (#13296)
This allows early return and removes use of assignment inside if-conditions.pull/13297/head
parent
f404f3154e
commit
4db0af99a7
|
@ -829,15 +829,29 @@ bool DecrementTreeCounter()
|
||||||
return old_trees_tick_ctr <= _trees_tick_ctr;
|
return old_trees_tick_ctr <= _trees_tick_ctr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place a random tree on a random tile.
|
||||||
|
* @param rainforest If set the random tile must be in a rainforest zone.
|
||||||
|
*/
|
||||||
|
static void PlantRandomTree(bool rainforest)
|
||||||
|
{
|
||||||
|
uint32_t r = Random();
|
||||||
|
TileIndex tile = RandomTileSeed(r);
|
||||||
|
|
||||||
|
if (rainforest && GetTropicZone(tile) != TROPICZONE_RAINFOREST) return;
|
||||||
|
if (!CanPlantTreesOnTile(tile, false)) return;
|
||||||
|
|
||||||
|
TreeType tree = GetRandomTreeType(tile, GB(r, 24, 8));
|
||||||
|
if (tree == TREE_INVALID) return;
|
||||||
|
|
||||||
|
PlantTreesOnTile(tile, tree, 0, TreeGrowthStage::Growing1);
|
||||||
|
}
|
||||||
|
|
||||||
void OnTick_Trees()
|
void OnTick_Trees()
|
||||||
{
|
{
|
||||||
/* Don't spread trees if that's not allowed */
|
/* Don't spread trees if that's not allowed */
|
||||||
if (_settings_game.construction.extra_tree_placement == ETP_NO_SPREAD || _settings_game.construction.extra_tree_placement == ETP_NO_GROWTH_NO_SPREAD) return;
|
if (_settings_game.construction.extra_tree_placement == ETP_NO_SPREAD || _settings_game.construction.extra_tree_placement == ETP_NO_GROWTH_NO_SPREAD) return;
|
||||||
|
|
||||||
uint32_t r;
|
|
||||||
TileIndex tile;
|
|
||||||
TreeType tree;
|
|
||||||
|
|
||||||
/* Skip some tree ticks for map sizes below 256 * 256. 64 * 64 is 16 times smaller, so
|
/* Skip some tree ticks for map sizes below 256 * 256. 64 * 64 is 16 times smaller, so
|
||||||
* this is the maximum number of ticks that are skipped. Number of ticks to skip is
|
* this is the maximum number of ticks that are skipped. Number of ticks to skip is
|
||||||
* inversely proportional to map size, so that is handled to create a mask. */
|
* inversely proportional to map size, so that is handled to create a mask. */
|
||||||
|
@ -847,22 +861,14 @@ void OnTick_Trees()
|
||||||
/* place a tree at a random rainforest spot */
|
/* place a tree at a random rainforest spot */
|
||||||
if (_settings_game.game_creation.landscape == LT_TROPIC) {
|
if (_settings_game.game_creation.landscape == LT_TROPIC) {
|
||||||
for (uint c = Map::ScaleBySize(1); c > 0; c--) {
|
for (uint c = Map::ScaleBySize(1); c > 0; c--) {
|
||||||
if ((r = Random(), tile = RandomTileSeed(r), GetTropicZone(tile) == TROPICZONE_RAINFOREST) &&
|
PlantRandomTree(true);
|
||||||
CanPlantTreesOnTile(tile, false) &&
|
|
||||||
(tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
|
|
||||||
PlantTreesOnTile(tile, tree, 0, TreeGrowthStage::Growing1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DecrementTreeCounter() || _settings_game.construction.extra_tree_placement == ETP_SPREAD_RAINFOREST) return;
|
if (!DecrementTreeCounter() || _settings_game.construction.extra_tree_placement == ETP_SPREAD_RAINFOREST) return;
|
||||||
|
|
||||||
/* place a tree at a random spot */
|
/* place a tree at a random spot */
|
||||||
r = Random();
|
PlantRandomTree(false);
|
||||||
tile = RandomTileSeed(r);
|
|
||||||
if (CanPlantTreesOnTile(tile, false) && (tree = GetRandomTreeType(tile, GB(r, 24, 8))) != TREE_INVALID) {
|
|
||||||
PlantTreesOnTile(tile, tree, 0, TreeGrowthStage::Growing1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static TrackStatus GetTileTrackStatus_Trees(TileIndex, TransportType, uint, DiagDirection)
|
static TrackStatus GetTileTrackStatus_Trees(TileIndex, TransportType, uint, DiagDirection)
|
||||||
|
|
Loading…
Reference in New Issue