1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Move smooth tile edges option to terrain tab, apply to all generators

This commit is contained in:
Aaron van Geffen
2024-09-10 15:27:15 +02:00
parent eb5471346a
commit 457a923178
3 changed files with 19 additions and 18 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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);