1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-16 19:43:06 +01:00

Improve consistency of toggling transparency options

This commit is contained in:
Tulio Leao
2024-08-31 17:51:38 -03:00
parent 06302f7f06
commit be1153b28a
2 changed files with 23 additions and 6 deletions

View File

@@ -28,6 +28,7 @@
- Fix: [#22606] Virtual floor is sometimes drawn above the path when placing paths.
- Fix: [#22625] Fix compilation with orignal ride ratings.
- Fix: [#22671] Game default to hide supports on startup.
- Fix: [#22671] Unchecking invisible option does not uncheck see-through option on transparency options and vice versa.
0.4.13 (2024-08-04)
------------------------------------------------------------------------

View File

@@ -158,6 +158,18 @@ static Widget _transparancyWidgets[] =
}
private:
uint32_t ToggleSeeThrough(uint32_t wflags, uint32_t seeThroughFlag, uint32_t transparencyFlag)
{
wflags ^= seeThroughFlag;
// If see-through is disabled, we also want to disable invisible
if (!(wflags & seeThroughFlag))
{
wflags &= ~transparencyFlag;
}
SaveInConfig(wflags);
return wflags;
}
uint32_t ToggleTransparency(uint32_t wflags, uint32_t transparencyFlag, uint32_t seeThroughFlag)
{
wflags ^= transparencyFlag;
@@ -165,6 +177,10 @@ static Widget _transparancyWidgets[] =
{
wflags |= seeThroughFlag;
}
else
{
wflags &= ~seeThroughFlag;
}
SaveInConfig(wflags);
return wflags;
}
@@ -182,22 +198,22 @@ static Widget _transparancyWidgets[] =
switch (widgetIndex)
{
case WIDX_HIDE_RIDES:
wflags ^= VIEWPORT_FLAG_HIDE_RIDES;
wflags = ToggleSeeThrough(wflags, VIEWPORT_FLAG_HIDE_RIDES, VIEWPORT_FLAG_INVISIBLE_RIDES);
break;
case WIDX_HIDE_VEHICLES:
wflags ^= VIEWPORT_FLAG_HIDE_VEHICLES;
wflags = ToggleSeeThrough(wflags, VIEWPORT_FLAG_HIDE_VEHICLES, VIEWPORT_FLAG_INVISIBLE_VEHICLES);
break;
case WIDX_HIDE_SCENERY:
wflags ^= VIEWPORT_FLAG_HIDE_SCENERY;
wflags = ToggleSeeThrough(wflags, VIEWPORT_FLAG_HIDE_SCENERY, VIEWPORT_FLAG_INVISIBLE_SCENERY);
break;
case WIDX_HIDE_VEGETATION:
wflags ^= VIEWPORT_FLAG_HIDE_VEGETATION;
wflags = ToggleSeeThrough(wflags, VIEWPORT_FLAG_HIDE_VEGETATION, VIEWPORT_FLAG_INVISIBLE_VEGETATION);
break;
case WIDX_HIDE_PATHS:
wflags ^= VIEWPORT_FLAG_HIDE_PATHS;
wflags = ToggleSeeThrough(wflags, VIEWPORT_FLAG_HIDE_PATHS, VIEWPORT_FLAG_INVISIBLE_PATHS);
break;
case WIDX_HIDE_SUPPORTS:
wflags ^= VIEWPORT_FLAG_HIDE_SUPPORTS;
wflags = ToggleSeeThrough(wflags, VIEWPORT_FLAG_HIDE_SUPPORTS, VIEWPORT_FLAG_INVISIBLE_SUPPORTS);
break;
case WIDX_INVISIBLE_RIDES:
wflags = ToggleTransparency(wflags, VIEWPORT_FLAG_INVISIBLE_RIDES, VIEWPORT_FLAG_HIDE_RIDES);