summaryrefslogtreecommitdiff
path: root/src/core/re3.cpp
diff options
context:
space:
mode:
authorerorcun <erorcunerorcun@hotmail.com.tr>2021-01-22 23:40:28 +0300
committererorcun <erorcunerorcun@hotmail.com.tr>2021-01-23 16:18:19 +0300
commit1b3284042446551f6ff5a2c723957056131f5f31 (patch)
tree7ea98fd4aa5eb80ef24185f4ec3df373ee91f83d /src/core/re3.cpp
parent45c2488e367dad03726df94cf885c5655d6e47ab (diff)
No more resetting bindings for joypad, create .ini at the first start, joystick hotplug for Linux
Diffstat (limited to 'src/core/re3.cpp')
-rw-r--r--src/core/re3.cpp59
1 files changed, 18 insertions, 41 deletions
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index 3d94cafd..19697c37 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -249,6 +249,14 @@ const char *iniKeyboardButtons[] = {"ESC","F1","F2","F3","F4","F5","F6","F7","F8
void LoadINIControllerSettings()
{
+#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+ ReadIniIfExists("Controller", "JoystickName", gSelectedJoystickName, 128);
+#endif
+ // force to default GTA behaviour (never overwrite bindings on joy change/initialization) if user init'ed/set bindings before we introduced that
+ if (!ReadIniIfExists("Controller", "PadButtonsInited", &ControlsManager.ms_padButtonsInited)) {
+ ControlsManager.ms_padButtonsInited = cfg.category_size("Bindings") != 0 ? 16 : 0;
+ }
+
for (int32 i = 0; i < MAX_CONTROLLERACTIONS; i++) {
char value[128];
if (ReadIniIfExists("Bindings", iniControllerActions[i], value, 128)) {
@@ -340,12 +348,17 @@ void SaveINIControllerSettings()
StoreIni("Bindings", iniControllerActions[i], value, 128);
}
- cfg.write_file("re3.ini");
+#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+ StoreIni("Controller", "JoystickName", gSelectedJoystickName, 128);
+#endif
+ StoreIni("Controller", "PadButtonsInited", ControlsManager.ms_padButtonsInited);
+ cfg.write_file("reVC.ini");
}
-void LoadINISettings()
+bool LoadINISettings()
{
- cfg.load_file("reVC.ini");
+ if (!cfg.load_file("reVC.ini"))
+ return false;
#ifdef IMPROVED_VIDEOMODE
ReadIniIfExists("VideoMode", "Width", &FrontEndMenuManager.m_nPrefsWidth);
@@ -404,40 +417,6 @@ void LoadINISettings()
ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites);
#endif
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
- // Written by assuming the codes below will run after _InputInitialiseJoys().
- std::string strval = cfg.get("Controller", "JoystickName", "");
- const char *value = strval.c_str();
- strcpy(gSelectedJoystickName, value);
-
- if(gSelectedJoystickName[0] != '\0') {
- for (int i = 0; i <= GLFW_JOYSTICK_LAST; i++) {
- if (glfwJoystickPresent(i) && strncmp(gSelectedJoystickName, glfwGetJoystickName(i), strlen(gSelectedJoystickName)) == 0) {
- if (PSGLOBAL(joy1id) != -1) {
- PSGLOBAL(joy2id) = PSGLOBAL(joy1id);
- }
- PSGLOBAL(joy1id) = i;
- int count;
- glfwGetJoystickButtons(PSGLOBAL(joy1id), &count);
-
- // We need to init and reload bindings, because;
- // 1-joypad button number may differ with saved/prvly connected one
- // 2-bindings are not init'ed if there is no joypad at the start
- ControlsManager.InitDefaultControlConfigJoyPad(count);
- CFileMgr::SetDirMyDocuments();
- int32 gta3set = CFileMgr::OpenFile("gta3.set", "r");
- if (gta3set) {
- ControlsManager.LoadSettings(gta3set);
- CFileMgr::CloseFile(gta3set);
- }
- CFileMgr::SetDir("");
- // We call LoadINIControllerSettings after this func., so calling here isn't needed
- break;
- }
- }
- }
-#endif
-
#ifdef CUSTOM_FRONTEND_OPTIONS
bool migrate = cfg.category_size("FrontendOptions") != 0;
for (int i = 0; i < MENUPAGES; i++) {
@@ -463,6 +442,8 @@ void LoadINISettings()
}
}
#endif
+
+ return true;
}
void SaveINISettings()
@@ -524,10 +505,6 @@ void SaveINISettings()
#ifdef FIX_SPRITES
StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites);
#endif
-
-#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
- StoreIni("Controller", "JoystickName", gSelectedJoystickName, 128);
-#endif
#ifdef CUSTOM_FRONTEND_OPTIONS
for (int i = 0; i < MENUPAGES; i++) {
for (int j = 0; j < NUM_MENUROWS; j++) {