1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-29 09:44:52 +01:00

Make 'advanced' object selection mode the only mode

This removes the ObjectPageFlags again
This commit is contained in:
Aaron van Geffen
2024-07-23 13:37:01 +02:00
parent 92c92e6316
commit 76f295b7be
2 changed files with 23 additions and 51 deletions

View File

@@ -124,13 +124,6 @@ namespace OpenRCT2::Ui::Windows
static constexpr int32_t WH = 400;
static constexpr int32_t WW = 755;
enum ObjectPageFlags : uint8_t
{
none = 0,
isAdvanced = 1 << 0,
hasSubTabs = 1 << 1,
};
struct ObjectSubTab
{
StringId tooltip;
@@ -146,7 +139,6 @@ namespace OpenRCT2::Ui::Windows
StringId Caption;
ObjectType mainObjectType;
uint32_t Image;
uint8_t Flags;
std::span<ObjectSubTab> subTabs;
};
@@ -177,15 +169,15 @@ namespace OpenRCT2::Ui::Windows
};
static constexpr ObjectPageDesc ObjectSelectionPages[] = {
{ STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS, ObjectType::Ride, SPR_TAB_RIDE_16, ObjectPageFlags::hasSubTabs, kRideObjectSubTabs },
{ STR_OBJECT_SELECTION_SCENERY_GROUPS, ObjectType::SceneryGroup, SPR_TAB_SCENERY_STATUES, ObjectPageFlags::hasSubTabs, kSceneryObjectSubTabs },
{ STR_OBJECT_SELECTION_FOOTPATH_SURFACES, ObjectType::FootpathSurface, SPR_G2_LEGACY_PATH_TAB, ObjectPageFlags::hasSubTabs, kPathObjectSubTabs },
{ STR_OBJECT_SELECTION_PARK_ENTRANCE, ObjectType::ParkEntrance, SPR_TAB_PARK, ObjectPageFlags::none , {} },
{ STR_OBJECT_SELECTION_STATIONS, ObjectType::Station, SPR_G2_RIDE_STATION_TAB, ObjectPageFlags::isAdvanced, {} },
{ STR_OBJECT_SELECTION_MUSIC, ObjectType::Music, SPR_TAB_MUSIC_0, ObjectPageFlags::isAdvanced, {} },
{ STR_OBJECT_SELECTION_TERRAIN_SURFACES, ObjectType::TerrainSurface, SPR_G2_TAB_LAND, ObjectPageFlags::isAdvanced, {} },
{ STR_OBJECT_SELECTION_TERRAIN_EDGES, ObjectType::TerrainEdge, SPR_G2_TERRAIN_EDGE_TAB, ObjectPageFlags::isAdvanced, {} },
{ STR_OBJECT_SELECTION_WATER, ObjectType::Water, SPR_TAB_WATER, ObjectPageFlags::none , {} },
{ STR_OBJECT_SELECTION_RIDE_VEHICLES_ATTRACTIONS, ObjectType::Ride, SPR_TAB_RIDE_16, kRideObjectSubTabs },
{ STR_OBJECT_SELECTION_SCENERY_GROUPS, ObjectType::SceneryGroup, SPR_TAB_SCENERY_STATUES, kSceneryObjectSubTabs },
{ STR_OBJECT_SELECTION_FOOTPATH_SURFACES, ObjectType::FootpathSurface, SPR_G2_LEGACY_PATH_TAB, kPathObjectSubTabs },
{ STR_OBJECT_SELECTION_PARK_ENTRANCE, ObjectType::ParkEntrance, SPR_TAB_PARK, {} },
{ STR_OBJECT_SELECTION_STATIONS, ObjectType::Station, SPR_G2_RIDE_STATION_TAB, {} },
{ STR_OBJECT_SELECTION_MUSIC, ObjectType::Music, SPR_TAB_MUSIC_0, {} },
{ STR_OBJECT_SELECTION_TERRAIN_SURFACES, ObjectType::TerrainSurface, SPR_G2_TAB_LAND, {} },
{ STR_OBJECT_SELECTION_TERRAIN_EDGES, ObjectType::TerrainEdge, SPR_G2_TERRAIN_EDGE_TAB, {} },
{ STR_OBJECT_SELECTION_WATER, ObjectType::Water, SPR_TAB_WATER, {} },
};
// clang-format on
@@ -197,7 +189,6 @@ namespace OpenRCT2::Ui::Windows
WIDX_TITLE,
WIDX_CLOSE,
WIDX_TAB_CONTENT_PANEL,
WIDX_ADVANCED,
WIDX_LIST,
WIDX_PREVIEW,
WIDX_INSTALL_TRACK,
@@ -226,11 +217,10 @@ namespace OpenRCT2::Ui::Windows
static std::vector<Widget> _window_editor_object_selection_widgets = {
WINDOW_SHIM(WINDOW_TITLE, WW, WH),
MakeWidget({ 0, 43}, {WW, 357}, WindowWidgetType::Resize, WindowColour::Secondary ),
MakeWidget({470, 22}, {122, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_OBJECT_SELECTION_ADVANCED, STR_OBJECT_SELECTION_ADVANCED_TIP),
MakeWidget({ 4, 60}, {288, 277}, WindowWidgetType::Scroll, WindowColour::Secondary, SCROLL_VERTICAL ),
MakeWidget({391, 45}, {114, 114}, WindowWidgetType::FlatBtn, WindowColour::Secondary ),
MakeWidget({470, 22}, {122, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_INSTALL_NEW_TRACK_DESIGN, STR_INSTALL_NEW_TRACK_DESIGN_TIP ),
MakeWidget({350, 22}, {114, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_OBJECT_FILTER, STR_OBJECT_FILTER_TIP ),
MakeWidget({350, 22}, {122, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_INSTALL_NEW_TRACK_DESIGN, STR_INSTALL_NEW_TRACK_DESIGN_TIP ),
MakeWidget({470, 22}, {114, 14}, WindowWidgetType::Button, WindowColour::Primary, STR_OBJECT_FILTER, STR_OBJECT_FILTER_TIP ),
MakeWidget({ 4, 45}, {211, 14}, WindowWidgetType::TextBox, WindowColour::Secondary ),
MakeWidget({218, 45}, { 70, 14}, WindowWidgetType::Button, WindowColour::Secondary, STR_OBJECT_SEARCH_CLEAR ),
MakeWidget({ 3, 73}, {285, 4}, WindowWidgetType::ImgBtn, WindowColour::Secondary ),
@@ -346,7 +336,8 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
WidgetInvalidate(*this, WIDX_FILTER_TEXT_BOX);
}
if (GetSelectedObjectType() != ObjectType::Ride)
auto& currentPage = ObjectSelectionPages[selected_tab];
if (currentPage.subTabs.empty())
return;
if (_selectedSubTab == 0)
@@ -415,11 +406,6 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
break;
}
case WIDX_ADVANCED:
list_information_type ^= 1;
Invalidate();
break;
case WIDX_INSTALL_TRACK:
{
if (selected_list_item != -1)
@@ -854,26 +840,20 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
{
// Resize widgets
ResizeFrameWithPage();
widgets[WIDX_ADVANCED].left = width - 130;
widgets[WIDX_ADVANCED].right = width - 9;
widgets[WIDX_LIST].right = width - 309;
widgets[WIDX_LIST].bottom = height - 14;
widgets[WIDX_PREVIEW].left = width - 209;
widgets[WIDX_PREVIEW].right = width - 96;
widgets[WIDX_INSTALL_TRACK].left = width - 130;
widgets[WIDX_INSTALL_TRACK].right = width - 9;
widgets[WIDX_FILTER_DROPDOWN].left = width - 250;
widgets[WIDX_FILTER_DROPDOWN].right = width - 137;
widgets[WIDX_FILTER_DROPDOWN].left = width - 130;
widgets[WIDX_FILTER_DROPDOWN].right = width - 9;
widgets[WIDX_INSTALL_TRACK].left = width - 250;
widgets[WIDX_INSTALL_TRACK].right = width - 137;
widgets[WIDX_RELOAD_OBJECT].left = width - 9 - 24;
widgets[WIDX_RELOAD_OBJECT].right = width - 9;
// Set pressed widgets
pressed_widgets |= 1uLL << WIDX_PREVIEW;
SetPressedTab();
if (list_information_type & 1)
pressed_widgets |= (1uLL << WIDX_ADVANCED);
else
pressed_widgets &= ~(1uLL << WIDX_ADVANCED);
// Set window title and buttons
auto ft = Formatter::Common();
@@ -896,24 +876,20 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
installTrackWidget.type = WindowWidgetType::Empty;
}
// Align tabs, hide advanced ones
bool advancedMode = (list_information_type & 1) != 0;
// Align main tabs
int32_t x = 3;
for (size_t i = 0; i < std::size(ObjectSelectionPages); i++)
{
auto& widget = widgets[WIDX_TAB_1 + i];
if ((!advancedMode && (ObjectSelectionPages[i].Flags & ObjectPageFlags::isAdvanced))
|| ObjectSelectionPages[i].Image == static_cast<uint32_t>(SPR_NONE))
{
widget.type = WindowWidgetType::Empty;
}
else
if (ObjectSelectionPages[i].Image != static_cast<uint32_t>(SPR_NONE))
{
widget.type = WindowWidgetType::Tab;
widget.left = x;
widget.right = x + 30;
x += 31;
}
else
widget.type = WindowWidgetType::Empty;
}
if (Config::Get().general.DebuggingTools)
@@ -923,7 +899,6 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
if (gScreenFlags & (SCREEN_FLAGS_TRACK_MANAGER | SCREEN_FLAGS_TRACK_DESIGNER))
{
widgets[WIDX_ADVANCED].type = WindowWidgetType::Empty;
for (size_t i = 1; i < std::size(ObjectSelectionPages); i++)
{
widgets[WIDX_TAB_1 + i].type = WindowWidgetType::Empty;
@@ -931,10 +906,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
x = 150;
}
else
{
widgets[WIDX_ADVANCED].type = WindowWidgetType::Button;
x = 300;
}
widgets[WIDX_FILTER_DROPDOWN].type = WindowWidgetType::Button;
widgets[WIDX_LIST].right = width - (WW - 587) - x;
@@ -1026,7 +998,7 @@ static std::vector<Widget> _window_editor_object_selection_widgets = {
// Draw sub-tab images, if applicable
auto& currentPage = ObjectSelectionPages[selected_tab];
if (currentPage.Flags & ObjectPageFlags::hasSubTabs)
if (!currentPage.subTabs.empty())
{
for (auto i = 0u; i < currentPage.subTabs.size(); i++)
{

View File

@@ -364,7 +364,7 @@ constexpr int32_t WC_PEEP__WIDX_PICKUP = 14;
constexpr int32_t WC_TRACK_DESIGN_LIST__WIDX_ROTATE = 8;
constexpr int32_t WC_TRACK_DESIGN_PLACE__WIDX_ROTATE = 3;
constexpr int32_t WC_MAP__WIDX_ROTATE_90 = 24;
constexpr int32_t WC_EDITOR_OBJECT_SELECTION__WIDX_TAB_1 = 22;
constexpr int32_t WC_EDITOR_OBJECT_SELECTION__WIDX_TAB_1 = 21;
constexpr int32_t WC_STAFF__WIDX_PICKUP = 9;
constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE = 13;
constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_COPY = 16;