1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

new .ini setting #toggle_borderless

This commit is contained in:
FunkyFr3sh 2023-07-03 05:13:47 +02:00
parent e39414a477
commit a02c7f3e68
5 changed files with 59 additions and 22 deletions

View File

@ -9,6 +9,7 @@ typedef struct CNCDDRAWCONFIG
{
RECT window_rect;
int window_state;
int borderless_state;
char ini_path[MAX_PATH];
char game_path[MAX_PATH];
char process_file_name[MAX_PATH];

View File

@ -142,6 +142,7 @@ typedef struct CNCDDRAW
BOOL opengl_core;
BOOL accurate_timers;
BOOL resizable;
BOOL toggle_borderless;
BOOL nonexclusive;
int fixchilds;
BOOL fixwndprochook;

View File

@ -15,7 +15,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 };
{ .window_rect = {.left = -32000, .top = -32000, .right = 0, .bottom = 0 }, .window_state = -1, .borderless_state = -1 };
void cfg_load()
{
@ -35,6 +35,7 @@ void cfg_load()
g_ddraw->vhack = cfg_get_bool("vhack", FALSE);
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->nonexclusive = cfg_get_bool("nonexclusive", FALSE);
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE);
@ -127,6 +128,8 @@ void cfg_load()
g_ddraw->flip_limiter.tick_length = (DWORD)(flip_len + 0.5f);
}
g_ddraw->fullscreen = cfg_get_bool("fullscreen", FALSE);
if (cfg_get_bool("singlecpu", TRUE))
{
SetProcessAffinityMask(GetCurrentProcess(), 1);
@ -228,6 +231,11 @@ void cfg_save()
{
WritePrivateProfileString(section, "windowed", g_config.window_state ? "true" : "false", g_config.ini_path);
}
if (g_config.borderless_state != -1)
{
WritePrivateProfileString(section, "fullscreen", g_config.borderless_state ? "true" : "false", g_config.ini_path);
}
}
static void cfg_create_ini()
@ -308,6 +316,9 @@ static void cfg_create_ini()
"; Where should screenshots be saved\n"
"screenshotdir=.\\Screenshots\\\n"
"\n"
"; Switch between windowed/borderless modes with alt+enter rather than windowed/fullscreen modes\n"
"toggle_borderless=false\n"
"\n"
"\n"
"\n"
"; ### Compatibility settings ###\n"

View File

@ -333,32 +333,56 @@ void util_toggle_fullscreen()
if (g_ddraw->bnet_active)
return;
if (g_ddraw->windowed)
if (g_ddraw->toggle_borderless)
{
mouse_unlock();
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);
mouse_lock();
}
else
{
mouse_unlock();
g_config.window_state = g_ddraw->windowed = TRUE;
if (g_ddraw->renderer == d3d9_render_main)
if (!g_ddraw->fullscreen)
{
d3d9_reset(g_ddraw->windowed);
mouse_unlock();
g_config.borderless_state = g_ddraw->fullscreen = TRUE;
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, 0);
mouse_lock();
}
else
{
ChangeDisplaySettings(NULL, g_ddraw->bnet_active ? CDS_FULLSCREEN : 0);
}
mouse_unlock();
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, SDM_LEAVE_FULLSCREEN);
//mouse_lock();
g_config.borderless_state = g_ddraw->fullscreen = FALSE;
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, 0);
//mouse_lock();
}
}
else
{
if (g_ddraw->windowed)
{
mouse_unlock();
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);
mouse_lock();
}
else
{
mouse_unlock();
g_config.window_state = g_ddraw->windowed = TRUE;
if (g_ddraw->renderer == d3d9_render_main)
{
d3d9_reset(g_ddraw->windowed);
}
else
{
ChangeDisplaySettings(NULL, g_ddraw->bnet_active ? CDS_FULLSCREEN : 0);
}
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, SDM_LEAVE_FULLSCREEN);
//mouse_lock();
}
}
}

View File

@ -611,7 +611,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
if (g_ddraw->hotkeys.toggle_fullscreen &&
wParam == g_ddraw->hotkeys.toggle_fullscreen &&
!g_ddraw->fullscreen &&
(!g_ddraw->fullscreen || (g_ddraw->windowed && g_ddraw->toggle_borderless)) &&
context_code &&
!key_state)
{