From b0ac672c13f4a145c5df30baf4fc8aa14d3d14c7 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Fri, 3 Apr 2015 13:24:50 -0300 Subject: [PATCH] Only init each vehicle type once --- .../functions/fnc_initDesignatorActions.sqf | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf b/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf index 2216fe6e71..cd45c45d32 100644 --- a/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf +++ b/addons/laser_selfdesignate/functions/fnc_initDesignatorActions.sqf @@ -12,9 +12,18 @@ EXPLODE_1_PVT(_this,_vehicle); +// Add action to class if it is not already done +private ["_type", "_initializedClasses"]; +_type = typeOf _vehicle; +_initializedClasses = GETGVAR(initializedClasses,[]); + +// do nothing if the class is already initialized +if (_type in _initializedClasses) exitWith {}; +_initializedClasses pushBack _type; + { private ["_turretConfig","_onAction","_offAction"]; - _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath); + _turretConfig = [configFile >> "CfgVehicles" >> _type, _x] call EFUNC(common,getTurretConfigPath); if (getNumber (_turretConfig >> QGVAR(Enabled)) == 1) exitWith { // @todo: Add the state variables to the vehicle, instead of to the client @@ -41,7 +50,7 @@ EXPLODE_1_PVT(_this,_vehicle); GVAR(laserActive) && {[ACE_player] call FUNC(unitTurretHasDesignator)} }] call EFUNC(interact_menu,createAction); - [typeOf _vehicle, 1, ["ACE_SelfActions"], _onAction] call EFUNC(interact_menu,addActionToClass); - [typeOf _vehicle, 1, ["ACE_SelfActions"], _offAction] call EFUNC(interact_menu,addActionToClass); + [_type, 1, ["ACE_SelfActions"], _onAction] call EFUNC(interact_menu,addActionToClass); + [_type, 1, ["ACE_SelfActions"], _offAction] call EFUNC(interact_menu,addActionToClass); }; } forEach allTurrets _vehicle;