mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 15:52:55 +01:00
Make the virtual floor optional, on by default.
This commit is contained in:
@@ -4508,6 +4508,8 @@ STR_6198 :{BLACK}Day:
|
||||
STR_6199 :Set date
|
||||
STR_6200 :Reset date
|
||||
STR_6201 :{MONTH}
|
||||
STR_6202 :Enable virtual floor
|
||||
STR_6203 :{SMALLFONT}{BLACK}When enabled, a virtual floor will be rendered when holding Ctrl or Shift to ease vertical placement of elements.
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
||||
@@ -169,12 +169,11 @@ void input_handle_keyboard(bool isTitle)
|
||||
}
|
||||
}
|
||||
|
||||
if (gConfigGeneral.use_virtual_floor)
|
||||
{
|
||||
if (gInputPlaceObjectModifier & (PLACE_OBJECT_MODIFIER_COPY_Z | PLACE_OBJECT_MODIFIER_SHIFT_Z))
|
||||
{
|
||||
map_enable_virtual_floor();
|
||||
}
|
||||
else
|
||||
{
|
||||
map_remove_virtual_floor();
|
||||
}
|
||||
|
||||
|
||||
@@ -101,6 +101,7 @@ enum WINDOW_OPTIONS_WIDGET_IDX {
|
||||
WIDX_RENDERING_GROUP = WIDX_PAGE_START,
|
||||
WIDX_TILE_SMOOTHING_CHECKBOX,
|
||||
WIDX_GRIDLINES_CHECKBOX,
|
||||
WIDX_VIRTUAL_FLOOR_CHECKBOX,
|
||||
WIDX_DAY_NIGHT_CHECKBOX,
|
||||
WIDX_ENABLE_LIGHT_FX_CHECKBOX,
|
||||
WIDX_UPPER_CASE_BANNERS_CHECKBOX,
|
||||
@@ -247,15 +248,16 @@ static rct_widget window_options_display_widgets[] = {
|
||||
static rct_widget window_options_rendering_widgets[] = {
|
||||
MAIN_OPTIONS_WIDGETS,
|
||||
#define FRAME_RENDERING_START 53
|
||||
{ WWT_GROUPBOX, 1, 5, 304, FRAME_RENDERING_START + 0, FRAME_RENDERING_START + 136, STR_RENDERING_GROUP, STR_NONE }, // Rendering group
|
||||
{ WWT_GROUPBOX, 1, 5, 304, FRAME_RENDERING_START + 0, FRAME_RENDERING_START + 151, STR_RENDERING_GROUP, STR_NONE }, // Rendering group
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 15, FRAME_RENDERING_START + 26, STR_TILE_SMOOTHING, STR_TILE_SMOOTHING_TIP }, // Landscape smoothing
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 30, FRAME_RENDERING_START + 41, STR_GRIDLINES, STR_GRIDLINES_TIP }, // Gridlines
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 45, FRAME_RENDERING_START + 56, STR_CYCLE_DAY_NIGHT, STR_CYCLE_DAY_NIGHT_TIP }, // Cycle day-night
|
||||
{ WWT_CHECKBOX, 1, 25, 290, FRAME_RENDERING_START + 60, FRAME_RENDERING_START + 71, STR_ENABLE_LIGHTING_EFFECTS, STR_ENABLE_LIGHTING_EFFECTS_TIP }, // Enable light fx
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 75, FRAME_RENDERING_START + 86, STR_UPPERCASE_BANNERS, STR_UPPERCASE_BANNERS_TIP }, // Uppercase banners
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 90, FRAME_RENDERING_START + 101, STR_RENDER_WEATHER_EFFECTS, STR_RENDER_WEATHER_EFFECTS_TIP }, // Render weather effects
|
||||
{ WWT_CHECKBOX, 1, 25, 290, FRAME_RENDERING_START + 105, FRAME_RENDERING_START + 116, STR_DISABLE_LIGHTNING_EFFECT, STR_DISABLE_LIGHTNING_EFFECT_TIP }, // Disable lightning effect
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 120, FRAME_RENDERING_START + 131, STR_SHOW_GUEST_PURCHASES, STR_SHOW_GUEST_PURCHASES_TIP },
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 45, FRAME_RENDERING_START + 56, STR_ENABLE_VIRTUAL_FLOOR, STR_ENABLE_VIRTUAL_FLOOR_TIP }, // Virtual floor
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 60, FRAME_RENDERING_START + 71, STR_CYCLE_DAY_NIGHT, STR_CYCLE_DAY_NIGHT_TIP }, // Cycle day-night
|
||||
{ WWT_CHECKBOX, 1, 25, 290, FRAME_RENDERING_START + 75, FRAME_RENDERING_START + 86, STR_ENABLE_LIGHTING_EFFECTS, STR_ENABLE_LIGHTING_EFFECTS_TIP }, // Enable light fx
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 90, FRAME_RENDERING_START + 101, STR_UPPERCASE_BANNERS, STR_UPPERCASE_BANNERS_TIP }, // Uppercase banners
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 105, FRAME_RENDERING_START + 116, STR_RENDER_WEATHER_EFFECTS, STR_RENDER_WEATHER_EFFECTS_TIP }, // Render weather effects
|
||||
{ WWT_CHECKBOX, 1, 25, 290, FRAME_RENDERING_START + 120, FRAME_RENDERING_START + 131, STR_DISABLE_LIGHTNING_EFFECT, STR_DISABLE_LIGHTNING_EFFECT_TIP }, // Disable lightning effect
|
||||
{ WWT_CHECKBOX, 1, 10, 290, FRAME_RENDERING_START + 135, FRAME_RENDERING_START + 146, STR_SHOW_GUEST_PURCHASES, STR_SHOW_GUEST_PURCHASES_TIP },
|
||||
#undef FRAME_RENDERING_START
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
@@ -504,8 +506,6 @@ static uint64 window_options_page_enabled_widgets[] = {
|
||||
(1 << WIDX_RESOLUTION_DROPDOWN) |
|
||||
(1 << WIDX_FULLSCREEN) |
|
||||
(1 << WIDX_FULLSCREEN_DROPDOWN) |
|
||||
(1 << WIDX_TILE_SMOOTHING_CHECKBOX) |
|
||||
(1 << WIDX_GRIDLINES_CHECKBOX) |
|
||||
(1 << WIDX_DRAWING_ENGINE) |
|
||||
(1 << WIDX_DRAWING_ENGINE_DROPDOWN) |
|
||||
(1 << WIDX_UNCAP_FPS_CHECKBOX) |
|
||||
@@ -522,6 +522,7 @@ static uint64 window_options_page_enabled_widgets[] = {
|
||||
MAIN_OPTIONS_ENABLED_WIDGETS |
|
||||
(1 << WIDX_TILE_SMOOTHING_CHECKBOX) |
|
||||
(1 << WIDX_GRIDLINES_CHECKBOX) |
|
||||
(1 << WIDX_VIRTUAL_FLOOR_CHECKBOX) |
|
||||
(1 << WIDX_DAY_NIGHT_CHECKBOX) |
|
||||
(1 << WIDX_ENABLE_LIGHT_FX_CHECKBOX) |
|
||||
(1 << WIDX_UPPER_CASE_BANNERS_CHECKBOX) |
|
||||
@@ -710,6 +711,11 @@ static void window_options_mouseup(rct_window *w, rct_widgetindex widgetIndex)
|
||||
w->viewport->flags &= ~VIEWPORT_FLAG_GRIDLINES;
|
||||
}
|
||||
break;
|
||||
case WIDX_VIRTUAL_FLOOR_CHECKBOX:
|
||||
gConfigGeneral.use_virtual_floor ^= 1;
|
||||
config_save_default();
|
||||
window_invalidate(w);
|
||||
break;
|
||||
case WIDX_DAY_NIGHT_CHECKBOX:
|
||||
gConfigGeneral.day_night_cycle ^= 1;
|
||||
config_save_default();
|
||||
@@ -1591,6 +1597,7 @@ static void window_options_invalidate(rct_window *w)
|
||||
{
|
||||
widget_set_checkbox_value(w, WIDX_TILE_SMOOTHING_CHECKBOX, gConfigGeneral.landscape_smoothing);
|
||||
widget_set_checkbox_value(w, WIDX_GRIDLINES_CHECKBOX, gConfigGeneral.always_show_gridlines);
|
||||
widget_set_checkbox_value(w, WIDX_VIRTUAL_FLOOR_CHECKBOX, gConfigGeneral.use_virtual_floor);
|
||||
widget_set_checkbox_value(w, WIDX_DAY_NIGHT_CHECKBOX, gConfigGeneral.day_night_cycle);
|
||||
widget_set_checkbox_value(w, WIDX_ENABLE_LIGHT_FX_CHECKBOX, gConfigGeneral.enable_light_fx);
|
||||
if (gConfigGeneral.day_night_cycle &&
|
||||
@@ -1618,6 +1625,7 @@ static void window_options_invalidate(rct_window *w)
|
||||
|
||||
window_options_rendering_widgets[WIDX_TILE_SMOOTHING_CHECKBOX].type = WWT_CHECKBOX;
|
||||
window_options_rendering_widgets[WIDX_GRIDLINES_CHECKBOX].type = WWT_CHECKBOX;
|
||||
window_options_rendering_widgets[WIDX_VIRTUAL_FLOOR_CHECKBOX].type = WWT_CHECKBOX;
|
||||
window_options_rendering_widgets[WIDX_DAY_NIGHT_CHECKBOX].type = WWT_CHECKBOX;
|
||||
window_options_rendering_widgets[WIDX_ENABLE_LIGHT_FX_CHECKBOX].type = WWT_CHECKBOX;
|
||||
window_options_rendering_widgets[WIDX_UPPER_CASE_BANNERS_CHECKBOX].type = WWT_CHECKBOX;
|
||||
|
||||
@@ -1285,7 +1285,10 @@ static void sub_6E1F34(sint16 x, sint16 y, uint16 selected_scenery, sint16* grid
|
||||
*parameter_2 = (cl ^ (1 << 1)) | (gWindowSceneryPrimaryColour << 8);
|
||||
*parameter_3 = rotation | (gWindowScenerySecondaryColour << 16);
|
||||
|
||||
if (gConfigGeneral.use_virtual_floor)
|
||||
{
|
||||
map_set_virtual_floor_height(gSceneryPlaceZ);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -1538,7 +1541,10 @@ static void sub_6E1F34(sint16 x, sint16 y, uint16 selected_scenery, sint16* grid
|
||||
}
|
||||
}
|
||||
|
||||
if (gConfigGeneral.use_virtual_floor)
|
||||
{
|
||||
map_set_virtual_floor_height(gSceneryPlaceZ);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2368,7 +2374,11 @@ static money32 try_place_ghost_scenery(LocationXY16 map_tile, uint32 parameter_1
|
||||
static void top_toolbar_tool_update_scenery(sint16 x, sint16 y){
|
||||
map_invalidate_selection_rect();
|
||||
map_invalidate_map_selection_tiles();
|
||||
|
||||
if (gConfigGeneral.use_virtual_floor)
|
||||
{
|
||||
map_invalidate_virtual_floor_tiles();
|
||||
}
|
||||
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
|
||||
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT;
|
||||
|
||||
@@ -168,6 +168,7 @@ namespace Config
|
||||
model->drawing_engine = reader->GetEnum<sint32>("drawing_engine", DRAWING_ENGINE_SOFTWARE, Enum_DrawingEngine);
|
||||
model->uncap_fps = reader->GetBoolean("uncap_fps", false);
|
||||
model->use_vsync = reader->GetBoolean("use_vsync", true);
|
||||
model->use_virtual_floor = reader->GetBoolean("use_virtual_floor", true);
|
||||
|
||||
// Default config setting is false until ghost trains are implemented #4540
|
||||
model->test_unfinished_tracks = reader->GetBoolean("test_unfinished_tracks", false);
|
||||
@@ -277,6 +278,7 @@ namespace Config
|
||||
writer->WriteBoolean("render_weather_gloom", model->render_weather_gloom);
|
||||
writer->WriteBoolean("show_guest_purchases", model->show_guest_purchases);
|
||||
writer->WriteBoolean("show_real_names_of_guests", model->show_real_names_of_guests);
|
||||
writer->WriteBoolean("use_virtual_floor", model->use_virtual_floor);
|
||||
}
|
||||
|
||||
static void ReadInterface(IIniReader * reader)
|
||||
|
||||
@@ -42,6 +42,7 @@ typedef struct GeneralConfiguration
|
||||
// Map rendering
|
||||
bool landscape_smoothing;
|
||||
bool always_show_gridlines;
|
||||
bool use_virtual_floor;
|
||||
bool day_night_cycle;
|
||||
bool enable_light_fx;
|
||||
bool upper_case_banners;
|
||||
|
||||
@@ -3855,6 +3855,9 @@ enum {
|
||||
STR_DATE_RESET = 6200,
|
||||
STR_FORMAT_MONTH = 6201,
|
||||
|
||||
STR_ENABLE_VIRTUAL_FLOOR = 6202,
|
||||
STR_ENABLE_VIRTUAL_FLOOR_TIP = 6203,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
};
|
||||
|
||||
@@ -155,7 +155,10 @@ static void sub_68B3FB(paint_session * session, sint32 x, sint32 y)
|
||||
|
||||
bool partOfVirtualFloor = false;
|
||||
#ifndef __TESTPAINT__
|
||||
if (gConfigGeneral.use_virtual_floor)
|
||||
{
|
||||
partOfVirtualFloor = map_tile_is_part_of_virtual_floor(session->MapPosition.x, session->MapPosition.y);
|
||||
}
|
||||
#endif // __TESTPAINT__
|
||||
|
||||
/* Check if the first (lowest) tile_element is below the clip
|
||||
@@ -332,7 +335,7 @@ static void sub_68B3FB(paint_session * session, sint32 x, sint32 y)
|
||||
} while (!tile_element_is_last_for_tile(tile_element++));
|
||||
|
||||
#ifndef __TESTPAINT__
|
||||
if (partOfVirtualFloor)
|
||||
if (gConfigGeneral.use_virtual_floor && partOfVirtualFloor)
|
||||
{
|
||||
virtual_floor_paint(session);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user