Skip to content

Commit fcb064a

Browse files
committed
Add setting
1 parent c10940e commit fcb064a

File tree

7 files changed

+36
-0
lines changed

7 files changed

+36
-0
lines changed

Client/core/CClientVariables.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,7 @@ void CClientVariables::LoadDefaults()
398398
DEFAULT("process_cpu_affinity", true); // Set CPU 0 affinity to improve game performance and fix the known issue in single-threaded games
399399
DEFAULT("ask_before_disconnect", true); // Ask before disconnecting from a server
400400
DEFAULT("allow_steam_client", false); // Allow connecting with the local Steam client (to set GTA:SA ingame status)
401+
DEFAULT("use_mouse_sensitivity_for_aiming", false); // It uses the horizontal mouse sensitivity for aiming, making the Y-axis sensitivity the same as the X-axis
401402

402403
if (!Exists("locale"))
403404
{

Client/core/CCore.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,7 @@ void CCore::ApplyGameSettings()
680680
CVARS_GET("dynamic_ped_shadows", bVal);
681681
pGameSettings->SetDynamicPedShadowsEnabled(bVal);
682682
pController->SetVerticalAimSensitivityRawValue(CVARS_GET_VALUE<float>("vertical_aim_sensitivity"));
683+
pController->SetVerticalAimSensitivitySameAsHorizontal(CVARS_GET_VALUE<bool>("use_mouse_sensitivity_for_aiming"));
683684
CVARS_GET("mastervolume", fVal);
684685
pGameSettings->SetRadioVolume(pGameSettings->GetRadioVolume() * fVal);
685686
pGameSettings->SetSFXVolume(pGameSettings->GetSFXVolume() * fVal);

Client/core/CSettings.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,7 @@ void CSettings::ResetGuiPointers()
363363
m_pLabelVerticalAimSensitivity = NULL;
364364
m_pVerticalAimSensitivity = NULL;
365365
m_pLabelVerticalAimSensitivityValue = NULL;
366+
m_pCheckboxVerticalAimSensitivity = nullptr;
366367

367368
m_pControlsJoypadLabel = NULL;
368369
m_pControlsInputTypePane = NULL;
@@ -659,6 +660,10 @@ void CSettings::CreateGUI()
659660
FinalizeSliderRow(tabPanelSize.fX, m_pVerticalAimSensitivity, m_pLabelVerticalAimSensitivityValue, 160.0f, kSliderLabelSpacing, m_pLabelVerticalAimSensitivity);
660661
vecTemp.fY += 30.f;
661662

663+
m_pCheckboxVerticalAimSensitivity = reinterpret_cast<CGUICheckBox*>(pManager->CreateCheckBox(pTabControls, _("Use mouse sensitivity for aiming"), false));
664+
m_pCheckboxVerticalAimSensitivity->SetPosition(CVector2D(verticalSliderPos.fX, verticalSliderPos.fY + 20.0f));
665+
m_pCheckboxVerticalAimSensitivity->AutoSize(nullptr, 20.0f);
666+
662667
vecTemp.fX = 16;
663668
// Joypad options
664669
m_pControlsJoypadLabel = reinterpret_cast<CGUILabel*>(pManager->CreateLabel(pTabControls, _("Joypad options")));
@@ -1965,6 +1970,7 @@ void CSettings::CreateGUI()
19651970
m_pEditBrowserWhitelistAdd->SetActivateHandler(GUI_CALLBACK(&CSettings::OnBrowserWhitelistDomainAddFocused, this));
19661971
m_pEditBrowserWhitelistAdd->SetDeactivateHandler(GUI_CALLBACK(&CSettings::OnBrowserWhitelistDomainAddDefocused, this));
19671972
m_pProcessAffinityCheckbox->SetClickHandler(GUI_CALLBACK(&CSettings::OnAffinityClick, this));
1973+
m_pCheckboxVerticalAimSensitivity->SetClickHandler(GUI_CALLBACK(&CSettings::OnMouseAimingClick, this));
19681974

19691975
// Set up the events for advanced description
19701976
m_pPriorityLabel->SetMouseEnterHandler(GUI_CALLBACK(&CSettings::OnShowAdvancedSettingDescription, this));
@@ -2845,6 +2851,7 @@ bool CSettings::OnControlsDefaultClick(CGUIElement* pElement)
28452851
m_pClassicControls->SetSelected(CVARS_GET_VALUE<bool>("classic_controls"));
28462852
m_pMouseSensitivity->SetScrollPosition(gameSettings->GetMouseSensitivity());
28472853
m_pVerticalAimSensitivity->SetScrollPosition(pController->GetVerticalAimSensitivity());
2854+
m_pCheckboxVerticalAimSensitivity->SetSelected(CVARS_GET_VALUE<bool>("use_mouse_sensitivity_for_aiming"));
28482855

28492856
return true;
28502857
}
@@ -3948,6 +3955,9 @@ void CSettings::LoadData()
39483955
pController->SetVerticalAimSensitivityRawValue(CVARS_GET_VALUE<float>("vertical_aim_sensitivity"));
39493956
m_pVerticalAimSensitivity->SetScrollPosition(pController->GetVerticalAimSensitivity());
39503957

