summaryrefslogtreecommitdiffstats
path: root/src/skel/glfw
diff options
context:
space:
mode:
authorerorcun <erorcunerorcun@hotmail.com.tr>2021-01-22 21:40:28 +0100
committererorcun <erorcunerorcun@hotmail.com.tr>2021-01-23 14:18:19 +0100
commit1b3284042446551f6ff5a2c723957056131f5f31 (patch)
tree7ea98fd4aa5eb80ef24185f4ec3df373ee91f83d /src/skel/glfw
parentMigrate from old .ini to new .ini (diff)
downloadre3-1b3284042446551f6ff5a2c723957056131f5f31.tar
re3-1b3284042446551f6ff5a2c723957056131f5f31.tar.gz
re3-1b3284042446551f6ff5a2c723957056131f5f31.tar.bz2
re3-1b3284042446551f6ff5a2c723957056131f5f31.tar.lz
re3-1b3284042446551f6ff5a2c723957056131f5f31.tar.xz
re3-1b3284042446551f6ff5a2c723957056131f5f31.tar.zst
re3-1b3284042446551f6ff5a2c723957056131f5f31.zip
Diffstat (limited to 'src/skel/glfw')
-rw-r--r--src/skel/glfw/glfw.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp
index a86ccaf8..055712f3 100644
--- a/src/skel/glfw/glfw.cpp
+++ b/src/skel/glfw/glfw.cpp
@@ -1634,10 +1634,16 @@ main(int argc, char *argv[])
SystemParametersInfo(SPI_SETSTICKYKEYS, sizeof(STICKYKEYS), &NewStickyKeys, SPIF_SENDCHANGE);
#endif
- // This part is needed because controller initialisation overwrites loaded settings.
{
CFileMgr::SetDirMyDocuments();
+#ifdef LOAD_INI_SETTINGS
+ // At this point InitDefaultControlConfigJoyPad must have set all bindings to default and ms_padButtonsInited to number of detected buttons.
+ // We will load stored bindings below, but let's cache ms_padButtonsInited before LoadINIControllerSettings and LoadSettings clears it,
+ // so we can add new joy bindings **on top of** stored bindings.
+ int connectedPadButtons = ControlsManager.ms_padButtonsInited;
+#endif
+
int32 gta3set = CFileMgr::OpenFile("gta_vc.set", "r");
if ( gta3set )
@@ -1650,6 +1656,10 @@ main(int argc, char *argv[])
#ifdef LOAD_INI_SETTINGS
LoadINIControllerSettings();
+ if (connectedPadButtons != 0) {
+ ControlsManager.InitDefaultControlConfigJoyPad(connectedPadButtons);
+ SaveINIControllerSettings();
+ }
#endif
}
@@ -2164,6 +2174,12 @@ void joysChangeCB(int jid, int event)
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
strcpy(gSelectedJoystickName, glfwGetJoystickName(jid));
#endif
+ // This is behind LOAD_INI_SETTINGS, because otherwise the Init call below will destroy/overwrite your bindings.
+#ifdef LOAD_INI_SETTINGS
+ int count;
+ glfwGetJoystickButtons(PSGLOBAL(joy1id), &count);
+ ControlsManager.InitDefaultControlConfigJoyPad(count);
+#endif
} else if (PSGLOBAL(joy2id) == -1)
PSGLOBAL(joy2id) = jid;