diff options
author | Vít Šefl <vituscze@gmail.com> | 2021-09-12 08:42:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-12 08:42:24 +0200 |
commit | 710b758b81f69a6f6771d7e8741db819831731e6 (patch) | |
tree | a6f036b5110f3093c3144d912c4c2ceceefa7074 | |
parent | d4588df9f9f7efd534c73e9170fb51f112bf676f (diff) | |
download | openttd-710b758b81f69a6f6771d7e8741db819831731e6.tar.xz |
Fix #9241: Grove and forest tree brushes also create rainforests (#9542)
-rw-r--r-- | src/tree_cmd.cpp | 9 | ||||
-rw-r--r-- | src/tree_gui.cpp | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/tree_cmd.cpp b/src/tree_cmd.cpp index e2460f3b0..237b34fff 100644 --- a/src/tree_cmd.cpp +++ b/src/tree_cmd.cpp @@ -301,9 +301,10 @@ void PlaceTreesRandomly() * @param treetype Type of trees to place. Must be a valid tree type for the climate. * @param radius Maximum distance (on each axis) from tile to place trees. * @param count Maximum number of trees to place. + * @param set_zone Whether to create a rainforest zone when placing rainforest trees. * @return Number of trees actually placed. */ -uint PlaceTreeGroupAroundTile(TileIndex tile, TreeType treetype, uint radius, uint count) +uint PlaceTreeGroupAroundTile(TileIndex tile, TreeType treetype, uint radius, uint count, bool set_zone) { assert(treetype < TREE_TOYLAND + TREE_COUNT_TOYLAND); const bool allow_desert = treetype == TREE_CACTUS; @@ -334,6 +335,12 @@ uint PlaceTreeGroupAroundTile(TileIndex tile, TreeType treetype, uint radius, ui } } + if (set_zone && IsInsideMM(treetype, TREE_RAINFOREST, TREE_CACTUS)) { + for (TileIndex t : TileArea(tile).Expand(radius)) { + if (GetTileType(t) != MP_VOID && DistanceSquare(tile, t) < radius * radius) SetTropicZone(t, TROPICZONE_RAINFOREST); + } + } + return planted; } diff --git a/src/tree_gui.cpp b/src/tree_gui.cpp index 3dab92a20..ccec4705d 100644 --- a/src/tree_gui.cpp +++ b/src/tree_gui.cpp @@ -29,7 +29,7 @@ #include "safeguards.h" void PlaceTreesRandomly(); -uint PlaceTreeGroupAroundTile(TileIndex tile, TreeType treetype, uint radius, uint count); +uint PlaceTreeGroupAroundTile(TileIndex tile, TreeType treetype, uint radius, uint count, bool set_zone); /** Tree Sprites with their palettes */ const PalSpriteID tree_sprites[] = { @@ -133,7 +133,8 @@ class BuildTreesWindow : public Window } const uint radius = this->mode == PM_FOREST_LG ? 12 : 5; const uint count = this->mode == PM_FOREST_LG ? 12 : 5; - PlaceTreeGroupAroundTile(tile, treetype, radius, count); + // Create tropic zones only when the tree type is selected by the user and not picked randomly. + PlaceTreeGroupAroundTile(tile, treetype, radius, count, this->tree_to_plant != TREE_INVALID); } public: |