diff --git a/ISLE/isleapp.cpp b/ISLE/isleapp.cpp index 373ea881..79f91e4e 100644 --- a/ISLE/isleapp.cpp +++ b/ISLE/isleapp.cpp @@ -148,6 +148,7 @@ IsleApp::IsleApp() m_maxLod = RealtimeView::GetUserMaxLOD(); m_maxAllowedExtras = m_islandQuality <= 1 ? 10 : 20; m_transitionType = MxTransitionManager::e_mosaic; + m_mouseSensitivity = 4; } // FUNCTION: ISLE 0x4011a0 @@ -494,10 +495,11 @@ SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event) } case SDL_EVENT_JOYSTICK_AXIS_MOTION: { if (event->gaxis.axis == SDL_XBOX_AXIS_RIGHT_X) { - g_lastJoystickMouseX = ((float) event->gaxis.value) / SDL_JOYSTICK_AXIS_MAX * 4; + g_lastJoystickMouseX = ((float) event->gaxis.value) / SDL_JOYSTICK_AXIS_MAX * g_isle->GetMouseSensitivity(); } else if (event->gaxis.axis == SDL_XBOX_AXIS_RIGHT_Y) { - g_lastJoystickMouseY = -((float) event->gaxis.value) / SDL_JOYSTICK_AXIS_MAX * 4; + g_lastJoystickMouseY = + -((float) event->gaxis.value) / SDL_JOYSTICK_AXIS_MAX * g_isle->GetMouseSensitivity(); } else if (event->gaxis.axis == SDL_XBOX_AXIS_RIGHT_TRIGGER) { if (event->gaxis.value != SDL_JOYSTICK_AXIS_MIN) { @@ -902,6 +904,8 @@ bool IsleApp::LoadConfig() iniparser_set(dict, "isle:UseJoystick", m_useJoystick ? "true" : "false"); iniparser_set(dict, "isle:JoystickIndex", SDL_itoa(m_joystickIndex, buf, 10)); iniparser_set(dict, "isle:Draw Cursor", m_drawCursor ? "true" : "false"); + SDL_snprintf(buf, sizeof(buf), "%f", m_mouseSensitivity); + iniparser_set(dict, "isle:Mouse Sensitivity", buf); iniparser_set(dict, "isle:Back Buffers in Video RAM", "-1"); @@ -956,6 +960,7 @@ bool IsleApp::LoadConfig() m_useJoystick = iniparser_getboolean(dict, "isle:UseJoystick", m_useJoystick); m_joystickIndex = iniparser_getint(dict, "isle:JoystickIndex", m_joystickIndex); m_drawCursor = iniparser_getboolean(dict, "isle:Draw Cursor", m_drawCursor); + m_mouseSensitivity = iniparser_getdouble(dict, "isle:Mouse Sensitivity", m_mouseSensitivity); MxS32 backBuffersInVRAM = iniparser_getboolean(dict, "isle:Back Buffers in Video RAM", -1); if (backBuffersInVRAM != -1) { diff --git a/ISLE/isleapp.h b/ISLE/isleapp.h index d0a7f523..8c6ce1af 100644 --- a/ISLE/isleapp.h +++ b/ISLE/isleapp.h @@ -51,6 +51,7 @@ class IsleApp { SDL_Cursor* GetCursorNo() { return m_cursorNo; } MxS32 GetDrawCursor() { return m_drawCursor; } MxS32 GetGameStarted() { return m_gameStarted; } + MxFloat GetMouseSensitivity() { return m_mouseSensitivity; } void SetWindowActive(MxS32 p_windowActive) { m_windowActive = p_windowActive; } void SetGameStarted(MxS32 p_gameStarted) { m_gameStarted = p_gameStarted; } @@ -88,6 +89,7 @@ class IsleApp { SDL_Cursor* m_cursorNo; // 0x84 SDL_Cursor* m_cursorCurrent; // 0x88 char* m_mediaPath; + MxFloat m_mouseSensitivity; char* m_iniPath; MxFloat m_maxLod;