From cfa18bd1131a1d6f1d0768d796eae9f31809ea23 Mon Sep 17 00:00:00 2001 From: Karst Date: Sat, 9 Apr 2022 01:59:14 +0200 Subject: [PATCH] Change Object Selection order Might take a little bit for people to get used to. But it's a lot more coherent and makes more sense. --- distribution/changelog.txt | 1 + .../windows/EditorObjectSelection.cpp | 54 +++++++++++-------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index fd54d281aa..67923a5ca9 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,6 +1,7 @@ 0.4.1 (in development) ------------------------------------------------------------------------ - Feature: [#17011] Option to show ride vehicles as separate entries when selecting a ride to construct. +- Change: [#16952] Make "Object Selection" order more coherent. - Fix: [#16934] Park size displayed incorrectly in Park window. - Fix: [#16974] Small scenery ghosts can be deleted. - Fix: [#17005] Unable to set patrol area for first staff member in park. diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 31e395823d..4ca6d93ea7 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -125,29 +125,41 @@ struct ObjectPageDesc bool IsAdvanced; }; + +// Order of which the object tabs are displayed. static constexpr const ObjectPageDesc ObjectSelectionPages[] = { - { STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS, SPR_TAB_RIDE_16, false }, - { STR_OBJECT_SELECTION_SMALL_SCENERY, SPR_TAB_SCENERY_TREES, true }, - { STR_OBJECT_SELECTION_LARGE_SCENERY, SPR_TAB_SCENERY_URBAN, true }, - { STR_OBJECT_SELECTION_WALLS_FENCES, SPR_TAB_SCENERY_WALLS, true }, - { STR_OBJECT_SELECTION_PATH_SIGNS, SPR_TAB_SCENERY_SIGNAGE, true }, - { STR_OBJECT_SELECTION_FOOTPATHS, SPR_G2_LEGACY_PATH_TAB, true }, - { STR_OBJECT_SELECTION_PATH_EXTRAS, SPR_TAB_SCENERY_PATH_ITEMS, false }, - { STR_OBJECT_SELECTION_SCENERY_GROUPS, SPR_TAB_SCENERY_STATUES, false }, - { STR_OBJECT_SELECTION_PARK_ENTRANCE, SPR_TAB_PARK, false }, - { STR_OBJECT_SELECTION_WATER, SPR_TAB_WATER, false }, - + { STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS, SPR_TAB_RIDE_16, false }, + { STR_OBJECT_SELECTION_STATIONS, SPR_G2_RIDE_STATION_TAB, true }, + { STR_OBJECT_SELECTION_MUSIC, SPR_TAB_MUSIC_0, true }, + { STR_OBJECT_SELECTION_SCENERY_GROUPS, SPR_TAB_SCENERY_STATUES, false }, + { STR_OBJECT_SELECTION_SMALL_SCENERY, SPR_TAB_SCENERY_TREES, true }, + { STR_OBJECT_SELECTION_LARGE_SCENERY, SPR_TAB_SCENERY_URBAN, true }, + { STR_OBJECT_SELECTION_WALLS_FENCES, SPR_TAB_SCENERY_WALLS, true }, + { STR_OBJECT_SELECTION_FOOTPATH_SURFACES, SPR_G2_PATH_SURFACE_TAB, false }, + { STR_OBJECT_SELECTION_FOOTPATH_RAILINGS, SPR_G2_PATH_RAILINGS_TAB, false }, + { STR_OBJECT_SELECTION_FOOTPATHS, SPR_G2_LEGACY_PATH_TAB, true }, + { STR_OBJECT_SELECTION_PATH_EXTRAS, SPR_TAB_SCENERY_PATH_ITEMS, false }, + { STR_OBJECT_SELECTION_PATH_SIGNS, SPR_TAB_SCENERY_SIGNAGE, true }, + { STR_OBJECT_SELECTION_PARK_ENTRANCE, SPR_TAB_PARK, false }, + { STR_OBJECT_SELECTION_TERRAIN_SURFACES, SPR_G2_TAB_LAND, true }, + { STR_OBJECT_SELECTION_TERRAIN_EDGES, SPR_G2_TERRAIN_EDGE_TAB, true }, + { STR_OBJECT_SELECTION_WATER, SPR_TAB_WATER, false }, // Dummy place holder for string objects - { STR_NONE, static_cast(SPR_NONE), false }, - - { STR_OBJECT_SELECTION_TERRAIN_SURFACES, SPR_G2_TAB_LAND, true }, - { STR_OBJECT_SELECTION_TERRAIN_EDGES, SPR_G2_TERRAIN_EDGE_TAB, true }, - { STR_OBJECT_SELECTION_STATIONS, SPR_G2_RIDE_STATION_TAB, true }, - { STR_OBJECT_SELECTION_MUSIC, SPR_TAB_MUSIC_0, false }, - { STR_OBJECT_SELECTION_FOOTPATH_SURFACES, SPR_G2_PATH_SURFACE_TAB, false }, - { STR_OBJECT_SELECTION_FOOTPATH_RAILINGS, SPR_G2_PATH_RAILINGS_TAB, false }, + { STR_NONE, static_cast(SPR_NONE), false }, }; +// clang-format on +// Order of which the contents of each tab is displayed. +ObjectType static TabOrder[] = { + ObjectType::Ride, ObjectType::Station, ObjectType::Music, + ObjectType::SceneryGroup, ObjectType::SmallScenery, ObjectType::LargeScenery, + ObjectType::Walls, ObjectType::FootpathSurface, ObjectType::FootpathRailings, + ObjectType::Paths, ObjectType::PathBits, ObjectType::Banners, + ObjectType::ParkEntrance, ObjectType::TerrainSurface, ObjectType::TerrainEdge, + ObjectType::Water, ObjectType::ScenarioText, +}; +// clang-format off + #pragma region Widgets enum WINDOW_EDITOR_OBJECT_SELECTION_WIDGET_IDX @@ -1413,7 +1425,7 @@ private: ObjectType GetSelectedObjectType() { auto tab = selected_tab; - return static_cast(tab); + return TabOrder[tab]; } /** @@ -1555,4 +1567,4 @@ void EditorLoadSelectedObjects() // Reloads the default cyan water palette if no palette was selected. load_palette(); } -} +} \ No newline at end of file