From 7a7472462bc3e75ac6c61484243d3f856448b9ab Mon Sep 17 00:00:00 2001 From: Aaron van Geffen Date: Thu, 12 Sep 2024 17:44:47 +0200 Subject: [PATCH] Merge simplex noise options into one Adjust heightmap source dropdown width; keep open --- data/language/en-GB.txt | 51 +++++++++++++++--------------- src/openrct2-ui/UiStringIds.h | 51 +++++++++++++++--------------- src/openrct2-ui/windows/MapGen.cpp | 46 ++++++--------------------- src/openrct2/world/MapGen.cpp | 3 +- src/openrct2/world/MapGen.h | 3 +- 5 files changed, 62 insertions(+), 92 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 57838fda54..086307c898 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3751,32 +3751,31 @@ STR_6676 :At least one peep names object must be selected STR_6677 :Add beaches around water bodies STR_6678 :Heightmap source: STR_6679 :Flatland -STR_6680 :Simplex noise (random) -STR_6681 :Simplex noise (custom) -STR_6682 :Heightmap file -STR_6683 :Map Generator - Generator -STR_6684 :Map Generator - Terrain -STR_6685 :Map Generator - Water -STR_6686 :Map Generator - Forests -STR_6687 :Tree to land ratio: -STR_6688 :Min. tree altitude: -STR_6689 :Max. tree altitude: -STR_6690 :{UINT16}% -STR_6691 :Minimum land height -STR_6692 :Enter min. land height between {COMMA16} and {COMMA16} -STR_6693 :Maximum land height -STR_6694 :Enter max. land height between {COMMA16} and {COMMA16} -STR_6695 :Minimum tree altitude -STR_6696 :Enter min. tree altitude between {COMMA16} and {COMMA16} -STR_6697 :Maximum tree altitude -STR_6698 :Enter max. tree altitude between {COMMA16} and {COMMA16} -STR_6699 :Tree to land ratio -STR_6700 :Enter tree to land ratio between {COMMA16} and {COMMA16} -STR_6701 :Simplex Base Frequency -STR_6702 :Enter Base Frequency between {COMMA2DP32} and {COMMA2DP32} -STR_6703 :Simplex Octaves -STR_6704 :Enter Octaves between {COMMA16} and {COMMA16} -STR_6705 :{COMMA2DP32} +STR_6680 :Simplex noise +STR_6681 :Heightmap file +STR_6682 :Map Generator - Generator +STR_6683 :Map Generator - Terrain +STR_6684 :Map Generator - Water +STR_6685 :Map Generator - Forests +STR_6686 :Tree to land ratio: +STR_6687 :Min. tree altitude: +STR_6688 :Max. tree altitude: +STR_6689 :{UINT16}% +STR_6690 :Minimum land height +STR_6691 :Enter min. land height between {COMMA16} and {COMMA16} +STR_6692 :Maximum land height +STR_6693 :Enter max. land height between {COMMA16} and {COMMA16} +STR_6694 :Minimum tree altitude +STR_6695 :Enter min. tree altitude between {COMMA16} and {COMMA16} +STR_6696 :Maximum tree altitude +STR_6697 :Enter max. tree altitude between {COMMA16} and {COMMA16} +STR_6698 :Tree to land ratio +STR_6699 :Enter tree to land ratio between {COMMA16} and {COMMA16} +STR_6700 :Simplex Base Frequency +STR_6701 :Enter Base Frequency between {COMMA2DP32} and {COMMA2DP32} +STR_6702 :Simplex Octaves +STR_6703 :Enter Octaves between {COMMA16} and {COMMA16} +STR_6704 :{COMMA2DP32} ############# # Scenarios # diff --git a/src/openrct2-ui/UiStringIds.h b/src/openrct2-ui/UiStringIds.h index be0a3b1884..9f8ffc0503 100644 --- a/src/openrct2-ui/UiStringIds.h +++ b/src/openrct2-ui/UiStringIds.h @@ -36,7 +36,7 @@ namespace OpenRCT2 STR_ENTER_PARK_NAME = 1719, STR_ENTER_SELECTION_SIZE = 5129, STR_ERROR_INVALID_CHARACTERS = 5243, - STR_FORMAT_COMMA2DP32 = 6705, + STR_FORMAT_COMMA2DP32 = 6704, STR_FORMAT_INTEGER = 5182, STR_GRAPH_LABEL = 2222, STR_LIGHTPINK_STRINGID = 5299, @@ -897,28 +897,27 @@ namespace OpenRCT2 STR_SHOW_RIDES_STALLS_ON_MAP_TIP = 3144, // Window: MapGen - STR_BASE_HEIGHT = 5183, // unused + STR_BASE_HEIGHT = 5183, // unused STR_BASE_HEIGHT_LABEL = 2691, // unused STR_BEACHES_WATER_BODIES = 6677, - STR_ENTER_BASE_FREQUENCY = 6702, + STR_ENTER_BASE_FREQUENCY = 6701, STR_ENTER_BASE_HEIGHT = 5184, // unused - STR_ENTER_MAX_LAND = 6694, - STR_ENTER_MAX_TREE_ALTITUDE = 6698, - STR_ENTER_MIN_LAND = 6692, - STR_ENTER_MIN_TREE_ALTITUDE = 6696, - STR_ENTER_OCTAVES = 6704, - STR_ENTER_TREE_TO_LAND_RATIO = 6700, + STR_ENTER_MAX_LAND = 6693, + STR_ENTER_MAX_TREE_ALTITUDE = 6697, + STR_ENTER_MIN_LAND = 6691, + STR_ENTER_MIN_TREE_ALTITUDE = 6695, + STR_ENTER_OCTAVES = 6703, + STR_ENTER_TREE_TO_LAND_RATIO = 6699, STR_ENTER_WATER_LEVEL = 5186, - STR_HEIGHTMAP_FILE = 6682, + STR_HEIGHTMAP_FILE = 6681, STR_HEIGHTMAP_FLATLAND = 6679, - STR_HEIGHTMAP_SIMPLEX_CUSTOM = 6681, STR_HEIGHTMAP_SIMPLEX_NOISE = 6680, STR_HEIGHTMAP_SOURCE = 6678, STR_MAPGEN_ACTION_GENERATE = 2694, - STR_MAPGEN_CAPTION_FORESTS = 6686, - STR_MAPGEN_CAPTION_GENERATOR = 6683, - STR_MAPGEN_CAPTION_TERRAIN = 6684, - STR_MAPGEN_CAPTION_WATER = 6685, + STR_MAPGEN_CAPTION_FORESTS = 6685, + STR_MAPGEN_CAPTION_GENERATOR = 6682, + STR_MAPGEN_CAPTION_TERRAIN = 6683, + STR_MAPGEN_CAPTION_WATER = 6684, STR_MAPGEN_MAX_LAND_HEIGHT = 2687, STR_MAPGEN_MIN_LAND_HEIGHT = 2686, STR_MAPGEN_NORMALIZE = 6046, @@ -931,18 +930,18 @@ namespace OpenRCT2 STR_MAPGEN_SMOOTH_HEIGHTMAP = 6044, STR_MAPGEN_SMOOTH_STRENGTH = 6045, STR_MAPGEN_SMOOTH_TILE = 6047, - STR_MAPGEN_TREE_MAX_ALTITUDE = 6689, - STR_MAPGEN_TREE_MIN_ALTITUDE = 6688, - STR_MAPGEN_TREE_TO_LAND_RATIO = 6687, - STR_MAPGEN_TREE_TO_LAND_RATIO_PCT = 6690, - STR_MAX_LAND_HEIGHT = 6693, - STR_MAX_TREE_ALTITUDE = 6697, - STR_MIN_LAND_HEIGHT = 6691, - STR_MIN_TREE_ALTITUDE = 6695, - STR_SIMPLEX_BASE_FREQUENCY = 6701, - STR_SIMPLEX_OCTAVES = 6703, + STR_MAPGEN_TREE_MAX_ALTITUDE = 6688, + STR_MAPGEN_TREE_MIN_ALTITUDE = 6687, + STR_MAPGEN_TREE_TO_LAND_RATIO = 6686, + STR_MAPGEN_TREE_TO_LAND_RATIO_PCT = 6689, + STR_MAX_LAND_HEIGHT = 6692, + STR_MAX_TREE_ALTITUDE = 6696, + STR_MIN_LAND_HEIGHT = 6690, + STR_MIN_TREE_ALTITUDE = 6694, + STR_SIMPLEX_BASE_FREQUENCY = 6700, + STR_SIMPLEX_OCTAVES = 6702, STR_TERRAIN_LABEL = 2693, - STR_TREE_TO_LAND_RATIO = 6695, + STR_TREE_TO_LAND_RATIO = 6694, STR_WATER_LEVEL = 5185, STR_WATER_LEVEL_LABEL = 2692, diff --git a/src/openrct2-ui/windows/MapGen.cpp b/src/openrct2-ui/windows/MapGen.cpp index 633496b5d0..b3b9eb1522 100644 --- a/src/openrct2-ui/windows/MapGen.cpp +++ b/src/openrct2-ui/windows/MapGen.cpp @@ -287,8 +287,8 @@ namespace OpenRCT2::Ui::Windows .beaches = true, // Simplex Noise Parameters - .simplex_base_freq = 60, - .simplex_octaves = 4, + .simplex_base_freq = 175, + .simplex_octaves = 6, // Height map _settings .smooth_height_map = false, @@ -408,6 +408,9 @@ namespace OpenRCT2::Ui::Windows void GenerateMap() { + if (_settings.algorithm == MapGenAlgorithm::heightmapImage && !_heightmapLoaded) + return; + MapGenSettings mapgenSettings = _settings; if (_randomTerrain) { @@ -415,28 +418,6 @@ namespace OpenRCT2::Ui::Windows mapgenSettings.edgeTexture = -1; } - switch (mapgenSettings.algorithm) - { - case MapGenAlgorithm::blank: - break; - - case MapGenAlgorithm::simplexNoise: - mapgenSettings.heightmapLow = UtilRand() % 4; - mapgenSettings.heightmapHigh = 12 + (UtilRand() % (32 - 12)); - mapgenSettings.simplex_base_freq = 1.75f; - mapgenSettings.simplex_octaves = 6; - break; - - case MapGenAlgorithm::simplexCustom: - mapgenSettings.simplex_base_freq /= 100.00f; - break; - - case MapGenAlgorithm::heightmapImage: - if (!_heightmapLoaded) - return; - break; - } - MapGenGenerate(&mapgenSettings); GfxInvalidateScreen(); } @@ -470,7 +451,7 @@ namespace OpenRCT2::Ui::Windows void BaseMouseDown(WidgetIndex widgetIndex, Widget* widget) { - if (_settings.algorithm == MapGenAlgorithm::simplexCustom) + if (_settings.algorithm == MapGenAlgorithm::simplexNoise) SimplexMouseDown(widgetIndex, widget); else if (_settings.algorithm == MapGenAlgorithm::heightmapImage) @@ -505,16 +486,15 @@ namespace OpenRCT2::Ui::Windows constexpr ItemExt items[] = { ToggleOption(0, STR_HEIGHTMAP_FLATLAND), ToggleOption(1, STR_HEIGHTMAP_SIMPLEX_NOISE), - ToggleOption(2, STR_HEIGHTMAP_SIMPLEX_CUSTOM), - ToggleOption(3, STR_HEIGHTMAP_FILE), + ToggleOption(2, STR_HEIGHTMAP_FILE), }; SetItems(items); Widget* ddWidget = &widgets[widgetIndex - 1]; - WindowDropdownShowText( + WindowDropdownShowTextCustomWidth( { windowPos.x + ddWidget->left, windowPos.y + ddWidget->top }, ddWidget->height() + 1, colours[1], 0, - std::size(items)); + Dropdown::Flag::StayOpen, std::size(items), ddWidget->width() - 2); SetChecked(EnumValue(_settings.algorithm), true); break; @@ -595,12 +575,6 @@ namespace OpenRCT2::Ui::Windows case MapGenAlgorithm::simplexNoise: sourceWidget.text = STR_HEIGHTMAP_SIMPLEX_NOISE; - ToggleSimplexWidgets(false); - ToggleHeightmapWidgets(false); - break; - - case MapGenAlgorithm::simplexCustom: - sourceWidget.text = STR_HEIGHTMAP_SIMPLEX_CUSTOM; ToggleSimplexWidgets(true); ToggleHeightmapWidgets(false); break; @@ -645,7 +619,7 @@ namespace OpenRCT2::Ui::Windows DrawWidgets(dpi); DrawTabImages(dpi); - if (_settings.algorithm == MapGenAlgorithm::simplexCustom) + if (_settings.algorithm == MapGenAlgorithm::simplexNoise) SimplexDraw(dpi); else if (_settings.algorithm == MapGenAlgorithm::heightmapImage) diff --git a/src/openrct2/world/MapGen.cpp b/src/openrct2/world/MapGen.cpp index e4894dc744..8136dfac8d 100644 --- a/src/openrct2/world/MapGen.cpp +++ b/src/openrct2/world/MapGen.cpp @@ -110,7 +110,6 @@ void MapGenGenerate(MapGenSettings* settings) break; case MapGenAlgorithm::simplexNoise: - case MapGenAlgorithm::simplexCustom: MapGenGenerateSimplex(settings); break; @@ -692,7 +691,7 @@ static float Grad(int32_t hash, float x, float y) static void MapGenSimplex(MapGenSettings* settings) { - float freq = settings->simplex_base_freq * (1.0f / _heightSize.x); + float freq = settings->simplex_base_freq / 100.0f * (1.0f / _heightSize.x); int32_t octaves = settings->simplex_octaves; int32_t low = settings->heightmapLow / 2; diff --git a/src/openrct2/world/MapGen.h b/src/openrct2/world/MapGen.h index 9bfbf245a2..5e56f8af4a 100644 --- a/src/openrct2/world/MapGen.h +++ b/src/openrct2/world/MapGen.h @@ -16,7 +16,6 @@ enum class MapGenAlgorithm : uint8_t { blank, simplexNoise, - simplexCustom, heightmapImage, }; @@ -40,7 +39,7 @@ struct MapGenSettings bool beaches; // Simplex Noise Parameters - float simplex_base_freq; + int32_t simplex_base_freq; int32_t simplex_octaves; // Height map settings