summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-08-24 20:59:32 +0200
committerSergeanur <s.anureev@yandex.ua>2020-08-24 20:59:32 +0200
commita3322f17d594f6fccf76dcd1acdbbb9de4558aa6 (patch)
tree40e4ecce4ba6115bfa6cb9a8bbbcc9915ff2011c
parentfixes to zones and vehicle comp rules (diff)
parentsmall fix (diff)
downloadre3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.tar
re3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.tar.gz
re3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.tar.bz2
re3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.tar.lz
re3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.tar.xz
re3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.tar.zst
re3-a3322f17d594f6fccf76dcd1acdbbb9de4558aa6.zip
-rw-r--r--src/audio/AudioScriptObject.cpp10
-rw-r--r--src/audio/AudioScriptObject.h3
-rw-r--r--src/audio/DMAudio.cpp4
-rw-r--r--src/core/ControllerConfig.cpp175
-rw-r--r--src/core/ControllerConfig.h3
-rw-r--r--src/core/Frontend.cpp6
-rw-r--r--src/core/config.h1
7 files changed, 115 insertions, 87 deletions
diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp
index 69d80fbc..ac30f757 100644
--- a/src/audio/AudioScriptObject.cpp
+++ b/src/audio/AudioScriptObject.cpp
@@ -4,6 +4,16 @@
#include "Pools.h"
#include "DMAudio.h"
+cAudioScriptObject::cAudioScriptObject()
+{
+ Reset();
+};
+
+cAudioScriptObject::~cAudioScriptObject()
+{
+ Reset();
+};
+
void
cAudioScriptObject::Reset()
{
diff --git a/src/audio/AudioScriptObject.h b/src/audio/AudioScriptObject.h
index ff36474d..8110b2bb 100644
--- a/src/audio/AudioScriptObject.h
+++ b/src/audio/AudioScriptObject.h
@@ -7,6 +7,9 @@ public:
CVector Posn;
int32 AudioEntity;
+ cAudioScriptObject();
+ ~cAudioScriptObject();
+
void Reset(); /// ok
static void* operator new(size_t);
diff --git a/src/audio/DMAudio.cpp b/src/audio/DMAudio.cpp
index 6859cba3..b3c16941 100644
--- a/src/audio/DMAudio.cpp
+++ b/src/audio/DMAudio.cpp
@@ -247,7 +247,7 @@ cDMAudio::ReportCrime(eCrimeType crime, const CVector &pos)
int32
cDMAudio::CreateLoopingScriptObject(cAudioScriptObject *scriptObject)
{
- int32 audioEntity = AudioManager.CreateEntity(AUDIOTYPE_SCRIPTOBJECT, (CPhysical *)scriptObject);
+ int32 audioEntity = AudioManager.CreateEntity(AUDIOTYPE_SCRIPTOBJECT, scriptObject);
if ( AEHANDLE_IS_OK(audioEntity) )
AudioManager.SetEntityStatus(audioEntity, true);
@@ -264,7 +264,7 @@ cDMAudio::DestroyLoopingScriptObject(int32 audioEntity)
void
cDMAudio::CreateOneShotScriptObject(cAudioScriptObject *scriptObject)
{
- int32 audioEntity = AudioManager.CreateEntity(AUDIOTYPE_SCRIPTOBJECT, (CPhysical *)scriptObject);
+ int32 audioEntity = AudioManager.CreateEntity(AUDIOTYPE_SCRIPTOBJECT, scriptObject);
if ( AEHANDLE_IS_OK(audioEntity) )
{
diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp
index 38afdd0e..b0e04e2b 100644
--- a/src/core/ControllerConfig.cpp
+++ b/src/core/ControllerConfig.cpp
@@ -215,7 +215,10 @@ void CControllerConfigManager::InitDefaultControlConfiguration()
SetControllerKeyAssociatedWithAction (PED_FIREWEAPON, rsPADINS, KEYBOARD);
SetControllerKeyAssociatedWithAction (PED_FIREWEAPON, rsLCTRL, OPTIONAL_EXTRA);
-
+#ifdef BIND_VEHICLE_FIREWEAPON
+ SetControllerKeyAssociatedWithAction (VEHICLE_FIREWEAPON, rsPADINS, KEYBOARD);
+ SetControllerKeyAssociatedWithAction (VEHICLE_FIREWEAPON, rsLCTRL, OPTIONAL_EXTRA);
+#endif
SetControllerKeyAssociatedWithAction (PED_CYCLE_WEAPON_LEFT, rsPADDEL, KEYBOARD);
SetControllerKeyAssociatedWithAction (PED_CYCLE_WEAPON_RIGHT, rsPADENTER, OPTIONAL_EXTRA); // BUG: must be KEYBOARD ?
@@ -285,6 +288,9 @@ void CControllerConfigManager::InitDefaultControlConfigMouse(CMouseControllerSta
{
m_bMouseAssociated = true;
SetMouseButtonAssociatedWithAction(PED_FIREWEAPON, 1);
+#ifdef BIND_VEHICLE_FIREWEAPON
+ SetMouseButtonAssociatedWithAction(VEHICLE_FIREWEAPON, 1);
+#endif
}
if (availableButtons.RMB)
@@ -371,6 +377,9 @@ void CControllerConfigManager::InitDefaultControlConfigJoyPad(uint32 buttons)
SetControllerKeyAssociatedWithAction(PED_SNIPER_ZOOM_OUT, 3, JOYSTICK);
case 2:
SetControllerKeyAssociatedWithAction(PED_FIREWEAPON, 2, JOYSTICK);
+#ifdef BIND_VEHICLE_FIREWEAPON
+ SetControllerKeyAssociatedWithAction(VEHICLE_FIREWEAPON, 2, JOYSTICK);
+#endif
case 1:
SetControllerKeyAssociatedWithAction(VEHICLE_ENTER_EXIT, 1, JOYSTICK);
/*******************************************************************************************/
@@ -422,6 +431,9 @@ void CControllerConfigManager::InitDefaultControlConfigJoyPad(uint32 buttons)
SetControllerKeyAssociatedWithAction(PED_SNIPER_ZOOM_OUT, 2, JOYSTICK);
case 1:
SetControllerKeyAssociatedWithAction(PED_FIREWEAPON, 1, JOYSTICK);
+#ifdef BIND_VEHICLE_FIREWEAPON
+ SetControllerKeyAssociatedWithAction(VEHICLE_FIREWEAPON, 1, JOYSTICK);
+#endif
/*******************************************************************************************/
}
}
@@ -463,6 +475,9 @@ void CControllerConfigManager::InitialiseControllerActionNameArray()
SETACTIONNAME(SHOW_MOUSE_POINTER_TOGGLE);
SETACTIONNAME(CAMERA_CHANGE_VIEW_ALL_SITUATIONS);
SETACTIONNAME(PED_FIREWEAPON);
+#ifdef BIND_VEHICLE_FIREWEAPON
+ SETACTIONNAME(VEHICLE_FIREWEAPON);
+#endif
SETACTIONNAME(VEHICLE_ENTER_EXIT);
SETACTIONNAME(GO_LEFT);
SETACTIONNAME(GO_RIGHT);
@@ -662,6 +677,10 @@ void CControllerConfigManager::AffectControllerStateOn_ButtonDown(int32 button,
void CControllerConfigManager::AffectControllerStateOn_ButtonDown_Driving(int32 button, eControllerType type, CControllerState &state)
{
+#ifdef BIND_VEHICLE_FIREWEAPON
+ if (button == GetControllerKeyAssociatedWithAction(VEHICLE_FIREWEAPON, type))
+ state.Circle = 255;
+#endif
if (button == GetControllerKeyAssociatedWithAction(VEHICLE_LOOKBEHIND, type))
{
state.LeftShoulder2 = 255;
@@ -812,7 +831,11 @@ void CControllerConfigManager::AffectControllerStateOn_ButtonDown_ThirdPersonOnl
void CControllerConfigManager::AffectControllerStateOn_ButtonDown_FirstAndThirdPersonOnly(int32 button, eControllerType type, CControllerState &state)
{
CPad *pad = CPad::GetPad(PAD1);
-
+
+#ifdef BIND_VEHICLE_FIREWEAPON
+ if (button == GetControllerKeyAssociatedWithAction(PED_FIREWEAPON, type))
+ state.Circle = 255;
+#endif
if (button == GetControllerKeyAssociatedWithAction(PED_LOCK_TARGET, type))
state.RightShoulder1 = 255;
@@ -894,8 +917,11 @@ void CControllerConfigManager::AffectControllerStateOn_ButtonDown_AllStates(int3
{
if (button == GetControllerKeyAssociatedWithAction(CAMERA_CHANGE_VIEW_ALL_SITUATIONS, type))
state.Select = 255;
+
+#ifndef BIND_VEHICLE_FIREWEAPON
if (button == GetControllerKeyAssociatedWithAction(PED_FIREWEAPON, type))
state.Circle = 255;
+#endif
if (button == GetControllerKeyAssociatedWithAction(GO_LEFT, type))
{
@@ -1611,28 +1637,25 @@ bool CControllerConfigManager::GetIsMouseButtonUp(RsKeyCodes keycode)
return false;
}
+#define CLEAR_ACTION_IF_NEEDED(action) \
+if (key == GetControllerKeyAssociatedWithAction(action, type))\
+ ClearSettingsAssociatedWithAction(action, type);
+
void CControllerConfigManager::DeleteMatchingCommonControls(e_ControllerAction action, int32 key, eControllerType type)
{
if (!GetIsKeyBlank(key, type))
{
- if (key == GetControllerKeyAssociatedWithAction(CAMERA_CHANGE_VIEW_ALL_SITUATIONS,type))
- ClearSettingsAssociatedWithAction(CAMERA_CHANGE_VIEW_ALL_SITUATIONS, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_FIREWEAPON, type))
- ClearSettingsAssociatedWithAction(PED_FIREWEAPON, type);
- if (key == GetControllerKeyAssociatedWithAction(GO_LEFT, type))
- ClearSettingsAssociatedWithAction(GO_LEFT, type);
- if (key == GetControllerKeyAssociatedWithAction(GO_RIGHT, type))
- ClearSettingsAssociatedWithAction(GO_RIGHT, type);
- if (key == GetControllerKeyAssociatedWithAction(NETWORK_TALK, type))
- ClearSettingsAssociatedWithAction(NETWORK_TALK, type);
- if (key == GetControllerKeyAssociatedWithAction(SWITCH_DEBUG_CAM_ON, type))
- ClearSettingsAssociatedWithAction(SWITCH_DEBUG_CAM_ON, type);
- if (key == GetControllerKeyAssociatedWithAction(TOGGLE_DPAD, type))
- ClearSettingsAssociatedWithAction(TOGGLE_DPAD, type);
- if (key == GetControllerKeyAssociatedWithAction(TAKE_SCREEN_SHOT, type))
- ClearSettingsAssociatedWithAction(TAKE_SCREEN_SHOT, type);
- if (key == GetControllerKeyAssociatedWithAction(SHOW_MOUSE_POINTER_TOGGLE, type))
- ClearSettingsAssociatedWithAction(SHOW_MOUSE_POINTER_TOGGLE, type);
+ CLEAR_ACTION_IF_NEEDED(CAMERA_CHANGE_VIEW_ALL_SITUATIONS);
+#ifndef BIND_VEHICLE_FIREWEAPON
+ CLEAR_ACTION_IF_NEEDED(PED_FIREWEAPON);
+#endif
+ CLEAR_ACTION_IF_NEEDED(GO_LEFT);
+ CLEAR_ACTION_IF_NEEDED(GO_RIGHT);
+ CLEAR_ACTION_IF_NEEDED(NETWORK_TALK);
+ CLEAR_ACTION_IF_NEEDED(SWITCH_DEBUG_CAM_ON);
+ CLEAR_ACTION_IF_NEEDED(TOGGLE_DPAD);
+ CLEAR_ACTION_IF_NEEDED(TAKE_SCREEN_SHOT);
+ CLEAR_ACTION_IF_NEEDED(SHOW_MOUSE_POINTER_TOGGLE);
}
}
@@ -1640,16 +1663,11 @@ void CControllerConfigManager::DeleteMatching3rdPersonControls(e_ControllerActio
{
if (!GetIsKeyBlank(key, type))
{
- if (key == GetControllerKeyAssociatedWithAction(PED_LOOKBEHIND, type))
- ClearSettingsAssociatedWithAction(PED_LOOKBEHIND, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_CYCLE_WEAPON_LEFT, type))
- ClearSettingsAssociatedWithAction(PED_CYCLE_WEAPON_LEFT, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_CYCLE_WEAPON_RIGHT, type))
- ClearSettingsAssociatedWithAction(PED_CYCLE_WEAPON_RIGHT, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_JUMPING, type))
- ClearSettingsAssociatedWithAction(PED_JUMPING, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_SPRINT, type))
- ClearSettingsAssociatedWithAction(PED_SPRINT, type);
+ CLEAR_ACTION_IF_NEEDED(PED_LOOKBEHIND);
+ CLEAR_ACTION_IF_NEEDED(PED_CYCLE_WEAPON_LEFT);
+ CLEAR_ACTION_IF_NEEDED(PED_CYCLE_WEAPON_RIGHT);
+ CLEAR_ACTION_IF_NEEDED(PED_JUMPING);
+ CLEAR_ACTION_IF_NEEDED(PED_SPRINT);
if (key == GetControllerKeyAssociatedWithAction(PED_DUCK, type))
ClearSettingsAssociatedWithAction(PED_DUCK, type);
if (key == GetControllerKeyAssociatedWithAction(PED_ANSWER_PHONE, type))
@@ -1657,12 +1675,9 @@ void CControllerConfigManager::DeleteMatching3rdPersonControls(e_ControllerActio
if (FrontEndMenuManager.m_ControlMethod == CONTROL_CLASSIC)
{
- if (key == GetControllerKeyAssociatedWithAction(PED_CYCLE_TARGET_LEFT, type))
- ClearSettingsAssociatedWithAction(PED_CYCLE_TARGET_LEFT, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_CYCLE_TARGET_RIGHT, type))
- ClearSettingsAssociatedWithAction(PED_CYCLE_TARGET_RIGHT, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_CENTER_CAMERA_BEHIND_PLAYER, type))
- ClearSettingsAssociatedWithAction(PED_CENTER_CAMERA_BEHIND_PLAYER, type);
+ CLEAR_ACTION_IF_NEEDED(PED_CYCLE_TARGET_LEFT);
+ CLEAR_ACTION_IF_NEEDED(PED_CYCLE_TARGET_RIGHT);
+ CLEAR_ACTION_IF_NEEDED(PED_CENTER_CAMERA_BEHIND_PLAYER);
}
}
}
@@ -1671,23 +1686,19 @@ void CControllerConfigManager::DeleteMatching1rst3rdPersonControls(e_ControllerA
{
if (!GetIsKeyBlank(key, type))
{
- if (key == GetControllerKeyAssociatedWithAction(PED_LOCK_TARGET, type))
- ClearSettingsAssociatedWithAction(PED_LOCK_TARGET, type);
- if (key == GetControllerKeyAssociatedWithAction(GO_FORWARD, type))
- ClearSettingsAssociatedWithAction(GO_FORWARD, type);
- if (key == GetControllerKeyAssociatedWithAction(GO_BACK, type))
- ClearSettingsAssociatedWithAction(GO_BACK, type);
+#ifdef BIND_VEHICLE_FIREWEAPON
+ CLEAR_ACTION_IF_NEEDED(PED_FIREWEAPON);
+#endif
+ CLEAR_ACTION_IF_NEEDED(PED_LOCK_TARGET);
+ CLEAR_ACTION_IF_NEEDED(GO_FORWARD);
+ CLEAR_ACTION_IF_NEEDED(GO_BACK);
if (FrontEndMenuManager.m_ControlMethod == CONTROL_CLASSIC)
{
- if (key == GetControllerKeyAssociatedWithAction(PED_1RST_PERSON_LOOK_LEFT, type))
- ClearSettingsAssociatedWithAction(PED_1RST_PERSON_LOOK_LEFT, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_1RST_PERSON_LOOK_RIGHT, type))
- ClearSettingsAssociatedWithAction(PED_1RST_PERSON_LOOK_RIGHT, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_1RST_PERSON_LOOK_DOWN, type))
- ClearSettingsAssociatedWithAction(PED_1RST_PERSON_LOOK_DOWN, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_1RST_PERSON_LOOK_UP, type))
- ClearSettingsAssociatedWithAction(PED_1RST_PERSON_LOOK_UP, type);
+ CLEAR_ACTION_IF_NEEDED(PED_1RST_PERSON_LOOK_LEFT);
+ CLEAR_ACTION_IF_NEEDED(PED_1RST_PERSON_LOOK_RIGHT);
+ CLEAR_ACTION_IF_NEEDED(PED_1RST_PERSON_LOOK_DOWN);
+ CLEAR_ACTION_IF_NEEDED(PED_1RST_PERSON_LOOK_UP);
}
}
}
@@ -1696,34 +1707,23 @@ void CControllerConfigManager::DeleteMatchingVehicleControls(e_ControllerAction
{
if (!GetIsKeyBlank(key, type))
{
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_LOOKBEHIND, type))
- ClearSettingsAssociatedWithAction(VEHICLE_LOOKBEHIND, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_LOOKLEFT, type))
- ClearSettingsAssociatedWithAction(VEHICLE_LOOKLEFT, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_LOOKRIGHT, type))
- ClearSettingsAssociatedWithAction(VEHICLE_LOOKRIGHT, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_LOOKBEHIND, type)) // note: dublicate
- ClearSettingsAssociatedWithAction(VEHICLE_LOOKBEHIND, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_HORN, type))
- ClearSettingsAssociatedWithAction(VEHICLE_HORN, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_HANDBRAKE, type))
- ClearSettingsAssociatedWithAction(VEHICLE_HANDBRAKE, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_ACCELERATE, type))
- ClearSettingsAssociatedWithAction(VEHICLE_ACCELERATE, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_BRAKE, type))
- ClearSettingsAssociatedWithAction(VEHICLE_BRAKE, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_CHANGE_RADIO_STATION, type))
- ClearSettingsAssociatedWithAction(VEHICLE_CHANGE_RADIO_STATION, type);
- if (key == GetControllerKeyAssociatedWithAction(TOGGLE_SUBMISSIONS, type))
- ClearSettingsAssociatedWithAction(TOGGLE_SUBMISSIONS, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_TURRETLEFT, type))
- ClearSettingsAssociatedWithAction(VEHICLE_TURRETLEFT, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_TURRETRIGHT, type))
- ClearSettingsAssociatedWithAction(VEHICLE_TURRETRIGHT, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_TURRETUP, type))
- ClearSettingsAssociatedWithAction(VEHICLE_TURRETUP, type);
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_TURRETDOWN, type))
- ClearSettingsAssociatedWithAction(VEHICLE_TURRETDOWN, type);
+#ifdef BIND_VEHICLE_FIREWEAPON
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_FIREWEAPON);
+#endif
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_LOOKBEHIND);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_LOOKLEFT);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_LOOKRIGHT);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_LOOKBEHIND); // note: duplicate
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_HORN);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_HANDBRAKE);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_ACCELERATE);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_BRAKE);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_CHANGE_RADIO_STATION);
+ CLEAR_ACTION_IF_NEEDED(TOGGLE_SUBMISSIONS);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_TURRETLEFT);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_TURRETRIGHT);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_TURRETUP);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_TURRETDOWN);
}
}
@@ -1731,8 +1731,7 @@ void CControllerConfigManager::DeleteMatchingVehicle_3rdPersonControls(e_Control
{
if (!GetIsKeyBlank(key, type))
{
- if (key == GetControllerKeyAssociatedWithAction(VEHICLE_ENTER_EXIT, type))
- ClearSettingsAssociatedWithAction(VEHICLE_ENTER_EXIT, type);
+ CLEAR_ACTION_IF_NEEDED(VEHICLE_ENTER_EXIT);
}
}
@@ -1740,13 +1739,13 @@ void CControllerConfigManager::DeleteMatching1rstPersonControls(e_ControllerActi
{
if (!GetIsKeyBlank(key, type))
{
- if (key == GetControllerKeyAssociatedWithAction(PED_SNIPER_ZOOM_IN, type))
- ClearSettingsAssociatedWithAction(PED_SNIPER_ZOOM_IN, type);
- if (key == GetControllerKeyAssociatedWithAction(PED_SNIPER_ZOOM_OUT, type))
- ClearSettingsAssociatedWithAction(PED_SNIPER_ZOOM_OUT, type);
+ CLEAR_ACTION_IF_NEEDED(PED_SNIPER_ZOOM_IN);
+ CLEAR_ACTION_IF_NEEDED(PED_SNIPER_ZOOM_OUT);
}
}
+#undef CLEAR_ACTION_IF_NEEDED
+
void CControllerConfigManager::DeleteMatchingActionInitiators(e_ControllerAction action, int32 key, eControllerType type)
{
if (!GetIsKeyBlank(key, type))
@@ -1824,7 +1823,9 @@ e_ControllerActionType CControllerConfigManager::GetActionType(e_ControllerActio
{
switch (action)
{
+#ifndef BIND_VEHICLE_FIREWEAPON
case PED_FIREWEAPON:
+#endif
case GO_LEFT:
case GO_RIGHT:
case CAMERA_CHANGE_VIEW_ALL_SITUATIONS:
@@ -1849,6 +1850,9 @@ e_ControllerActionType CControllerConfigManager::GetActionType(e_ControllerActio
return ACTIONTYPE_3RDPERSON;
break;
+#ifdef BIND_VEHICLE_FIREWEAPON
+ case VEHICLE_FIREWEAPON:
+#endif
case VEHICLE_LOOKBEHIND:
case VEHICLE_LOOKLEFT:
case VEHICLE_LOOKRIGHT:
@@ -1869,6 +1873,9 @@ e_ControllerActionType CControllerConfigManager::GetActionType(e_ControllerActio
return ACTIONTYPE_VEHICLE_3RDPERSON;
break;
+#ifdef BIND_VEHICLE_FIREWEAPON
+ case PED_FIREWEAPON:
+#endif
case GO_FORWARD:
case GO_BACK:
case PED_1RST_PERSON_LOOK_LEFT:
diff --git a/src/core/ControllerConfig.h b/src/core/ControllerConfig.h
index 05c37c22..eb66937a 100644
--- a/src/core/ControllerConfig.h
+++ b/src/core/ControllerConfig.h
@@ -34,6 +34,9 @@ enum e_ControllerAction
PED_LOOKBEHIND,
PED_DUCK,
PED_ANSWER_PHONE,
+#ifdef BIND_VEHICLE_FIREWEAPON
+ VEHICLE_FIREWEAPON,
+#endif
VEHICLE_ACCELERATE,
VEHICLE_BRAKE,
VEHICLE_CHANGE_RADIO_STATION,
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index b76acf40..c55b139c 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -1544,7 +1544,11 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8
} else if (column == CONTSETUP_VEHICLE_COLUMN) {
switch (optionIdx) {
case 0:
- controllerAction = PED_FIREWEAPON;
+#ifdef BIND_VEHICLE_FIREWEAPON
+ controllerAction = VEHICLE_FIREWEAPON;
+#else
+ controllerAction = PED_FIREWEAPON;
+#endif
break;
case 1:
case 2:
diff --git a/src/core/config.h b/src/core/config.h
index 5b4cebe4..62c3fa73 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -253,6 +253,7 @@ enum Config {
#define ALLCARSHELI_CHEAT
#define ALT_DODO_CHEAT
#define REGISTER_START_BUTTON
+//#define BIND_VEHICLE_FIREWEAPON // Adds ability to rebind fire key for 'in vehicle' controls
// Hud, frontend and radar
#define HUD_ENHANCEMENTS // Adjusts some aspects to make the HUD look/behave a little bit better.