diff --git a/inc/config.h b/inc/config.h index 89598eb..2937e26 100644 --- a/inc/config.h +++ b/inc/config.h @@ -9,7 +9,7 @@ typedef struct CNCDDRAWCONFIG { RECT window_rect; int window_state; - int borderless_state; + int upscaled_state; char ini_path[MAX_PATH]; char game_path[MAX_PATH]; char process_file_name[MAX_PATH]; diff --git a/inc/dd.h b/inc/dd.h index a60f8bf..fb4af12 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -138,6 +138,7 @@ typedef struct CNCDDRAW BOOL accurate_timers; BOOL resizable; BOOL toggle_borderless; + BOOL toggle_upscaled; BOOL nonexclusive; BOOL fixpitch; int fixchilds; diff --git a/src/config.c b/src/config.c index 8c2c82d..2bbfa04 100644 --- a/src/config.c +++ b/src/config.c @@ -16,7 +16,7 @@ static void cfg_init(); static void cfg_create_ini(); CNCDDRAWCONFIG g_config = - { .window_rect = {.left = -32000, .top = -32000, .right = 0, .bottom = 0 }, .window_state = -1, .borderless_state = -1 }; + { .window_rect = {.left = -32000, .top = -32000, .right = 0, .bottom = 0 }, .window_state = -1, .upscaled_state = -1 }; void cfg_load() { @@ -41,6 +41,7 @@ void cfg_load() g_ddraw->accurate_timers = cfg_get_bool("accuratetimers", FALSE); g_ddraw->resizable = cfg_get_bool("resizable", TRUE); g_ddraw->toggle_borderless = cfg_get_bool("toggle_borderless", FALSE); + g_ddraw->toggle_upscaled = cfg_get_bool("toggle_upscaled", FALSE); g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE); g_ddraw->fixpitch = cfg_get_bool("fixpitch", FALSE); g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT); @@ -231,9 +232,9 @@ void cfg_save() WritePrivateProfileString(section, "windowed", g_config.window_state ? "true" : "false", g_config.ini_path); } - if (g_config.borderless_state != -1) + if (g_config.upscaled_state != -1) { - WritePrivateProfileString(section, "fullscreen", g_config.borderless_state ? "true" : "false", g_config.ini_path); + WritePrivateProfileString(section, "fullscreen", g_config.upscaled_state ? "true" : "false", g_config.ini_path); } } @@ -315,6 +316,9 @@ static void cfg_create_ini() "; Switch between windowed/borderless modes with alt+enter rather than windowed/fullscreen modes\n" "toggle_borderless=false\n" "\n" + "; Switch between windowed/fullscreen upscaled modes with alt+enter rather than windowed/fullscreen modes\n" + "toggle_upscaled=false\n" + "\n" "\n" "\n" "; ### Compatibility settings ###\n" diff --git a/src/utils.c b/src/utils.c index 1ff93a7..3b18210 100644 --- a/src/utils.c +++ b/src/utils.c @@ -287,7 +287,7 @@ void util_toggle_fullscreen() { mouse_unlock(); - g_config.upscaled_state = g_config.fullscreen = TRUE; + g_config.upscaled_state = g_ddraw->fullscreen = TRUE; dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, 0); mouse_lock(); @@ -296,7 +296,7 @@ void util_toggle_fullscreen() { mouse_unlock(); - g_config.upscaled_state = g_config.fullscreen = FALSE; + g_config.upscaled_state = g_ddraw->fullscreen = FALSE; dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, 0); //mouse_lock(); @@ -308,12 +308,12 @@ void util_toggle_fullscreen() { mouse_unlock(); - if (g_config.toggle_upscaled) + if (g_ddraw->toggle_upscaled) { - g_config.upscaled_state = g_config.fullscreen = TRUE; + g_config.upscaled_state = g_ddraw->fullscreen = TRUE; } - g_config.window_state = g_config.windowed = FALSE; + g_config.window_state = g_ddraw->windowed = FALSE; dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, SDM_LEAVE_WINDOWED); util_update_bnet_pos(0, 0); @@ -323,12 +323,12 @@ void util_toggle_fullscreen() { mouse_unlock(); - if (g_config.toggle_upscaled) + if (g_ddraw->toggle_upscaled) { - g_config.upscaled_state = g_config.fullscreen = FALSE; + g_config.upscaled_state = g_ddraw->fullscreen = FALSE; } - g_config.window_state = g_config.windowed = TRUE; + g_config.window_state = g_ddraw->windowed = TRUE; if (g_ddraw->renderer == d3d9_render_main) {