From f23a3e49ba402ae0f720dadad3db4ff4d3f4970d Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sun, 19 Sep 2021 04:24:22 +0200 Subject: [PATCH] #121 fix cursor lock for space rangers --- inc/dd.h | 1 + src/config.c | 8 ++++++++ src/dd.c | 19 +++++++++++-------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/inc/dd.h b/inc/dd.h index dbabebe..28a7f1b 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -133,6 +133,7 @@ typedef struct CNCDDRAW int fixchilds; BOOL fixwndprochook; BOOL fixnotresponding; + BOOL locktopleft; BOOL d3d9linear; BOOL gdilinear; int resolutions; diff --git a/src/config.c b/src/config.c index a16d617..f3bffee 100644 --- a/src/config.c +++ b/src/config.c @@ -39,11 +39,15 @@ void cfg_load() g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT); g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE); g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE); + g_ddraw->locktopleft = cfg_get_bool("locktopleft", FALSE); g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE); g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE); g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE); g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL); + if (g_ddraw->locktopleft) + g_ddraw->adjmouse = FALSE; + g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE); g_ddraw->tshack = cfg_get_bool("tshack", FALSE); @@ -819,6 +823,10 @@ static void cfg_create_ini() "[Stronghold Crusader]\n" "adjmouse=true\n" "\n" + "; Space Rangers\n" + "[Rangers]\n" + "locktopleft=true\n" + "\n" "; Stronghold Crusader Extreme HD\n" "[Stronghold_Crusader_Extreme]\n" "adjmouse=true\n" diff --git a/src/dd.c b/src/dd.c index e4e07f6..e3d777d 100644 --- a/src/dd.c +++ b/src/dd.c @@ -641,18 +641,21 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl g_ddraw->render.unscale_w = ((float)g_ddraw->width / g_ddraw->render.viewport.width); g_ddraw->render.unscale_h = ((float)g_ddraw->height / g_ddraw->render.viewport.height); - g_ddraw->mouse.x_adjust = g_ddraw->render.viewport.x; - g_ddraw->mouse.y_adjust = g_ddraw->render.viewport.y; + if (!g_ddraw->locktopleft) + { + g_ddraw->mouse.x_adjust = g_ddraw->render.viewport.x; + g_ddraw->mouse.y_adjust = g_ddraw->render.viewport.y; + } - g_ddraw->mouse.rc.left = g_ddraw->render.viewport.x; - g_ddraw->mouse.rc.top = g_ddraw->render.viewport.y; - g_ddraw->mouse.rc.right = g_ddraw->width + g_ddraw->render.viewport.x; - g_ddraw->mouse.rc.bottom = g_ddraw->height + g_ddraw->render.viewport.y; + g_ddraw->mouse.rc.left = g_ddraw->mouse.x_adjust;; + g_ddraw->mouse.rc.top = g_ddraw->mouse.y_adjust;; + g_ddraw->mouse.rc.right = g_ddraw->width + g_ddraw->mouse.x_adjust; + g_ddraw->mouse.rc.bottom = g_ddraw->height + g_ddraw->mouse.y_adjust; if (g_ddraw->adjmouse) { - g_ddraw->mouse.rc.right = g_ddraw->render.viewport.width + g_ddraw->render.viewport.x; - g_ddraw->mouse.rc.bottom = g_ddraw->render.viewport.height + g_ddraw->render.viewport.y; + g_ddraw->mouse.rc.right = g_ddraw->render.viewport.width + g_ddraw->mouse.x_adjust; + g_ddraw->mouse.rc.bottom = g_ddraw->render.viewport.height + g_ddraw->mouse.y_adjust; } if (nonexclusive || (g_ddraw->nonexclusive && !g_ddraw->windowed && g_ddraw->renderer == ogl_render_main))