add new "center_window" setting

This commit is contained in:
FunkyFr3sh 2024-09-26 19:55:06 +02:00
parent f6b92bb80f
commit 57287686db
4 changed files with 17 additions and 2 deletions

View file

@ -54,6 +54,7 @@ void cfg_load()
GET_INT(g_config.d3d9_filter, "d3d9_filter", FILTER_CUBIC);
GET_INT(g_config.anti_aliased_fonts_min_size, "anti_aliased_fonts_min_size", 13);
GET_INT(g_config.min_font_size, "min_font_size", 0);
GET_INT(g_config.center_window, "center_window", CENTER_WINDOW_AUTO);
GET_BOOL(g_config.vhack, "vhack", FALSE);
GET_STRING("screenshotdir", ".\\Screenshots\\", g_config.screenshot_dir, sizeof(g_config.screenshot_dir));
GET_BOOL(g_config.toggle_borderless, "toggle_borderless", FALSE);
@ -250,6 +251,10 @@ static void cfg_create_ini()
"; Raise the size of small fonts to X\n"
"min_font_size=0\n"
"\n"
"; Center window to screen when game changes the display resolution\n"
"; Possible values: 0 = never center, 1 = automatic, 2 = always center\n"
"center_window=1\n"
"\n"
"; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1, Worms 2 and KKND Xtreme)\n"
"vhack=false\n"
"\n"

View file

@ -710,9 +710,14 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
g_ddraw.render.height = g_config.window_rect.bottom;
/* temporary fix: center window for games that keep changing their resolution */
if ((g_ddraw.width || g_config.infantryhack) &&
if (g_config.center_window &&
(g_ddraw.width || g_config.infantryhack || g_config.center_window == CENTER_WINDOW_ALWAYS) &&
(g_ddraw.width != dwWidth || g_ddraw.height != dwHeight) &&
(dwWidth > g_config.window_rect.right || dwHeight > g_config.window_rect.bottom))
(
dwWidth > g_config.window_rect.right ||
dwHeight > g_config.window_rect.bottom ||
g_config.center_window == CENTER_WINDOW_ALWAYS)
)
{
g_config.window_rect.left = -32000;
g_config.window_rect.top = -32000;