1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 19:13:07 +01:00

Code cleanup, remove ignore_invisible_flag.

Known issues:
- Some flat-rides have transparency issues
This commit is contained in:
Kane
2021-10-23 20:53:13 +11:00
committed by Ted John
parent ffb5affee2
commit 20cd8465f5
6 changed files with 47 additions and 46 deletions

View File

@@ -121,96 +121,102 @@ public:
void OnPrepareDraw() override
{
uint32_t wflags = 0;
rct_window* w = window_get_main();
pressed_widgets = 0;
disabled_widgets = 0;
rct_window* w = window_get_main();
if (w == nullptr)
return;
if (w != nullptr)
wflags = w->viewport->flags;
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));
SetWidgetPressed(WIDX_SEE_THROUGH_RIDES, (wflags & VIEWPORT_FLAG_SEETHROUGH_RIDES));
SetWidgetPressed(WIDX_SEE_THROUGH_VEHICLES, (wflags & VIEWPORT_FLAG_SEETHROUGH_VEHICLES));
SetWidgetPressed(WIDX_SEE_THROUGH_SCENERY, (wflags & VIEWPORT_FLAG_SEETHROUGH_SCENERY));
SetWidgetPressed(WIDX_SEE_THROUGH_TREES, (wflags & VIEWPORT_FLAG_SEETHROUGH_TREES));
SetWidgetPressed(WIDX_SEE_THROUGH_PATHS, (wflags & VIEWPORT_FLAG_SEETHROUGH_PATHS));
SetWidgetPressed(WIDX_SEE_THROUGH_SUPPORTS, (wflags & VIEWPORT_FLAG_SEETHROUGH_SUPPORTS));
SetWidgetPressed(WIDX_INVISIBLE_RIDES, (wflags & VIEWPORT_FLAG_INVISIBLE_RIDES));
SetWidgetPressed(WIDX_INVISIBLE_VEHICLES, (wflags & VIEWPORT_FLAG_INVISIBLE_VEHICLES));
SetWidgetPressed(WIDX_INVISIBLE_SCENERY, (wflags & VIEWPORT_FLAG_INVISIBLE_SCENERY));
SetWidgetPressed(WIDX_INVISIBLE_TREES, (wflags & VIEWPORT_FLAG_INVISIBLE_TREES));
SetWidgetPressed(WIDX_INVISIBLE_PATHS, (wflags & VIEWPORT_FLAG_INVISIBLE_PATHS));
SetWidgetPressed(WIDX_INVISIBLE_SUPPORTS, (wflags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS));
SetWidgetPressed(WIDX_INVISIBLE_GUESTS, (wflags & VIEWPORT_FLAG_INVISIBLE_GUESTS));
SetWidgetPressed(WIDX_INVISIBLE_STAFF, (wflags & VIEWPORT_FLAG_INVISIBLE_STAFF));
}
void OnDraw(rct_drawpixelinfo& dpi) override
{
DrawWidgets(dpi);
// Locate mechanic button image
rct_widget* widget = &widgets[WIDX_INVISIBLE_STAFF];
auto screenCoords = windowPos + ScreenCoordsXY{ widget->left, widget->top };
const auto& widget = widgets[WIDX_INVISIBLE_STAFF];
auto screenCoords = windowPos + ScreenCoordsXY{ widget.left, widget.top };
gfx_draw_sprite(
&dpi, (gStaffMechanicColour << 24) | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS | SPR_MECHANIC, screenCoords, 0);
}
OpenRCT2String OnTooltip(rct_widgetindex widgetIndex, rct_string_id fallback) override
{
return { fallback, {} };
}
private:
void OnMouseUpMain(rct_widgetindex widgetIndex)
{
uint32_t wflags = 0;
rct_window* w = window_get_main();
if (w == nullptr)
return;
wflags = w->viewport->flags;
switch (widgetIndex)
{
case WIDX_SEE_THROUGH_RIDES:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_RIDES;
wflags ^= VIEWPORT_FLAG_SEETHROUGH_RIDES;
break;
case WIDX_SEE_THROUGH_VEHICLES:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_VEHICLES;
wflags ^= VIEWPORT_FLAG_SEETHROUGH_VEHICLES;
break;
case WIDX_SEE_THROUGH_SCENERY:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_SCENERY;
wflags ^= VIEWPORT_FLAG_SEETHROUGH_SCENERY;
break;
case WIDX_SEE_THROUGH_TREES:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_TREES;
wflags ^= VIEWPORT_FLAG_SEETHROUGH_TREES;
break;
case WIDX_SEE_THROUGH_PATHS:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_PATHS;
wflags ^= VIEWPORT_FLAG_SEETHROUGH_PATHS;
break;
case WIDX_SEE_THROUGH_SUPPORTS:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_SUPPORTS;
wflags ^= VIEWPORT_FLAG_SEETHROUGH_SUPPORTS;
break;
case WIDX_INVISIBLE_RIDES:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_RIDES;
wflags ^= VIEWPORT_FLAG_INVISIBLE_RIDES;
break;
case WIDX_INVISIBLE_VEHICLES:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_VEHICLES;
wflags ^= VIEWPORT_FLAG_INVISIBLE_VEHICLES;
break;
case WIDX_INVISIBLE_SCENERY:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SCENERY;
wflags ^= VIEWPORT_FLAG_INVISIBLE_SCENERY;
break;
case WIDX_INVISIBLE_TREES:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_TREES;
wflags ^= VIEWPORT_FLAG_INVISIBLE_TREES;
break;
case WIDX_INVISIBLE_PATHS:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PATHS;
wflags ^= VIEWPORT_FLAG_INVISIBLE_PATHS;
break;
case WIDX_INVISIBLE_SUPPORTS:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS;
wflags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS;
break;
case WIDX_INVISIBLE_GUESTS:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_GUESTS;
wflags ^= VIEWPORT_FLAG_INVISIBLE_GUESTS;
break;
case WIDX_INVISIBLE_STAFF:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_STAFF;
wflags ^= VIEWPORT_FLAG_INVISIBLE_STAFF;
break;
}
if (w->viewport->flags == wflags)
return;
w->viewport->flags = wflags;
w->Invalidate();
}
};