3958+
CVARS_GET("use_mouse_sensitivity_for_aiming", bVar);
3959+
m_pCheckboxVerticalAimSensitivity->SetSelected(bVar);
3960+
39513961
// Audio
39523962
m_pCheckBoxAudioEqualizer->SetSelected(gameSettings->IsRadioEqualizerEnabled());
39533963
m_pCheckBoxAudioAutotune->SetSelected(gameSettings->IsRadioAutotuneEnabled());
@@ -4274,6 +4284,8 @@ void CSettings::SaveData()
42744284
pController->SetClassicControls(m_pClassicControls->GetSelected());
42754285
pController->SetVerticalAimSensitivity(m_pVerticalAimSensitivity->GetScrollPosition());
42764286
CVARS_SET("vertical_aim_sensitivity", pController->GetVerticalAimSensitivityRawValue());
4287+
CVARS_SET("use_mouse_sensitivity_for_aiming", m_pCheckboxVerticalAimSensitivity->GetSelected());
4288+
pController->SetVerticalAimSensitivitySameAsHorizontal(m_pCheckboxVerticalAimSensitivity->GetSelected());
42774289

42784290
// Video
42794291
// get current
@@ -5821,6 +5833,12 @@ bool CSettings::OnAffinityClick(CGUIElement* pElement)
58215833
return true;
58225834
}
58235835

5836+
bool CSettings::OnMouseAimingClick(CGUIElement* pElement)
5837+
{
5838+
m_pVerticalAimSensitivity->SetEnabled(!m_pCheckboxVerticalAimSensitivity->GetSelected());
5839+
return true;
5840+
}
5841+
58245842
bool CSettings::OnBrowserBlacklistAdd(CGUIElement* pElement)
58255843
{
58265844
SString strDomain = m_pEditBrowserBlacklistAdd->GetText();

Client/core/CSettings.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ class CSettings
308308
CGUILabel* m_pLabelVerticalAimSensitivity;
309309
CGUIScrollBar* m_pVerticalAimSensitivity;
310310
CGUILabel* m_pLabelVerticalAimSensitivityValue;
311+
CGUICheckBox* m_pCheckboxVerticalAimSensitivity;
311312

312313
CGUILabel* m_pControlsJoypadLabel;
313314
CGUIScrollPane* m_pControlsInputTypePane;
@@ -448,6 +449,7 @@ class CSettings
448449
bool OnHideAdvancedSettingDescription(CGUIElement* pElement);
449450
bool OnTabChanged(CGUIElement* pElement);
450451
bool OnAffinityClick(CGUIElement* pElement);
452+
bool OnMouseAimingClick(CGUIElement* pElement);
451453
void ReloadBrowserLists();
452454

453455
private:

Client/game_sa/CControllerConfigManagerSA.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#define VAR_FlyWithMouse ( ( BYTE * ) ( 0xC1CC03 ) )
1818
#define VAR_SteerWithMouse ( ( BYTE * ) ( 0xC1CC02 ) )
1919
#define VAR_VerticalAimSensitivity ( ( float * ) ( 0xB6EC18 ) )
20+
#define VAR_HorizontalMouseSensitivity 0xB6EC1C
2021

2122
static const float VERTICAL_AIM_SENSITIVITY_MIN = 0.000312f;
2223
static const float VERTICAL_AIM_SENSITIVITY_DEFAULT = 0.0015f;
@@ -149,3 +150,14 @@ void CControllerConfigManagerSA::SetVerticalAimSensitivityRawValue(float fRawVal
149150
{
150151
MemPutFast<float>(VAR_VerticalAimSensitivity, fRawValue);
151152
}
153+
154+
void CControllerConfigManagerSA::SetVerticalAimSensitivitySameAsHorizontal(bool enabled)
155+
{
156+
std::uintptr_t varToUse = enabled ? VAR_HorizontalMouseSensitivity : reinterpret_cast<std::uintptr_t>(VAR_VerticalAimSensitivity);
157+
158+
MemPut<std::uintptr_t>(0x50F048, varToUse); // CCam::Process_1rstPersonPedOnPC
159+
MemPut<std::uintptr_t>(0x50FB28, varToUse); // CCam::Process_FollowPedWithMouse
160+
MemPut<std::uintptr_t>(0x510C28, varToUse); // CCam::Process_M16_1stPerson
161+
MemPut<std::uintptr_t>(0x511E0A, varToUse); // CCam::Process_Rocket
162+
MemPut<std::uintptr_t>(0x52228E, varToUse); // CCam::Process_AimWeapon
163+
}

Client/game_sa/CControllerConfigManagerSA.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class CControllerConfigManagerSA : public CControllerConfigManager
3737
void SetVerticalAimSensitivity(float fSensitivity);
3838
float GetVerticalAimSensitivityRawValue();
3939
void SetVerticalAimSensitivityRawValue(float fRawValue);
40+
void SetVerticalAimSensitivitySameAsHorizontal(bool enabled) override;
4041

4142
// CControllerConfigManagerSA
4243
void ApplySteerAndFlyWithMouseSettings();

Client/sdk/game/CControllerConfigManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,4 +206,5 @@ class CControllerConfigManager
206206
virtual void SetVerticalAimSensitivity(float fSensitivity) = 0;
207207
virtual float GetVerticalAimSensitivityRawValue() = 0;
208208
virtual void SetVerticalAimSensitivityRawValue(float fRawValue) = 0;
209+
virtual void SetVerticalAimSensitivitySameAsHorizontal(bool enable) = 0;
209210
};

0 commit comments

Comments
 (0)