1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Add setting for Steam overlay pausing and add extra check

This commit is contained in:
Alexander Overvoorde
2015-10-03 20:46:34 +02:00
parent c03cec721e
commit 51377fc960
8 changed files with 35 additions and 9 deletions

View File

@@ -3891,6 +3891,7 @@ STR_5549 :Year/Month/Day
STR_5550 :{POP16}{POP16}Year {COMMA16}, {PUSH16}{PUSH16}{MONTH} {PUSH16}{PUSH16}{STRINGID}
STR_5551 :Year/Day/Month
STR_5552 :{POP16}{POP16}Year {COMMA16}, {PUSH16}{PUSH16}{PUSH16}{STRINGID} {MONTH}
STR_5553 :Pause game when Steam overlay is open
#####################
# Rides/attractions #

View File

@@ -192,6 +192,7 @@ config_property_definition _generalDefinitions[] = {
{ offsetof(general_configuration, day_night_cycle), "day_night_cycle", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL },
{ offsetof(general_configuration, upper_case_banners), "upper_case_banners", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL },
{ offsetof(general_configuration, allow_loading_with_incorrect_checksum),"allow_loading_with_incorrect_checksum", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL },
{ offsetof(general_configuration, steam_overlay_pause), "steam_overlay_pause", CONFIG_VALUE_TYPE_BOOLEAN, true, NULL },
};
config_property_definition _interfaceDefinitions[] = {

View File

@@ -166,6 +166,7 @@ typedef struct {
uint8 day_night_cycle;
uint8 upper_case_banners;
uint8 allow_loading_with_incorrect_checksum;
uint8 steam_overlay_pause;
} general_configuration;
typedef struct {

View File

@@ -2126,6 +2126,8 @@ enum {
STR_DATE_FORMAT_YEAR_DAY_MONTH = 5551,
STR_DATE_FORMAT_YDM = 5552,
STR_STEAM_OVERLAY_PAUSE = 5553,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768
};

View File

@@ -143,6 +143,8 @@ uint16 platform_get_locale_language();
uint8 platform_get_locale_measurement_format();
uint8 platform_get_locale_temperature_format();
bool platform_is_steam_overlay_attached();
// Windows specific definitions
#ifdef _WIN32
// Defining WIN32_LEAN_AND_MEAN breaks dsound.h in audio.h (uncomment when dsound is finally removed)

View File

@@ -201,7 +201,10 @@ static void overlay_post_render(int width, int height) {
// Detect an active Steam overlay by checking if the center pixel is changed by the gray fade.
// Will not be triggered by applications rendering to corners, like FRAPS, MSI Afterburner and Friends popups.
bool newOverlayActive = _pixelBeforeOverlay != _pixelAfterOverlay;
bool newOverlayActive =
_pixelBeforeOverlay != _pixelAfterOverlay &&
platform_is_steam_overlay_attached() &&
gConfigGeneral.steam_overlay_pause;
// Toggle game pause state consistently with base pause state
if (!overlayActive && newOverlayActive) {

View File

@@ -21,6 +21,7 @@
#ifdef _WIN32
#include <windows.h>
#include <psapi.h>
#include <shlobj.h>
#include <SDL_syswm.h>
#include <sys/stat.h>
@@ -839,4 +840,9 @@ uint8 platform_get_locale_temperature_format()
return TEMPERATURE_FORMAT_C;
}
}
bool platform_is_steam_overlay_attached()
{
return GetModuleHandle("GameOverlayRenderer.dll") != NULL;
}
#endif

View File

@@ -79,6 +79,7 @@ enum WINDOW_OPTIONS_WIDGET_IDX {
WIDX_HARDWARE_DISPLAY_CHECKBOX,
WIDX_UNCAP_FPS_CHECKBOX,
WIDX_MINIMIZE_FOCUS_LOSS,
WIDX_STEAM_OVERLAY_PAUSE,
WIDX_RENDERING_GROUP,
WIDX_TILE_SMOOTHING_CHECKBOX,
WIDX_GRIDLINES_CHECKBOX,
@@ -168,7 +169,7 @@ enum WINDOW_OPTIONS_WIDGET_IDX {
static rct_widget window_options_display_widgets[] = {
MAIN_OPTIONS_WIDGETS,
{ WWT_GROUPBOX, 1, 5, 304, 53, 145, STR_HARDWARE_GROUP, STR_NONE }, // Hardware group
{ WWT_GROUPBOX, 1, 5, 304, 53, 160, STR_HARDWARE_GROUP, STR_NONE }, // Hardware group
{ WWT_DROPDOWN, 1, 155, 299, 68, 79, STR_RESOLUTION_X_BY_Y, STR_NONE }, // resolution
{ WWT_DROPDOWN_BUTTON, 1, 288, 298, 69, 78, STR_DROPDOWN_GLYPH, STR_NONE },
{ WWT_DROPDOWN, 1, 155, 299, 83, 94, 871, STR_NONE }, // fullscreen
@@ -176,14 +177,15 @@ static rct_widget window_options_display_widgets[] = {
{ WWT_CHECKBOX, 1, 10, 290, 99, 110, STR_HARDWARE_DISPLAY, STR_NONE }, // hardware display
{ WWT_CHECKBOX, 1, 10, 290, 114, 125, STR_UNCAP_FPS, STR_NONE }, // uncap fps
{ WWT_CHECKBOX, 1, 10, 290, 129, 140, STR_MININISE_FULL_SCREEN_ON_FOCUS_LOSS, STR_NONE }, // minimise fullscreen focus loss
{ WWT_CHECKBOX, 1, 10, 290, 144, 155, STR_STEAM_OVERLAY_PAUSE, STR_NONE }, // minimise fullscreen focus loss
{ WWT_GROUPBOX, 1, 5, 304, 149, 240, STR_RENDERING_GROUP, STR_NONE }, // Rendering group
{ WWT_CHECKBOX, 1, 10, 290, 164, 175, STR_TILE_SMOOTHING, STR_TILE_SMOOTHING_TIP }, // landscape smoothing
{ WWT_CHECKBOX, 1, 10, 290, 179, 190, STR_GRIDLINES, STR_GRIDLINES_TIP }, // gridlines
{ WWT_DROPDOWN, 1, 155, 299, 193, 204, STR_NONE, STR_NONE }, // construction marker
{ WWT_DROPDOWN_BUTTON, 1, 288, 298, 194, 203, STR_DROPDOWN_GLYPH, STR_NONE },
{ WWT_CHECKBOX, 1, 10, 290, 209, 220, STR_CYCLE_DAY_NIGHT, STR_NONE }, // cycle day-night
{ WWT_CHECKBOX, 1, 10, 290, 224, 235, STR_UPPER_CASE_BANNERS, STR_NONE }, // upper case banners
{ WWT_GROUPBOX, 1, 5, 304, 164, 255, STR_RENDERING_GROUP, STR_NONE }, // Rendering group
{ WWT_CHECKBOX, 1, 10, 290, 179, 190, STR_TILE_SMOOTHING, STR_TILE_SMOOTHING_TIP }, // landscape smoothing
{ WWT_CHECKBOX, 1, 10, 290, 194, 205, STR_GRIDLINES, STR_GRIDLINES_TIP }, // gridlines
{ WWT_DROPDOWN, 1, 155, 299, 208, 219, STR_NONE, STR_NONE }, // construction marker
{ WWT_DROPDOWN_BUTTON, 1, 288, 298, 209, 218, STR_DROPDOWN_GLYPH, STR_NONE },
{ WWT_CHECKBOX, 1, 10, 290, 224, 235, STR_CYCLE_DAY_NIGHT, STR_NONE }, // cycle day-night
{ WWT_CHECKBOX, 1, 10, 290, 239, 250, STR_UPPER_CASE_BANNERS, STR_NONE }, // upper case banners
{ WIDGETS_END },
};
@@ -355,6 +357,7 @@ static uint32 window_options_page_enabled_widgets[] = {
(1 << WIDX_HARDWARE_DISPLAY_CHECKBOX) |
(1 << WIDX_UNCAP_FPS_CHECKBOX) |
(1 << WIDX_MINIMIZE_FOCUS_LOSS) |
(1 << WIDX_STEAM_OVERLAY_PAUSE) |
(1 << WIDX_CONSTRUCTION_MARKER) |
(1 << WIDX_CONSTRUCTION_MARKER_DROPDOWN) |
(1 << WIDX_DAY_NIGHT_CHECKBOX) |
@@ -502,6 +505,11 @@ static void window_options_mouseup(rct_window *w, int widgetIndex)
config_save_default();
window_invalidate(w);
break;
case WIDX_STEAM_OVERLAY_PAUSE:
gConfigGeneral.steam_overlay_pause ^= 1;
config_save_default();
window_invalidate(w);
break;
case WIDX_DAY_NIGHT_CHECKBOX:
gConfigGeneral.day_night_cycle ^= 1;
config_save_default();
@@ -1114,6 +1122,7 @@ static void window_options_invalidate(rct_window *w)
widget_set_checkbox_value(w, WIDX_HARDWARE_DISPLAY_CHECKBOX, gConfigGeneral.hardware_display);
widget_set_checkbox_value(w, WIDX_UNCAP_FPS_CHECKBOX, gConfigGeneral.uncap_fps);
widget_set_checkbox_value(w, WIDX_MINIMIZE_FOCUS_LOSS, gConfigGeneral.minimize_fullscreen_focus_loss);
widget_set_checkbox_value(w, WIDX_STEAM_OVERLAY_PAUSE, gConfigGeneral.steam_overlay_pause);
widget_set_checkbox_value(w, WIDX_DAY_NIGHT_CHECKBOX, gConfigGeneral.day_night_cycle);
widget_set_checkbox_value(w, WIDX_UPPER_CASE_BANNERS_CHECKBOX, gConfigGeneral.upper_case_banners);
@@ -1131,6 +1140,7 @@ static void window_options_invalidate(rct_window *w)
window_options_display_widgets[WIDX_HARDWARE_DISPLAY_CHECKBOX].type = WWT_CHECKBOX;
window_options_display_widgets[WIDX_UNCAP_FPS_CHECKBOX].type = WWT_CHECKBOX;
window_options_display_widgets[WIDX_MINIMIZE_FOCUS_LOSS].type = WWT_CHECKBOX;
window_options_display_widgets[WIDX_STEAM_OVERLAY_PAUSE].type = WWT_CHECKBOX;
window_options_display_widgets[WIDX_DAY_NIGHT_CHECKBOX].type = WWT_CHECKBOX;
window_options_display_widgets[WIDX_UPPER_CASE_BANNERS_CHECKBOX].type = WWT_CHECKBOX;
break;