View File

@@ -40,7 +40,6 @@ 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), // 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),
@@ -59,7 +58,6 @@ enum
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

View File

@@ -79,7 +79,7 @@ void EntityPaintSetup(paint_session& session, const CoordsXY& pos)
if (veh != nullptr)
{
auto ride = get_ride(veh->ride);
if (ride != nullptr && !ride->ignore_invisible_flag)
if (ride != nullptr)
return;
}
}

View File

@@ -125,8 +125,7 @@ static void PaintRideEntranceExit(paint_session& session, uint8_t direction, int
return;
}
if ((session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_RIDES) && (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES)
&& !ride->ignore_invisible_flag)
if ((session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_RIDES) && (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES))
return;
auto stationObj = ride->GetStationObject();

View File

@@ -287,7 +287,6 @@ public:
uint16_t inversions;
uint16_t holes;
uint8_t sheltered_eighths;
bool ignore_invisible_flag = false;
std::unique_ptr<RideMeasurement> measurement;

View File

@@ -2195,8 +2195,7 @@ void PaintTrack(paint_session& session, Direction direction, int32_t height, con
return;
}
if ((session->ViewFlags & VIEWPORT_FLAG_SEETHROUGH_RIDES && session->ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES)
&& ride->ignore_invisible_flag == false)
if (session->ViewFlags & VIEWPORT_FLAG_SEETHROUGH_RIDES && session->ViewFlags & VIEWPORT_FLAG_INVISIBLE_RIDES)
return;
if ((!gTrackDesignSaveMode || rideIndex == gTrackDesignSaveRideIndex)