Reduce duplication of GetTileZ calls in tree placement

pull/288/head
Jonathan G Rennison 3 years ago
parent 428136fa97
commit 6c7fccff5d

@ -278,10 +278,8 @@ static void PlaceTreeGroups(uint num_groups)
} while (--num_groups);
}
static TileIndex FindTreePositionAtSameHeight(TileIndex tile, uint steps)
static TileIndex FindTreePositionAtSameHeight(TileIndex tile, int height, uint steps)
{
const auto height = GetTileZ(tile);
for (uint i = 0; i < steps; i++) {
const uint32 r = Random();
const int x = GB(r, 0, 5) - 16;
@ -316,7 +314,7 @@ static TileIndex FindTreePositionAtSameHeight(TileIndex tile, uint steps)
*/
static void PlantTreeAtSameHeight(TileIndex tile)
{
const auto new_tile = FindTreePositionAtSameHeight(tile, 1);
const auto new_tile = FindTreePositionAtSameHeight(tile, GetTileZ(tile), 1);
if (new_tile != INVALID_TILE) {
PlantTreesOnTile(new_tile, GetTreeType(tile), 0, 0);
@ -330,10 +328,11 @@ static void PlantTreeAtSameHeight(TileIndex tile)
* height or at some offset (2 units) of it.
*
* @param tile The base tile to add a new tree somewhere around
* @param height The height (from GetTileZ)
*/
static void PlaceTreeAtSameHeight(TileIndex tile)
static void PlaceTreeAtSameHeight(TileIndex tile, int height)
{
const auto new_tile = FindTreePositionAtSameHeight(tile, DEFAULT_TREE_STEPS);
const auto new_tile = FindTreePositionAtSameHeight(tile, height, DEFAULT_TREE_STEPS);
if (new_tile != INVALID_TILE) {
PlaceTree(new_tile, Random());
@ -396,11 +395,11 @@ void PlaceTreesRandomly()
* It is almost real life ;) */
ht = GetTileZ(tile);
/* The higher we get, the more trees we plant */
j = GetTileZ(tile) * 2;
j = ht * 2;
/* Above snowline more trees! */
if (_settings_game.game_creation.landscape == LT_ARCTIC && ht > GetSnowLine()) j *= 3;
while (j--) {
PlaceTreeAtSameHeight(tile);
PlaceTreeAtSameHeight(tile, ht);
}
}
} while (--i);

Loading…
Cancel
Save