diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index a14f298fea..510300ccab 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3669,6 +3669,11 @@ STR_6477 :Invisible Guests STR_6478 :Invisible Staff STR_6479 :Transparency Options STR_6480 :Transparency Options +STR_6481 :Transparency Options +STR_6482 :Ride Exclusions +STR_6483 :Other Options +STR_6484 :Invisible Vehicles +STR_6485 :See-Through Supports ############# # Scenarios # diff --git a/src/openrct2-ui/input/Shortcuts.cpp b/src/openrct2-ui/input/Shortcuts.cpp index 401bd826c0..9322f436fb 100644 --- a/src/openrct2-ui/input/Shortcuts.cpp +++ b/src/openrct2-ui/input/Shortcuts.cpp @@ -622,6 +622,38 @@ static void ShortcutToggleConsole() } } +static void ShortcutToggleInvisiblePeeps() +{ + if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) + return; + + auto w = window_get_main(); + if (w != nullptr) + { + if (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_GUESTS || w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_STAFF) + w->viewport->flags = w->viewport->flags & ~(VIEWPORT_FLAG_INVISIBLE_GUESTS | VIEWPORT_FLAG_INVISIBLE_STAFF); + else + w->viewport->flags |= (VIEWPORT_FLAG_INVISIBLE_GUESTS | VIEWPORT_FLAG_INVISIBLE_STAFF); + w->Invalidate(); + } +} + +static void ShortcutToggleInvisibleSupports() +{ + if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) + return; + + auto w = window_get_main(); + if (w != nullptr) + { + if (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS || w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) + w->viewport->flags = w->viewport->flags & ~(VIEWPORT_FLAG_SEETHROUGH_SUPPORTS | VIEWPORT_FLAG_INVISIBLE_SUPPORTS); + else + w->viewport->flags |= (VIEWPORT_FLAG_SEETHROUGH_SUPPORTS | VIEWPORT_FLAG_INVISIBLE_SUPPORTS); + w->Invalidate(); + } +} + static void ShortcutConstructionTurnLeft() { if (gScreenFlags & SCREEN_FLAGS_TITLE_DEMO) @@ -847,8 +879,8 @@ void ShortcutManager::RegisterDefaultShortcuts() RegisterShortcut(ShortcutId::ViewToggleRides, STR_SHORTCUT_SEE_THROUGH_RIDES_TOGGLE, "3", []() { ToggleViewFlag(VIEWPORT_FLAG_SEETHROUGH_RIDES); }); RegisterShortcut(ShortcutId::ViewToggleScenery, STR_SHORTCUT_SEE_THROUGH_SCENERY_TOGGLE, "4", []() { ToggleViewFlag(VIEWPORT_FLAG_SEETHROUGH_SCENERY); }); RegisterShortcut(ShortcutId::ViewToggleFootpaths, STR_SHORTCUT_SEE_THROUGH_PATHS_TOGGLE, []() { ToggleViewFlag(VIEWPORT_FLAG_SEETHROUGH_PATHS); }); - RegisterShortcut(ShortcutId::ViewToggleSupports, STR_SHORTCUT_INVISIBLE_SUPPORTS_TOGGLE, "5", []() { ToggleViewFlag(VIEWPORT_FLAG_INVISIBLE_SUPPORTS); }); - RegisterShortcut(ShortcutId::ViewTogglePeeps, STR_SHORTCUT_INVISIBLE_PEOPLE_TOGGLE, "6", []() { ToggleViewFlag(VIEWPORT_FLAG_INVISIBLE_PEEPS); }); + RegisterShortcut(ShortcutId::ViewToggleSupports, STR_SHORTCUT_INVISIBLE_SUPPORTS_TOGGLE, "5", []() { ShortcutToggleInvisibleSupports(); }); + RegisterShortcut(ShortcutId::ViewTogglePeeps, STR_SHORTCUT_INVISIBLE_PEOPLE_TOGGLE, "6", []() { ShortcutToggleInvisiblePeeps(); }); RegisterShortcut(ShortcutId::ViewToggleLandHeightMarkers, STR_SHORTCUT_HEIGHT_MARKS_ON_LAND_TOGGLE, "8", []() { ToggleViewFlag(VIEWPORT_FLAG_LAND_HEIGHTS); }); RegisterShortcut(ShortcutId::ViewToggleTrackHeightMarkers, STR_SHORTCUT_HEIGHT_MARKS_ON_RIDE_TRACKS_TOGGLE, "9", []() { ToggleViewFlag(VIEWPORT_FLAG_TRACK_HEIGHTS); }); RegisterShortcut(ShortcutId::ViewToggleFootpathHeightMarkers, STR_SHORTCUT_HEIGHT_MARKS_ON_PATHS_TOGGLE, "0", []() { ToggleViewFlag(VIEWPORT_FLAG_PATH_HEIGHTS); }); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index ccb0e4ae78..8fee7c7865 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -1420,17 +1420,6 @@ static void WindowRideSetPage(rct_window* w, int32_t page) WindowInitScrollWidgets(w); w->Invalidate(); - if (listen != 0 && w->viewport != nullptr) - { - ride->is_visible = true; - log_info("Set ride to visible. Ride ID %u Window Number %u", ride->id, w->number); - } - else if (listen == 0 && w->viewport != nullptr) - { - ride->is_visible = false; - log_info("Set ride to invisible. Ride ID %u Window Number %u", ride->id, w->number); - } - if (listen != 0 && w->viewport != nullptr) w->viewport->flags |= VIEWPORT_FLAG_SOUND_ON; } diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index 91b7953f46..50e732c0bb 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -3665,9 +3665,9 @@ static void TopToolbarInitViewMenu(rct_window* w, rct_widget* widget) Dropdown::SetChecked(DDIDX_SEETHROUGH_SCENERY, true); if (mainViewport->flags & VIEWPORT_FLAG_SEETHROUGH_PATHS) Dropdown::SetChecked(DDIDX_SEETHROUGH_PATHS, true); - if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) + if (mainViewport->flags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) Dropdown::SetChecked(DDIDX_INVISIBLE_SUPPORTS, true); - if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS) + if (mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_GUESTS || mainViewport->flags & VIEWPORT_FLAG_INVISIBLE_STAFF) Dropdown::SetChecked(DDIDX_INVISIBLE_PEEPS, true); if (mainViewport->flags & VIEWPORT_FLAG_LAND_HEIGHTS) Dropdown::SetChecked(DDIDX_LAND_HEIGHTS, true); @@ -3723,10 +3723,17 @@ static void TopToolbarViewMenuDropdown(int16_t dropdownIndex) w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_PATHS; break; case DDIDX_INVISIBLE_SUPPORTS: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS; + if (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) + w->viewport->flags = w->viewport->flags + & ~(VIEWPORT_FLAG_SEETHROUGH_SUPPORTS | VIEWPORT_FLAG_INVISIBLE_SUPPORTS); + else + w->viewport->flags |= (VIEWPORT_FLAG_SEETHROUGH_SUPPORTS | VIEWPORT_FLAG_INVISIBLE_SUPPORTS); break; case DDIDX_INVISIBLE_PEEPS: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS; + if (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_GUESTS || w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_STAFF) + w->viewport->flags = w->viewport->flags & ~(VIEWPORT_FLAG_INVISIBLE_GUESTS | VIEWPORT_FLAG_INVISIBLE_STAFF); + else + w->viewport->flags |= (VIEWPORT_FLAG_INVISIBLE_GUESTS | VIEWPORT_FLAG_INVISIBLE_STAFF); break; case DDIDX_LAND_HEIGHTS: w->viewport->flags ^= VIEWPORT_FLAG_LAND_HEIGHTS; diff --git a/src/openrct2-ui/windows/Transparency.cpp b/src/openrct2-ui/windows/Transparency.cpp index d4911e714d..6b8b17751d 100644 --- a/src/openrct2-ui/windows/Transparency.cpp +++ b/src/openrct2-ui/windows/Transparency.cpp @@ -9,8 +9,8 @@ #include #include -#include #include +#include #include #include #include @@ -45,32 +45,26 @@ enum WINDOW_TRANSPARENCY_WIDGET_IDX WIDX_PAGE_BACKGROUND, WIDX_TAB_1, WIDX_TAB_2, - WIDX_TAB_3, WIDX_TAB_CONTENT, - WIDX_TERRAIN_GROUP = WIDX_TAB_CONTENT, - WIDX_UNDERGROUND_VIEW, - WIDX_TRANSPARENT_WATER, - WIDX_HIDE_BASE_LAND, - WIDX_HIDE_VERTICAL_FACES, - WIDX_SEE_THROUGH_GROUP, - WIDX_SEE_THROUGH_RIDES, + WIDX_SEE_THROUGH_RIDES = WIDX_TAB_CONTENT, WIDX_SEE_THROUGH_VEHICLES, WIDX_SEE_THROUGH_SCENERY, WIDX_SEE_THROUGH_TREES, WIDX_SEE_THROUGH_PATHS, - WIDX_INVISIBLE_GROUP, + WIDX_SEE_THROUGH_SUPPORTS, + WIDX_INVISIBLE_GUESTS, + WIDX_INVISIBLE_STAFF, WIDX_INVISIBLE_RIDES, + WIDX_INVISIBLE_VEHICLES, WIDX_INVISIBLE_SCENERY, WIDX_INVISIBLE_TREES, WIDX_INVISIBLE_PATHS, WIDX_INVISIBLE_SUPPORTS, - WIDX_INVISIBLE_GUESTS, - WIDX_INVISIBLE_STAFF, WIDX_LIST = WIDX_TAB_CONTENT, - WIDX_PLACEHOLDER_MISC = WIDX_TAB_CONTENT, + WIDX_MISC_GROUP = WIDX_TAB_CONTENT, }; #pragma region MEASUREMENTS @@ -79,6 +73,9 @@ static constexpr const rct_string_id WINDOW_TITLE = STR_TRANSPARENCY_OPTIONS_TIT static constexpr const int32_t WW = 249; static constexpr const int32_t WH = 300; +static constexpr ScreenSize ICON_BUTTON = {24, 24}; +static constexpr ScreenSize FLAT_BUTTON = {24, 12}; + static constexpr ScreenSize CHEAT_BUTTON = {110, 17}; static constexpr ScreenSize CHEAT_CHECK = {221, 12}; static constexpr ScreenSize CHEAT_SPINNER = {117, 14}; @@ -92,39 +89,30 @@ static constexpr const int32_t TAB_START = 3; #define MAIN_TRANSPARENCY_WIDGETS \ WINDOW_SHIM(WINDOW_TITLE, WW, WH), \ - MakeWidget({ 0, 43}, {WW, 257}, WindowWidgetType::ImgBtn, WindowColour::Secondary), /* tab content panel */ \ - MakeTab ({ 3, 17}, STR_FINANCIAL_CHEATS_TIP ), /* tab 1 */ \ - MakeTab ({34, 17}, STR_RIDE_CHEATS_TIP ), /* tab 2 */ \ - MakeTab ({65, 17}, STR_PARK_CHEATS_TIP ) /* tab 3 */ + MakeWidget({ 0, 81}, {WW, 257}, WindowWidgetType::ImgBtn, WindowColour::Secondary), /* tab content panel */ \ + MakeTab ({ 3, 55}, STR_TRANSPARENCY_OPTIONS_TITLE_MAIN), /* tab 1 */ \ + MakeTab ({34, 55}, STR_TRANSPARENCY_OPTIONS_TITLE_RIDE) // 15px group padding top, 17px margin between lines, 17px group padding bottom. 22px group margin bottom static rct_widget window_transparency_main_widgets[] = { MAIN_TRANSPARENCY_WIDGETS, - MakeWidget({ 5, 48}, {238, 83}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // General parameters group frame - MakeWidget({ 11, 63}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_UNDERGROUND_VIEW, STR_UNDERGROUND_VIEW), - MakeWidget({ 11, 80}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_VIEWPORT_TRANSPARENT_WATER, STR_VIEWPORT_TRANSPARENT_WATER), - MakeWidget({ 11, 97}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_REMOVE_BASE_LAND, STR_REMOVE_BASE_LAND), - MakeWidget({ 11, 114}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_REMOVE_VERTICAL_FACES, STR_REMOVE_VERTICAL_FACES), - - MakeWidget({ 5, 136}, {238, 100}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // See-through parameters group frame + MakeWidget({102, 15}, ICON_BUTTON, WindowWidgetType::ImgBtn, WindowColour::Secondary, SPR_RIDE, STR_SEE_THROUGH_RIDES), + MakeWidget({127, 15}, ICON_BUTTON, WindowWidgetType::Button, WindowColour::Secondary, STR_NONE, STR_SEE_THROUGH_VEHICLES), + MakeWidget({ 27, 15}, ICON_BUTTON, WindowWidgetType::ImgBtn, WindowColour::Secondary, SPR_G2_BUTTON_LARGE_SCENERY, STR_SEE_THROUGH_SCENERY), + MakeWidget({ 2, 15}, ICON_BUTTON, WindowWidgetType::ImgBtn, WindowColour::Secondary, SPR_G2_BUTTON_TREES, STR_SEE_THROUGH_TREES), + MakeWidget({ 52, 15}, ICON_BUTTON, WindowWidgetType::ImgBtn, WindowColour::Secondary, SPR_G2_BUTTON_FOOTPATH, STR_SEE_THROUGH_PATHS), + MakeWidget({ 77, 15}, ICON_BUTTON, WindowWidgetType::Button, WindowColour::Secondary, STR_NONE, STR_SEE_THROUGH_SUPPORTS), + MakeWidget({152, 15}, ICON_BUTTON, WindowWidgetType::ImgBtn, WindowColour::Secondary, SPR_GUESTS, STR_INVISIBLE_GUESTS), + MakeWidget({177, 15}, ICON_BUTTON, WindowWidgetType::ImgBtn, WindowColour::Secondary, SPR_MECHANIC, STR_INVISIBLE_STAFF), - MakeWidget({ 11, 151}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_RIDES, STR_SEE_THROUGH_RIDES), - MakeWidget({ 11, 168}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_VEHICLES, STR_SEE_THROUGH_VEHICLES), - MakeWidget({ 11, 185}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_SCENERY, STR_SEE_THROUGH_SCENERY), - MakeWidget({ 11, 202}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_TREES, STR_SEE_THROUGH_TREES), // Trees - MakeWidget({ 11, 219}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_PATHS, STR_SEE_THROUGH_PATHS), - - MakeWidget({ 5, 241}, {238, 134}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // Invisible parameters group frame - - MakeWidget({ 11, 256}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_RIDES, STR_INVISIBLE_RIDES), - MakeWidget({ 11, 273}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_SCENERY, STR_INVISIBLE_SCENERY), - MakeWidget({ 11, 290}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_TREES, STR_INVISIBLE_TREES), // Trees - MakeWidget({ 11, 307}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_PATHS, STR_INVISIBLE_PATHS), - MakeWidget({ 11, 324}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_SUPPORTS, STR_INVISIBLE_SUPPORTS), - MakeWidget({ 11, 341}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_GUESTS, STR_INVISIBLE_GUESTS), // Guests - MakeWidget({ 11, 358}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_STAFF, STR_INVISIBLE_STAFF), // Staff + MakeWidget({102, 40}, FLAT_BUTTON, WindowWidgetType::Button, WindowColour::Tertiary, STR_NONE, STR_INVISIBLE_RIDES), + MakeWidget({127, 40}, FLAT_BUTTON, WindowWidgetType::Button, WindowColour::Tertiary, STR_NONE, STR_INVISIBLE_VEHICLES), + MakeWidget({ 27, 40}, FLAT_BUTTON, WindowWidgetType::Button, WindowColour::Tertiary, STR_NONE, STR_INVISIBLE_SCENERY), + MakeWidget({ 2, 40}, FLAT_BUTTON, WindowWidgetType::Button, WindowColour::Tertiary, STR_NONE, STR_INVISIBLE_TREES), + MakeWidget({ 52, 40}, FLAT_BUTTON, WindowWidgetType::Button, WindowColour::Tertiary, STR_NONE, STR_INVISIBLE_PATHS), + MakeWidget({ 77, 40}, FLAT_BUTTON, WindowWidgetType::Button, WindowColour::Tertiary, STR_NONE, STR_INVISIBLE_SUPPORTS), { WIDGETS_END }, }; @@ -132,15 +120,7 @@ static rct_widget window_transparency_main_widgets[] = static rct_widget window_transparency_rides_widgets[] = { MAIN_TRANSPARENCY_WIDGETS, - MakeWidget({ 4, 60}, {288, 327}, WindowWidgetType::Scroll, WindowColour::Secondary, SCROLL_VERTICAL), - { WIDGETS_END }, -}; - -//Strings for following moved to window_cheats_paint() -static rct_widget window_transparency_misc_widgets[] = -{ - MAIN_TRANSPARENCY_WIDGETS, - MakeWidget ({ 5, 48}, {238, 60}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GENERAL_GROUP), // General group + MakeWidget({ 4, 95}, {160, 120}, WindowWidgetType::Scroll, WindowColour::Secondary, SCROLL_VERTICAL), { WIDGETS_END }, }; @@ -148,42 +128,39 @@ static rct_widget *window_transparency_page_widgets[] = { window_transparency_main_widgets, window_transparency_rides_widgets, - window_transparency_misc_widgets, }; -#define MAIN_TRANSPARENCY_ENABLED_WIDGETS (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) +#define MAIN_TRANSPARENCY_ENABLED_WIDGETS (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) static uint64_t window_transparency_page_enabled_widgets[] = { MAIN_TRANSPARENCY_ENABLED_WIDGETS | - (1ULL << WIDX_TERRAIN_GROUP) | - (1ULL << WIDX_UNDERGROUND_VIEW) | - (1ULL << WIDX_TRANSPARENT_WATER) | - (1ULL << WIDX_HIDE_BASE_LAND) | - (1ULL << WIDX_HIDE_VERTICAL_FACES) | - (1ULL << WIDX_SEE_THROUGH_GROUP) | (1ULL << WIDX_SEE_THROUGH_RIDES) | (1ULL << WIDX_SEE_THROUGH_VEHICLES) | (1ULL << WIDX_SEE_THROUGH_SCENERY) | (1ULL << WIDX_SEE_THROUGH_TREES) | (1ULL << WIDX_SEE_THROUGH_PATHS) | - (1ULL << WIDX_INVISIBLE_GROUP) | (1ULL << WIDX_INVISIBLE_RIDES) | + (1ULL << WIDX_INVISIBLE_VEHICLES) | (1ULL << WIDX_INVISIBLE_SCENERY) | (1ULL << WIDX_INVISIBLE_TREES) | (1ULL << WIDX_INVISIBLE_PATHS) | (1ULL << WIDX_INVISIBLE_SUPPORTS) | (1ULL << WIDX_INVISIBLE_GUESTS) | - (1ULL << WIDX_INVISIBLE_STAFF), + (1ULL << WIDX_INVISIBLE_STAFF) | + (1ULL << WIDX_SEE_THROUGH_SUPPORTS), MAIN_TRANSPARENCY_ENABLED_WIDGETS | (1ULL << WIDX_LIST), MAIN_TRANSPARENCY_ENABLED_WIDGETS | - (1ULL << WIDX_PLACEHOLDER_MISC) + (1ULL << WIDX_MISC_GROUP) +}; +static uint64_t window_transparency_page_disabled_widgets[] = { + 0, }; static uint64_t window_transparency_page_hold_down_widgets[] = { - WIDX_UNDERGROUND_VIEW, + 0, }; static rct_string_id window_transparency_page_titles[] = { @@ -226,7 +203,6 @@ public: break; case WIDX_TAB_1: case WIDX_TAB_2: - case WIDX_TAB_3: SetPage(widgetIndex - WIDX_TAB_1); break; default: @@ -238,6 +214,9 @@ public: case WINDOW_TRANSPARENCY_PAGE_RIDES: OnMouseUpRides(widgetIndex); break; + case WINDOW_TRANSPARENCY_PAGE_MISC: + OnMouseUpMisc(widgetIndex); + break; } break; } @@ -247,73 +226,27 @@ public: { } - void OnMouseUpMain(rct_widgetindex widgetIndex) - { - rct_window* w = window_get_main(); - if (w == nullptr) - return; - - switch (widgetIndex) - { - case WIDX_UNDERGROUND_VIEW: - w->viewport->flags ^= VIEWPORT_FLAG_UNDERGROUND_INSIDE; - break; - case WIDX_TRANSPARENT_WATER: - gConfigGeneral.transparent_water ^= 1; - config_save_default(); - break; - case WIDX_HIDE_BASE_LAND: - w->viewport->flags ^= VIEWPORT_FLAG_HIDE_BASE; - break; - case WIDX_HIDE_VERTICAL_FACES: - w->viewport->flags ^= VIEWPORT_FLAG_HIDE_VERTICAL; - break; - case WIDX_SEE_THROUGH_RIDES: - w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_RIDES; - break; - case WIDX_SEE_THROUGH_VEHICLES: - w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_VEHICLES; - break; - case WIDX_SEE_THROUGH_SCENERY: - w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_SCENERY; - break; - case WIDX_SEE_THROUGH_TREES: - w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_TREES; - break; - case WIDX_SEE_THROUGH_PATHS: - w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_PATHS; - break; - case WIDX_INVISIBLE_RIDES: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_RIDES; - break; - case WIDX_INVISIBLE_SCENERY: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SCENERY; - break; - case WIDX_INVISIBLE_TREES: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_TREES; - break; - case WIDX_INVISIBLE_PATHS: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PATHS; - break; - case WIDX_INVISIBLE_SUPPORTS: - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS; - break; - case WIDX_INVISIBLE_GUESTS: - if (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS) - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS; - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_GUESTS; - break; - case WIDX_INVISIBLE_STAFF: - if (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS) - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS; - w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_STAFF; - break; - } - } - void OnMouseUpRides(rct_widgetindex widgetIndex) { - // TODO: Get the clicked on ride id, get the ride, set toggle is_visible + } + + void OnScrollMouseDown(int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override + { + auto i = screenCoords.y / SCROLLABLE_ROW_HEIGHT; + // i += static_cast(_selectedPage * GUESTS_PER_PAGE); + for (const auto& rideItem : _rideList) + { + if (i == 0) + { + auto ridec = get_ride(rideItem); + if (ridec != nullptr) + { + ridec->is_visible = (ridec->is_visible == true ? false : true); + } + break; + } + i--; + } } void OnPrepareDraw() override @@ -343,29 +276,23 @@ public: switch (page) { case WINDOW_TRANSPARENCY_PAGE_MAIN: - SetCheckboxValue(WIDX_UNDERGROUND_VIEW, (w->viewport->flags & VIEWPORT_FLAG_UNDERGROUND_INSIDE)); - SetCheckboxValue(WIDX_TRANSPARENT_WATER, (gConfigGeneral.transparent_water == 1)); - SetCheckboxValue(WIDX_HIDE_BASE_LAND, (w->viewport->flags & VIEWPORT_FLAG_HIDE_BASE)); - SetCheckboxValue(WIDX_HIDE_VERTICAL_FACES, (w->viewport->flags & VIEWPORT_FLAG_HIDE_VERTICAL)); - SetCheckboxValue(WIDX_SEE_THROUGH_RIDES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_RIDES)); - SetCheckboxValue(WIDX_SEE_THROUGH_VEHICLES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_VEHICLES)); - SetCheckboxValue(WIDX_SEE_THROUGH_SCENERY, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_SCENERY)); - SetCheckboxValue(WIDX_SEE_THROUGH_TREES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_TREES)); - SetCheckboxValue(WIDX_SEE_THROUGH_PATHS, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_PATHS)); - SetCheckboxValue(WIDX_INVISIBLE_RIDES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_RIDES)); - SetCheckboxValue(WIDX_INVISIBLE_SCENERY, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SCENERY)); - SetCheckboxValue(WIDX_INVISIBLE_TREES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_TREES)); - SetCheckboxValue(WIDX_INVISIBLE_PATHS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PATHS)); - SetCheckboxValue(WIDX_INVISIBLE_SUPPORTS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS)); - SetCheckboxValue( - WIDX_INVISIBLE_GUESTS, - (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_GUESTS) - || (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS)); - SetCheckboxValue( - WIDX_INVISIBLE_STAFF, - (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_STAFF) - || (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS)); - break; + SetWidgetPressed(WIDX_SEE_THROUGH_RIDES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_RIDES)); + SetWidgetPressed(WIDX_SEE_THROUGH_VEHICLES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_VEHICLES)); + SetWidgetPressed(WIDX_SEE_THROUGH_SCENERY, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_SCENERY)); + SetWidgetPressed(WIDX_SEE_THROUGH_TREES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_TREES)); + SetWidgetPressed(WIDX_SEE_THROUGH_PATHS, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_PATHS)); + SetWidgetPressed(WIDX_SEE_THROUGH_SUPPORTS, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS)); + SetWidgetPressed(WIDX_INVISIBLE_RIDES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_RIDES)); + SetWidgetPressed(WIDX_INVISIBLE_VEHICLES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_VEHICLES)); + SetWidgetPressed(WIDX_INVISIBLE_SCENERY, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SCENERY)); + SetWidgetPressed(WIDX_INVISIBLE_TREES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_TREES)); + SetWidgetPressed(WIDX_INVISIBLE_PATHS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PATHS)); + SetWidgetPressed(WIDX_INVISIBLE_SUPPORTS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS)); + SetWidgetPressed(WIDX_INVISIBLE_GUESTS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_GUESTS)); + SetWidgetPressed(WIDX_INVISIBLE_STAFF, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_STAFF)); + break; + case WINDOW_TRANSPARENCY_PAGE_MISC: + break; } } @@ -417,7 +344,6 @@ private: constexpr const uint16_t tabs[] = { WIDX_TAB_1, WIDX_TAB_2, - WIDX_TAB_3, }; auto left = TAB_START; @@ -433,7 +359,7 @@ private: void DrawTabImages(rct_drawpixelinfo& dpi) { - // Money tab + // Main tab if (!IsWidgetDisabled(WIDX_TAB_1)) { uint32_t sprite_idx = SPR_TAB_FINANCES_SUMMARY_0; @@ -452,21 +378,60 @@ private: gfx_draw_sprite( &dpi, ImageId(sprite_idx), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_2].left, widgets[WIDX_TAB_2].top }); } - - // Guests tab - if (!IsWidgetDisabled(WIDX_TAB_3)) - { - uint32_t sprite_idx = SPR_TAB_GUESTS_0; - if (page == WINDOW_TRANSPARENCY_PAGE_MISC) - sprite_idx += (frame_no / 3) % 8; - gfx_draw_sprite( - &dpi, ImageId(sprite_idx), windowPos + ScreenCoordsXY{ widgets[WIDX_TAB_3].left, widgets[WIDX_TAB_3].top }); - } } - void OnMouseDownMisc(rct_widgetindex widgetIndex) + void OnMouseUpMain(rct_widgetindex widgetIndex) { - // auto* widget = &widgets[widgetIndex]; + rct_window* w = window_get_main(); + if (w == nullptr) + return; + + switch (widgetIndex) + { + case WIDX_SEE_THROUGH_RIDES: + w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_RIDES; + break; + case WIDX_SEE_THROUGH_VEHICLES: + w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_VEHICLES; + break; + case WIDX_SEE_THROUGH_SCENERY: + w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_SCENERY; + break; + case WIDX_SEE_THROUGH_TREES: + w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_TREES; + break; + case WIDX_SEE_THROUGH_PATHS: + w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_PATHS; + break; + case WIDX_SEE_THROUGH_SUPPORTS: + w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_SUPPORTS; + break; + case WIDX_INVISIBLE_RIDES: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_RIDES; + break; + case WIDX_INVISIBLE_VEHICLES: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_VEHICLES; + break; + case WIDX_INVISIBLE_SCENERY: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SCENERY; + break; + case WIDX_INVISIBLE_TREES: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_TREES; + break; + case WIDX_INVISIBLE_PATHS: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PATHS; + break; + case WIDX_INVISIBLE_SUPPORTS: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS; + break; + case WIDX_INVISIBLE_GUESTS: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_GUESTS; + break; + case WIDX_INVISIBLE_STAFF: + w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_STAFF; + break; + } + w->Invalidate(); } void OnMouseUpMisc(rct_widgetindex widgetIndex) @@ -477,18 +442,11 @@ private: { } - void OnMouseDownRides(rct_widgetindex widgetIndex) - { - } - void OnScrollDraw(int32_t scrollIndex, rct_drawpixelinfo& dpi) override { ScreenCoordsXY screenCoords; auto bgColour = ThemeGetColour(WC_CUSTOM, 0); - //uint8_t paletteIndex = ColourMapA[w->colours[1]].mid_light; - //gfx_clear(dpi, paletteIndex); - screenCoords.y = 2; for (size_t i = 0; i < _rideList.size(); i++) { diff --git a/src/openrct2/entity/Peep.cpp b/src/openrct2/entity/Peep.cpp index 0ece4f2e33..64deb807ba 100644 --- a/src/openrct2/entity/Peep.cpp +++ b/src/openrct2/entity/Peep.cpp @@ -2733,10 +2733,6 @@ void Peep::Paint(paint_session& session, int32_t imageDirection) const return; } - if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS) - { - return; - } if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS) && Is()) { return; diff --git a/src/openrct2/interface/Screenshot.cpp b/src/openrct2/interface/Screenshot.cpp index 3522cb3c55..b45a84ccee 100644 --- a/src/openrct2/interface/Screenshot.cpp +++ b/src/openrct2/interface/Screenshot.cpp @@ -564,7 +564,7 @@ static void ApplyOptions(const ScreenshotOptions* options, rct_viewport& viewpor if (options->hide_guests) { - viewport.flags |= VIEWPORT_FLAG_INVISIBLE_PEEPS; + viewport.flags |= VIEWPORT_FLAG_INVISIBLE_GUESTS | VIEWPORT_FLAG_INVISIBLE_STAFF; } if (options->hide_sprites) diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index cbf876bcae..f5f550e0a3 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -1319,8 +1319,10 @@ void viewport_set_visibility(uint8_t mode) uint32_t mask = VIEWPORT_FLAG_UNDERGROUND_INSIDE | VIEWPORT_FLAG_SEETHROUGH_RIDES | VIEWPORT_FLAG_SEETHROUGH_SCENERY | VIEWPORT_FLAG_SEETHROUGH_PATHS | VIEWPORT_FLAG_INVISIBLE_SUPPORTS | VIEWPORT_FLAG_LAND_HEIGHTS | VIEWPORT_FLAG_TRACK_HEIGHTS | VIEWPORT_FLAG_PATH_HEIGHTS - | VIEWPORT_FLAG_INVISIBLE_PEEPS | VIEWPORT_FLAG_HIDE_BASE | VIEWPORT_FLAG_HIDE_VERTICAL - | VIEWPORT_FLAG_SEETHROUGH_VEHICLES; + | VIEWPORT_FLAG_INVISIBLE_GUESTS | VIEWPORT_FLAG_INVISIBLE_STAFF | VIEWPORT_FLAG_HIDE_BASE + | VIEWPORT_FLAG_HIDE_VERTICAL | VIEWPORT_FLAG_SEETHROUGH_VEHICLES | VIEWPORT_FLAG_INVISIBLE_RIDES + | VIEWPORT_FLAG_INVISIBLE_VEHICLES | VIEWPORT_FLAG_SEETHROUGH_SUPPORTS | VIEWPORT_FLAG_INVISIBLE_PATHS + | VIEWPORT_FLAG_INVISIBLE_SCENERY | VIEWPORT_FLAG_SEETHROUGH_TREES | VIEWPORT_FLAG_INVISIBLE_TREES; invalidate += vp->flags & mask; vp->flags &= ~mask; diff --git a/src/openrct2/interface/Viewport.h b/src/openrct2/interface/Viewport.h index 55c74d9858..4f223b9ee2 100644 --- a/src/openrct2/interface/Viewport.h +++ b/src/openrct2/interface/Viewport.h @@ -40,7 +40,7 @@ enum VIEWPORT_FLAG_LAND_OWNERSHIP = (1 << 8), VIEWPORT_FLAG_CONSTRUCTION_RIGHTS = (1 << 9), VIEWPORT_FLAG_SOUND_ON = (1 << 10), - VIEWPORT_FLAG_INVISIBLE_PEEPS = (1 << 11), + VIEWPORT_FLAG_INVISIBLE_PEEPS = (1 << 11), // No longer used (seperated into GUESTS and STAFF) VIEWPORT_FLAG_HIDE_BASE = (1 << 12), VIEWPORT_FLAG_HIDE_VERTICAL = (1 << 13), VIEWPORT_FLAG_INVISIBLE_SPRITES = (1 << 14), @@ -50,13 +50,16 @@ enum VIEWPORT_FLAG_HIGHLIGHT_PATH_ISSUES = (1 << 18), VIEWPORT_FLAG_TRANSPARENT_BACKGROUND = (1 << 19), VIEWPORT_FLAG_SEETHROUGH_VEHICLES = (1 << 20), - VIEWPORT_FLAG_INVISIBLE_RIDES = (1 << 21), - VIEWPORT_FLAG_INVISIBLE_SCENERY = (1 << 22), - VIEWPORT_FLAG_INVISIBLE_PATHS = (1 << 23), - VIEWPORT_FLAG_INVISIBLE_GUESTS = (1 << 24), - VIEWPORT_FLAG_INVISIBLE_STAFF = (1 << 25), - VIEWPORT_FLAG_SEETHROUGH_TREES = (1 << 26), - VIEWPORT_FLAG_INVISIBLE_TREES = (1 << 27), + VIEWPORT_FLAG_INVISIBLE_VEHICLES = (1 << 21), + VIEWPORT_FLAG_INVISIBLE_RIDES = (1 << 22), + VIEWPORT_FLAG_INVISIBLE_SCENERY = (1 << 23), + VIEWPORT_FLAG_INVISIBLE_PATHS = (1 << 24), + VIEWPORT_FLAG_INVISIBLE_GUESTS = (1 << 25), + VIEWPORT_FLAG_INVISIBLE_STAFF = (1 << 26), + VIEWPORT_FLAG_SEETHROUGH_TREES = (1 << 27), + VIEWPORT_FLAG_INVISIBLE_TREES = (1 << 28), + VIEWPORT_FLAG_SEETHROUGH_SUPPORTS = (1 << 29), + VIEWPORT_FLAG_TRANSPARENCY_FOREGROUND = (1 << 30), }; enum class ViewportInteractionItem : uint8_t diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 59151a0b9e..e56082ad8c 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -3941,6 +3941,8 @@ enum : uint16_t STR_TRANSPARENCY_OPTIONS_TITLE_MAIN = 6481, STR_TRANSPARENCY_OPTIONS_TITLE_RIDE = 6482, STR_TRANSPARENCY_OPTIONS_TITLE_MISC = 6483, + STR_INVISIBLE_VEHICLES = 6484, + STR_SEE_THROUGH_SUPPORTS = 6485, // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working /* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index 5944b47c87..448e67f025 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -722,7 +722,7 @@ static ImageId PaintPSColourifyImage(ImageId imageId, ViewportInteractionItem sp break; } } - if (viewFlags & VIEWPORT_FLAG_INVISIBLE_PATHS) + if (viewFlags & VIEWPORT_FLAG_SEETHROUGH_PATHS && viewFlags & VIEWPORT_FLAG_INVISIBLE_PATHS) { switch (spriteType) { @@ -734,7 +734,7 @@ static ImageId PaintPSColourifyImage(ImageId imageId, ViewportInteractionItem sp break; } } - if (viewFlags & VIEWPORT_FLAG_INVISIBLE_SCENERY) + if (viewFlags & VIEWPORT_FLAG_SEETHROUGH_SCENERY && viewFlags & VIEWPORT_FLAG_INVISIBLE_SCENERY) { switch (spriteType) { diff --git a/src/openrct2/paint/Supports.cpp b/src/openrct2/paint/Supports.cpp index a990a7bd4a..ce7279a5a1 100644 --- a/src/openrct2/paint/Supports.cpp +++ b/src/openrct2/paint/Supports.cpp @@ -445,6 +445,10 @@ static constexpr const uint16_t word_97B3C4[] = { 15, 0, }; + +constexpr uint32_t primaryColour = COLOUR_BRIGHT_YELLOW; +constexpr uint32_t secondaryColour = COLOUR_GREY; +constexpr uint32_t seeThoughFlags = IMAGE_TYPE_TRANSPARENT | (primaryColour << 19) | (secondaryColour << 24); // clang-format on bool wooden_a_supports_paint_setup( @@ -472,14 +476,19 @@ bool wooden_b_supports_paint_setup( bool wooden_a_supports_paint_setup( paint_session& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate) { + if (!(session.Flags & PaintSessionFlags::PassedSurface)) + { + return false; + } + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) { return false; } - if (!(session.Flags & PaintSessionFlags::PassedSurface)) + if (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) { - return false; + imageTemplate = ImageId().WithTransparancy(FilterPaletteID::PaletteDarken1); } int32_t z = floor2(session.Support.height + 15, 16); @@ -629,16 +638,19 @@ bool wooden_a_supports_paint_setup( bool wooden_b_supports_paint_setup( paint_session& session, int32_t supportType, int32_t special, int32_t height, ImageId imageTemplate) { - bool _9E32B1 = false; + if (!(session.Flags & PaintSessionFlags::PassedSurface)) + { + return false; + } if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) { return false; } - if (!(session.Flags & PaintSessionFlags::PassedSurface)) + if (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) { - return false; + imageTemplate = ImageId().WithTransparancy(FilterPaletteID::PaletteDarken1); } uint16_t baseHeight = ceil2(session.Support.height, 16); @@ -651,8 +663,8 @@ bool wooden_b_supports_paint_setup( int16_t heightSteps = supportLength / 16; + bool _9E32B1 = false; bool goTo662E8B = false; - if (session.Support.slope & 0x20) { goTo662E8B = true; @@ -801,14 +813,19 @@ bool metal_a_supports_paint_setup( { support_height* supportSegments = session.SupportSegments; + if (!(session.Flags & PaintSessionFlags::PassedSurface)) + { + return false; + } + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) { return false; } - if (!(session.Flags & PaintSessionFlags::PassedSurface)) + if (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) { - return false; + imageColourFlags = ImageId(0).WithTransparancy(FilterPaletteID::PaletteDarken1).ToUInt32(); } int16_t originalHeight = height; @@ -1000,14 +1017,19 @@ bool metal_b_supports_paint_setup( support_height* supportSegments = session.SupportSegments; uint8_t originalSegment = segment; - if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) + if (!(session.Flags & PaintSessionFlags::PassedSurface)) { return false; // AND } - if (!(session.Flags & PaintSessionFlags::PassedSurface)) + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) { - return false; // AND + return false; + } + + if (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) + { + imageColourFlags = ImageId(0).WithTransparancy(FilterPaletteID::PaletteDarken1).ToUInt32(); } uint16_t _9E3294 = 0xFFFF; @@ -1180,14 +1202,19 @@ bool path_a_supports_paint_setup( *underground = false; // AND } + if (!(session.Flags & PaintSessionFlags::PassedSurface)) + { + return false; + } + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) { return false; } - if (!(session.Flags & PaintSessionFlags::PassedSurface)) + if (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) { - return false; + imageTemplate = ImageId().WithTransparancy(FilterPaletteID::PaletteDarken1); } uint16_t baseHeight = ceil2(session.Support.height, 16); @@ -1330,14 +1357,19 @@ bool path_b_supports_paint_setup( { support_height* supportSegments = session.SupportSegments; - if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) - { - return false; // AND - } - if (!(session.Flags & PaintSessionFlags::PassedSurface)) { - return false; // AND + return false; + } + + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS) + { + return false; + } + + if (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS) + { + imageTemplate = ImageId().WithTransparancy(FilterPaletteID::PaletteDarken1); } if (height < supportSegments[segment].height) diff --git a/src/openrct2/paint/tile_element/Paint.Entrance.cpp b/src/openrct2/paint/tile_element/Paint.Entrance.cpp index 0822dd511a..0e28aa6b67 100644 --- a/src/openrct2/paint/tile_element/Paint.Entrance.cpp +++ b/src/openrct2/paint/tile_element/Paint.Entrance.cpp @@ -125,7 +125,8 @@ static void PaintRideEntranceExit(paint_session& session, uint8_t direction, int return; } - if ((session->ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES) && ride->is_visible == false) + if ((session->ViewFlags & VIEWPORT_FLAG_SEETHROUGH_RIDES && session->ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES) + && ride->is_visible == false) return; auto stationObj = ride->GetStationObject(); diff --git a/src/openrct2/ride/TrackPaint.cpp b/src/openrct2/ride/TrackPaint.cpp index 466cccfb0e..e075f84bc2 100644 --- a/src/openrct2/ride/TrackPaint.cpp +++ b/src/openrct2/ride/TrackPaint.cpp @@ -2195,7 +2195,8 @@ void PaintTrack(paint_session& session, Direction direction, int32_t height, con return; } - if ((session->ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES) && ride->is_visible == false) + if ((session->ViewFlags & VIEWPORT_FLAG_SEETHROUGH_RIDES && session->ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES) + && ride->is_visible == false) return; if ((!gTrackDesignSaveMode || rideIndex == gTrackDesignSaveRideIndex) diff --git a/src/openrct2/ride/gentle/MiniGolf.cpp b/src/openrct2/ride/gentle/MiniGolf.cpp index 5eaae31483..65671bf759 100644 --- a/src/openrct2/ride/gentle/MiniGolf.cpp +++ b/src/openrct2/ride/gentle/MiniGolf.cpp @@ -1213,7 +1213,7 @@ void vehicle_visual_mini_golf_player( return; } - if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS) || (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS)) + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS) { return; } @@ -1255,7 +1255,7 @@ void vehicle_visual_mini_golf_ball( return; } - if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS) || (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS)) + if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS) { return; }