Common - Add ace_common_fnc_addExplosionEventHandler

This commit is contained in:
PabstMirror 2024-08-22 13:38:42 -05:00
parent f564016b4b
commit ea175b1dc4
4 changed files with 42 additions and 12 deletions

View File

@ -269,6 +269,7 @@ PREP(_handleRequestAllSyncedEvents);
// other eventhandlers
PREP(addActionEventHandler);
PREP(addActionMenuEventHandler);
PREP(addExplosionEventHandler);
PREP(addMapMarkerCreatedEventHandler);
PREP(addPlayerEH);

View File

@ -0,0 +1,36 @@
#include "..\script_component.hpp"
/*
* Author: johnb432, PabstMirror
* Adds event hander for explosions (for local projectiles)
*
* Arguments:
* 0: Code to execute <CODE>
*
* Return Value:
* The CBA Event Handler Index <NUMBER>
*
* Example:
* [{systemChat "boom"}] call ace_common_fnc_addExplosionEventHandler
*
* Public: Yes
*/
params [["_code", {}, [{}]]];
if !(missionNamespace getVariable [QGVAR(addExplosionEventHandlerActive), false]) then {
GVAR(addExplosionEventHandlerActive) = true;
addMissionEventHandler ["ProjectileCreated", {
params ["_projectile"];
TRACE_2("pc",typeOf _projectile,local _projectile);
if (!local _projectile) exitWith {}; // Rockets only explode on local clients
_projectile addEventHandler ["Explode", {
TRACE_1("exp",_this);
[QGVAR(explosion), _this] call CBA_fnc_localEvent;
}];
}];
};
[QGVAR(explosion), _code] call CBA_fnc_addEventHandler

View File

@ -16,16 +16,10 @@ if (isServer) then {
// Only install event handler if combat deafness is enabled
if (!GVAR(enableCombatDeafness)) exitWith {};
addMissionEventHandler ["ProjectileCreated", {
params ["_projectile"];
if (!local _projectile) exitWith {};
// Rockets only explode on local clients
_projectile addEventHandler ["Explode", {
[QGVAR(explosion), _this] call CBA_fnc_globalEvent;
}];
}];
[{ // Convert ace_common's local explosion to a hearing global explosion event
TRACE_1("Explode",_this);
[QGVAR(explosion), _this select [0,2]] call CBA_fnc_globalEvent; // trim unused 3rd arg for network savings
}] call EFUNC(common,addExplosionEventHandler);
}] call CBA_fnc_addEventHandler;
if (!hasInterface) exitWith {};

View File

@ -6,13 +6,12 @@
* Arguments:
* 0: Projectile <OBJECT>
* 1: Explosion position ASL <ARRAY>
* 2: Velocity <ARRAY> (unused)
*
* Return Value:
* None
*
* Example:
* [_projectile, [0, 0, 0], [0, 0, 0]] call ace_hearing_fnc_explosion
* [_projectile, [0, 0, 0]] call ace_hearing_fnc_explosion
*
* Public: No
*/