mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
new .ini setting #toggle_borderless
This commit is contained in:
parent
a4e95ac6a0
commit
f2a613ff2a
@ -9,6 +9,7 @@ typedef struct CNCDDRAWCONFIG
|
|||||||
{
|
{
|
||||||
RECT window_rect;
|
RECT window_rect;
|
||||||
int window_state;
|
int window_state;
|
||||||
|
int borderless_state;
|
||||||
char ini_path[MAX_PATH];
|
char ini_path[MAX_PATH];
|
||||||
char game_path[MAX_PATH];
|
char game_path[MAX_PATH];
|
||||||
char process_file_name[MAX_PATH];
|
char process_file_name[MAX_PATH];
|
||||||
|
1
inc/dd.h
1
inc/dd.h
@ -137,6 +137,7 @@ typedef struct CNCDDRAW
|
|||||||
int show_cursor_count;
|
int show_cursor_count;
|
||||||
BOOL accurate_timers;
|
BOOL accurate_timers;
|
||||||
BOOL resizable;
|
BOOL resizable;
|
||||||
|
BOOL toggle_borderless;
|
||||||
BOOL nonexclusive;
|
BOOL nonexclusive;
|
||||||
BOOL fixpitch;
|
BOOL fixpitch;
|
||||||
int fixchilds;
|
int fixchilds;
|
||||||
|
13
src/config.c
13
src/config.c
@ -16,7 +16,7 @@ static void cfg_init();
|
|||||||
static void cfg_create_ini();
|
static void cfg_create_ini();
|
||||||
|
|
||||||
CNCDDRAWCONFIG g_config =
|
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()
|
void cfg_load()
|
||||||
{
|
{
|
||||||
@ -40,6 +40,7 @@ void cfg_load()
|
|||||||
g_ddraw->vhack = cfg_get_bool("vhack", FALSE);
|
g_ddraw->vhack = cfg_get_bool("vhack", FALSE);
|
||||||
g_ddraw->accurate_timers = cfg_get_bool("accuratetimers", FALSE);
|
g_ddraw->accurate_timers = cfg_get_bool("accuratetimers", FALSE);
|
||||||
g_ddraw->resizable = cfg_get_bool("resizable", TRUE);
|
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->nonexclusive = cfg_get_bool("nonexclusive", FALSE);
|
||||||
g_ddraw->fixpitch = cfg_get_bool("fixpitch", FALSE);
|
g_ddraw->fixpitch = cfg_get_bool("fixpitch", FALSE);
|
||||||
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
||||||
@ -112,6 +113,8 @@ void cfg_load()
|
|||||||
g_ddraw->flip_limiter.tick_length = (DWORD)(flip_len + 0.5f);
|
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))
|
if (cfg_get_bool("singlecpu", TRUE))
|
||||||
{
|
{
|
||||||
SetProcessAffinityMask(GetCurrentProcess(), 1);
|
SetProcessAffinityMask(GetCurrentProcess(), 1);
|
||||||
@ -227,6 +230,11 @@ void cfg_save()
|
|||||||
{
|
{
|
||||||
WritePrivateProfileString(section, "windowed", g_config.window_state ? "true" : "false", g_config.ini_path);
|
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()
|
static void cfg_create_ini()
|
||||||
@ -304,6 +312,9 @@ static void cfg_create_ini()
|
|||||||
"; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian, hungarian, french\n"
|
"; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian, hungarian, french\n"
|
||||||
"configlang=auto\n"
|
"configlang=auto\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
"; Switch between windowed/borderless modes with alt+enter rather than windowed/fullscreen modes\n"
|
||||||
|
"toggle_borderless=false\n"
|
||||||
|
"\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\n"
|
"\n"
|
||||||
"; ### Compatibility settings ###\n"
|
"; ### Compatibility settings ###\n"
|
||||||
|
71
src/utils.c
71
src/utils.c
@ -281,39 +281,56 @@ void util_toggle_fullscreen()
|
|||||||
|
|
||||||
memset(g_ddraw->primary->bnet_surface, 0, g_ddraw->width * g_ddraw->height);
|
memset(g_ddraw->primary->bnet_surface, 0, g_ddraw->width * g_ddraw->height);
|
||||||
|
|
||||||
if (g_ddraw->windowed)
|
if (g_ddraw->toggle_borderless)
|
||||||
{
|
{
|
||||||
mouse_unlock();
|
if (!g_ddraw->fullscreen)
|
||||||
|
|
||||||
g_config.window_state = g_ddraw->windowed = FALSE;
|
|
||||||
LONG style = GetWindowLong(g_ddraw->hwnd, GWL_STYLE);
|
|
||||||
|
|
||||||
real_SetWindowLongA(
|
|
||||||
g_ddraw->hwnd,
|
|
||||||
GWL_STYLE,
|
|
||||||
style & ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU));
|
|
||||||
|
|
||||||
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();
|
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
|
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);
|
g_config.borderless_state = g_ddraw->fullscreen = FALSE;
|
||||||
//mouse_lock();
|
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();
|
||||||
|
}
|
||||||
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -586,7 +586,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
|
|
||||||
if (g_ddraw->hotkeys.toggle_fullscreen &&
|
if (g_ddraw->hotkeys.toggle_fullscreen &&
|
||||||
wParam == 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 &&
|
context_code &&
|
||||||
!key_state &&
|
!key_state &&
|
||||||
g_ddraw->renderer != d3d9_render_main)
|
g_ddraw->renderer != d3d9_render_main)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user