From 457a923178bce89fcc00a385c10017be398b18bc Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Tue, 10 Sep 2024 15:27:15 +0200 Subject: [PATCH] Move smooth tile edges option to terrain tab, apply to all generators --- src/openrct2-ui/windows/MapGen.cpp | 28 +++++++++++++--------------- src/openrct2/world/MapGen.cpp | 7 +++++-- src/openrct2/world/MapGen.h | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 10c3011b69..3d2a79861c 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -81,7 +81,6 @@ namespace OpenRCT2::Ui::Windows WIDX_HEIGHTMAP_STRENGTH_UP, WIDX_HEIGHTMAP_STRENGTH_DOWN, WIDX_HEIGHTMAP_NORMALIZE, - WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, WIDX_BASE_HEIGHT = TAB_BEGIN, WIDX_BASE_HEIGHT_UP, @@ -95,6 +94,7 @@ namespace OpenRCT2::Ui::Windows WIDX_HEIGHTMAP_HIGH, WIDX_HEIGHTMAP_HIGH_UP, WIDX_HEIGHTMAP_HIGH_DOWN, + WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, WIDX_WATER_LEVEL = TAB_BEGIN, WIDX_WATER_LEVEL_UP, @@ -149,7 +149,6 @@ namespace OpenRCT2::Ui::Windows MakeWidget ({ 4, 52}, {100, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAPGEN_SMOOTH_HEIGHTMAP), // WIDX_HEIGHTMAP_SMOOTH_HEIGHTMAP MakeSpinnerWidgets({104, 70}, { 95, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // WIDX_HEIGHTMAP_STRENGTH{,_UP,_DOWN} MakeWidget ({ 4, 88}, {100, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAPGEN_NORMALIZE ), // WIDX_HEIGHTMAP_NORMALIZE - MakeWidget ({ 4, 106}, {100, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAPGEN_SMOOTH_TILE ), // WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES kWidgetsEnd, }; @@ -159,8 +158,9 @@ namespace OpenRCT2::Ui::Windows MakeWidget ({104, 70}, {95, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAPGEN_OPTION_RANDOM_TERRAIN ), MakeWidget ({104, 82}, {47, 36}, WindowWidgetType::FlatBtn, WindowColour::Secondary, 0xFFFFFFFF, STR_CHANGE_BASE_LAND_TIP ), MakeWidget ({151, 82}, {47, 36}, WindowWidgetType::FlatBtn, WindowColour::Secondary, 0xFFFFFFFF, STR_CHANGE_VERTICAL_LAND_TIP), - MakeSpinnerWidgets({104, 124}, { 95, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // WIDX_HEIGHTMAP_LOW{,_UP,_DOWN} - MakeSpinnerWidgets({104, 142}, { 95, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // WIDX_HEIGHTMAP_HIGH{,_UP,_DOWN} + MakeSpinnerWidgets({104, 124}, {95, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // WIDX_HEIGHTMAP_LOW{,_UP,_DOWN} + MakeSpinnerWidgets({104, 142}, {95, 12}, WindowWidgetType::Spinner, WindowColour::Secondary ), // WIDX_HEIGHTMAP_HIGH{,_UP,_DOWN} + MakeWidget ({104, 160}, {95, 12}, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_MAPGEN_SMOOTH_TILE ), // WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES kWidgetsEnd, }; @@ -197,8 +197,7 @@ namespace OpenRCT2::Ui::Windows (1uLL << WIDX_HEIGHTMAP_STRENGTH) | (1uLL << WIDX_HEIGHTMAP_STRENGTH_UP) | (1uLL << WIDX_HEIGHTMAP_STRENGTH_DOWN) | - (1uLL << WIDX_HEIGHTMAP_NORMALIZE) | - (1uLL << WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES) + (1uLL << WIDX_HEIGHTMAP_NORMALIZE) }; static uint64_t HoldDownWidgets[WINDOW_MAPGEN_PAGE_COUNT] = { @@ -232,8 +231,8 @@ namespace OpenRCT2::Ui::Windows 0, 0, 0, - (1uLL << WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES), 0, + (1uLL << WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES), 0, }; // clang-format on @@ -298,6 +297,7 @@ namespace OpenRCT2::Ui::Windows .edgeTexture = 0, .heightmapLow = 1, .heightmapHigh = 20, + .smoothTileEdges = true, // Features (e.g. tree, rivers, lakes etc.) .trees = true, @@ -311,7 +311,6 @@ namespace OpenRCT2::Ui::Windows .smooth_height_map = false, .smooth_strength = 1, .normalize_height = false, - .smoothTileEdges = true, }; bool _randomTerrain = true; @@ -336,7 +335,6 @@ namespace OpenRCT2::Ui::Windows SetWidgetEnabled(WIDX_HEIGHTMAP_STRENGTH_UP, _settings.smooth_height_map); SetWidgetEnabled(WIDX_HEIGHTMAP_STRENGTH_DOWN, _settings.smooth_height_map); SetWidgetEnabled(WIDX_HEIGHTMAP_NORMALIZE, true); - SetWidgetEnabled(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, true); } InitScrollWidgets(); @@ -833,11 +831,6 @@ namespace OpenRCT2::Ui::Windows SetCheckboxValue(WIDX_HEIGHTMAP_NORMALIZE, _settings.normalize_height); InvalidateWidget(WIDX_HEIGHTMAP_NORMALIZE); break; - case WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES: - _settings.smoothTileEdges = !_settings.smoothTileEdges; - SetCheckboxValue(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, _settings.smoothTileEdges); - InvalidateWidget(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES); - break; } // Always regenerate the map after one of the page widgets has been changed @@ -854,7 +847,6 @@ namespace OpenRCT2::Ui::Windows SetCheckboxValue(WIDX_HEIGHTMAP_SMOOTH_HEIGHTMAP, _settings.smooth_height_map); SetCheckboxValue(WIDX_HEIGHTMAP_NORMALIZE, _settings.normalize_height); - SetCheckboxValue(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, _settings.smoothTileEdges); SetPressedTab(); } @@ -902,6 +894,11 @@ namespace OpenRCT2::Ui::Windows (_settings.baseHeight - 12) / 2, 3); break; } + case WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES: + _settings.smoothTileEdges = !_settings.smoothTileEdges; + SetCheckboxValue(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, _settings.smoothTileEdges); + InvalidateWidget(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES); + break; } } @@ -1080,6 +1077,7 @@ namespace OpenRCT2::Ui::Windows } SetCheckboxValue(WIDX_RANDOM_TERRAIN, _randomTerrain != 0); + SetCheckboxValue(WIDX_HEIGHTMAP_SMOOTH_TILE_EDGES, _settings.smoothTileEdges); // Only allow floor and wall texture options if random terrain is disabled if (!_randomTerrain) diff --git a/src/openrct2/world/MapGen.cpp b/src/openrct2/world/MapGen.cpp index af392f875b..7fa2ddcb19 100644 --- a/src/openrct2/world/MapGen.cpp +++ b/src/openrct2/world/MapGen.cpp @@ -250,9 +250,12 @@ static void MapGenGenerateSimplex(MapGenSettings* settings) MapGenSetHeight(settings); delete[] _height; - // Set the tile slopes so that there are no cliffs - while (MapSmooth(1, 1, mapSize.x - 1, mapSize.y - 1)) + if (settings->smoothTileEdges) { + // Set the tile slopes so that there are no cliffs + while (MapSmooth(1, 1, mapSize.x - 1, mapSize.y - 1)) + { + } } // Add the water diff --git a/src/openrct2/world/MapGen.h b/src/openrct2/world/MapGen.h index 79ca1c5327..7ead7c318f 100644 --- a/src/openrct2/world/MapGen.h +++ b/src/openrct2/world/MapGen.h @@ -31,6 +31,7 @@ struct MapGenSettings int32_t edgeTexture; int32_t heightmapLow; int32_t heightmapHigh; + bool smoothTileEdges; // Features (e.g. tree, rivers, lakes etc.) bool trees; @@ -44,7 +45,6 @@ struct MapGenSettings bool smooth_height_map; uint32_t smooth_strength; bool normalize_height; - bool smoothTileEdges; }; void MapGenGenerate(MapGenSettings* settings);