diff --git a/addons/events/fnc_addPlayerEventHandler.sqf b/addons/events/fnc_addPlayerEventHandler.sqf index 7e3aebc74..7f7c3d83b 100644 --- a/addons/events/fnc_addPlayerEventHandler.sqf +++ b/addons/events/fnc_addPlayerEventHandler.sqf @@ -6,20 +6,21 @@ Description: Adds a player event handler. Possible events: - "unit" - player controlled unit changed - "weapon" - currently selected weapon change - "turretweapon" - currently selected turret weapon change - "muzzle" - currently selected muzzle change - "weaponMode" - currently selected weapon mode change - "loadout" - players loadout changed - "vehicle" - players current vehicle changed - "turret" - position in vehicle changed - "visionMode" - player changed to normal/night/thermal view - "cameraView" - camera mode changed ("Internal", "External", "Gunner" etc.) - "featureCamera" - camera changed (Curator, Arsenal, Spectator etc.) - "visibleMap" - opened or closed map - "group" - player group changes - "leader" - leader of player changes + "unit" - player controlled unit changed + "weapon" - currently selected weapon change + "turretweapon" - currently selected turret weapon change + "muzzle" - currently selected muzzle change + "weaponMode" - currently selected weapon mode change + "loadout" - players loadout changed + "vehicle" - players current vehicle changed + "turret" - position in vehicle changed + "turretOpticsMode" - turret zoom (FOV) changed + "visionMode" - player changed to normal/night/thermal view + "cameraView" - camera mode changed ("Internal", "External", "Gunner" etc.) + "featureCamera" - camera changed (Curator, Arsenal, Spectator etc.) + "visibleMap" - opened or closed map + "group" - player group changes + "leader" - leader of player changes Parameters: _type - Event handler type. @@ -103,6 +104,12 @@ private _id = switch (_type) do { }; [QGVAR(turretEvent), _function] call CBA_fnc_addEventHandler // return id }; + case "turretopticsmode": { + if (_applyRetroactively) then { + [GVAR(oldUnit), getTurretOpticsMode GVAR(oldUnit), -1] call _function; + }; + [QGVAR(turretOpticsModeEvent), _function] call CBA_fnc_addEventHandler; + }; case "visionmode": { if (_applyRetroactively) then { [GVAR(oldUnit), currentVisionMode GVAR(oldUnit), -1] call _function; @@ -158,6 +165,7 @@ if (_id != -1) then { GVAR(oldLoadoutNoAmmo) = []; GVAR(oldVehicle) = objNull; GVAR(oldTurret) = []; + GVAR(oldTurretOpticsMode) = -1; GVAR(oldVisionMode) = -1; GVAR(oldCameraView) = ""; GVAR(oldFeatureCamera) = ""; diff --git a/addons/events/fnc_playerEvent.sqf b/addons/events/fnc_playerEvent.sqf index 1cd83b81b..eed2bd324 100644 --- a/addons/events/fnc_playerEvent.sqf +++ b/addons/events/fnc_playerEvent.sqf @@ -31,7 +31,7 @@ private _state = [ _unit, group _unit, leader _unit, currentWeapon _unit, currentMuzzle _unit, currentWeaponMode _unit, getUnitLoadout _unit, _vehicle, _turret, _vehicle currentWeaponTurret _turret, - currentVisionMode focusOn, cameraView + currentVisionMode focusOn, cameraView, getTurretOpticsMode _unit ]; if (_state isNotEqualTo GVAR(oldState)) then { @@ -41,7 +41,7 @@ if (_state isNotEqualTo GVAR(oldState)) then { "", "_newGroup", "_newLeader", "_newWeapon", "_newMuzzle", "_newWeaponMode", "_newLoadout", "", "", "_newTurretWeapon", - "_newVisionMode", "_newCameraView" + "_newVisionMode", "_newCameraView", "_newTurretOpticsMode" ]; // These events should fire if the context of the state has changed. @@ -124,4 +124,9 @@ if (_state isNotEqualTo GVAR(oldState)) then { [QGVAR(cameraViewEvent), [_unit, _newCameraView, GVAR(oldCameraView)]] call CBA_fnc_localEvent; GVAR(oldCameraView) = _newCameraView; // This assignment may be returned. }; + + if (_newTurretOpticsMode isNotEqualTo GVAR(oldTurretOpticsMode)) then { + [QGVAR(turretOpticsModeEvent), [_unit, _newTurretOpticsMode, GVAR(oldTurretOpticsMode)]] call CBA_fnc_localEvent; + GVAR(oldTurretOpticsMode) = _newTurretOpticsMode; + }; };