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.