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

Save invisible flags to config

This commit is contained in:
Ted John
2022-03-06 17:33:02 +00:00
parent 52e5d48501
commit fea101289c
4 changed files with 58 additions and 3 deletions

View File

@@ -11,6 +11,7 @@
#include <openrct2-ui/interface/Widget.h>
#include <openrct2-ui/windows/Window.h>
#include <openrct2/Context.h>
#include <openrct2/config/Config.h>
#include <openrct2/localisation/StringIds.h>
#include <openrct2/world/Footpath.h>
@@ -20,7 +21,8 @@ static rct_widget window_main_widgets[] = {
WIDGETS_END,
};
void WindowMainPaint(rct_window *w, rct_drawpixelinfo *dpi);
static void WindowMainSetViewportFlags(rct_viewport& viewport);
static void WindowMainPaint(rct_window *w, rct_drawpixelinfo *dpi);
static rct_window_event_list window_main_events([](auto& events)
{
@@ -42,7 +44,10 @@ rct_window* WindowMainOpen()
window->widgets = window_main_widgets;
viewport_create(window, window->windowPos, window->width, window->height, Focus(CoordsXYZ(0x0FFF, 0x0FFF, 0)));
window->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
if (window->viewport != nullptr)
{
WindowMainSetViewportFlags(*window->viewport);
}
gCurrentRotation = 0;
gShowGridLinesRefCount = 0;
gShowLandRightsRefCount = 0;
@@ -52,13 +57,30 @@ rct_window* WindowMainOpen()
return window;
}
static void WindowMainSetViewportFlags(rct_viewport& viewport)
{
viewport.flags |= VIEWPORT_FLAG_SOUND_ON;
if (gConfigGeneral.invisible_rides)
viewport.flags |= VIEWPORT_FLAG_INVISIBLE_RIDES;
if (gConfigGeneral.invisible_vehicles)
viewport.flags |= VIEWPORT_FLAG_INVISIBLE_VEHICLES;
if (gConfigGeneral.invisible_trees)
viewport.flags |= VIEWPORT_FLAG_INVISIBLE_TREES;
if (gConfigGeneral.invisible_scenery)
viewport.flags |= VIEWPORT_FLAG_INVISIBLE_SCENERY;
if (gConfigGeneral.invisible_paths)
viewport.flags |= VIEWPORT_FLAG_INVISIBLE_PATHS;
if (gConfigGeneral.invisible_supports)
viewport.flags |= VIEWPORT_FLAG_INVISIBLE_SUPPORTS;
}
/**
*
* rct2: 0x66CCAE
* This function immediately jumps to 0x00685BE1 this is the second function
* decompiled.
*/
void WindowMainPaint(rct_window* w, rct_drawpixelinfo* dpi)
static void WindowMainPaint(rct_window* w, rct_drawpixelinfo* dpi)
{
viewport_render(dpi, w->viewport, { { dpi->x, dpi->y }, { dpi->x + dpi->width, dpi->y + dpi->height } });
}

View File

@@ -183,21 +183,33 @@ private:
break;
case WIDX_INVISIBLE_RIDES:
wflags ^= VIEWPORT_FLAG_INVISIBLE_RIDES;
gConfigGeneral.invisible_rides = wflags & VIEWPORT_FLAG_INVISIBLE_RIDES;
config_save_default();
break;
case WIDX_INVISIBLE_VEHICLES:
wflags ^= VIEWPORT_FLAG_INVISIBLE_VEHICLES;
gConfigGeneral.invisible_vehicles = wflags & VIEWPORT_FLAG_INVISIBLE_VEHICLES;
config_save_default();
break;
case WIDX_INVISIBLE_SCENERY:
wflags ^= VIEWPORT_FLAG_INVISIBLE_SCENERY;
gConfigGeneral.invisible_scenery = wflags & VIEWPORT_FLAG_INVISIBLE_SCENERY;
config_save_default();
break;
case WIDX_INVISIBLE_TREES:
wflags ^= VIEWPORT_FLAG_INVISIBLE_TREES;
gConfigGeneral.invisible_trees = wflags & VIEWPORT_FLAG_INVISIBLE_TREES;
config_save_default();
break;
case WIDX_INVISIBLE_PATHS:
wflags ^= VIEWPORT_FLAG_INVISIBLE_PATHS;
gConfigGeneral.invisible_paths = wflags & VIEWPORT_FLAG_INVISIBLE_PATHS;
config_save_default();
break;
case WIDX_INVISIBLE_SUPPORTS:
wflags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS;
gConfigGeneral.invisible_supports = wflags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS;
config_save_default();
break;
case WIDX_INVISIBLE_GUESTS:
wflags ^= VIEWPORT_FLAG_HIDE_GUESTS;

View File

@@ -216,6 +216,14 @@ namespace Config
model->allow_early_completion = reader->GetBoolean("allow_early_completion", false);
model->transparent_screenshot = reader->GetBoolean("transparent_screenshot", true);
model->transparent_water = reader->GetBoolean("transparent_water", true);
model->invisible_rides = reader->GetBoolean("invisible_rides", false);
model->invisible_vehicles = reader->GetBoolean("invisible_vehicles", false);
model->invisible_trees = reader->GetBoolean("invisible_trees", false);
model->invisible_scenery = reader->GetBoolean("invisible_scenery", false);
model->invisible_paths = reader->GetBoolean("invisible_paths", false);
model->invisible_supports = reader->GetBoolean("invisible_supports", false);
model->last_version_check_time = reader->GetInt64("last_version_check_time", 0);
}
}
@@ -293,6 +301,12 @@ namespace Config
writer->WriteEnum<VirtualFloorStyles>("virtual_floor_style", model->virtual_floor_style, Enum_VirtualFloorStyle);
writer->WriteBoolean("transparent_screenshot", model->transparent_screenshot);
writer->WriteBoolean("transparent_water", model->transparent_water);
writer->WriteBoolean("invisible_rides", model->invisible_rides);
writer->WriteBoolean("invisible_vehicles", model->invisible_vehicles);
writer->WriteBoolean("invisible_trees", model->invisible_trees);
writer->WriteBoolean("invisible_scenery", model->invisible_scenery);
writer->WriteBoolean("invisible_paths", model->invisible_paths);
writer->WriteBoolean("invisible_supports", model->invisible_supports);
writer->WriteInt64("last_version_check_time", model->last_version_check_time);
}

View File

@@ -60,6 +60,13 @@ struct GeneralConfiguration
bool transparent_screenshot;
bool transparent_water;
bool invisible_rides;
bool invisible_vehicles;
bool invisible_trees;
bool invisible_scenery;
bool invisible_paths;
bool invisible_supports;
// Localisation
int32_t language;
MeasurementFormat measurement_format;