From dc49f2c71e9943a1ed42e0861b3e6c216f95b361 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 10 Apr 2015 18:31:43 +0200 Subject: [PATCH] rewrite assigned item fix --- addons/common/scripts/assignedItemFix.sqf | 73 ++++++++++++++++++----- addons/parachute/CfgWeapons.hpp | 4 +- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/addons/common/scripts/assignedItemFix.sqf b/addons/common/scripts/assignedItemFix.sqf index bf8dc193ec..5964d66b06 100644 --- a/addons/common/scripts/assignedItemFix.sqf +++ b/addons/common/scripts/assignedItemFix.sqf @@ -1,19 +1,62 @@ // by commy2 #include "script_component.hpp" -if (isNil "ACE_itemFix") then { - ACE_isMapEnabled = call {_config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}}; - ACE_isCompassEnabled = call {_config = missionConfigFile >> "showCompass"; !isNumber _config || {getNumber _config == 1}}; - ACE_isWatchEnabled = call {_config = missionConfigFile >> "showWatch"; !isNumber _config || {getNumber _config == 1}}; - ACE_isRadioEnabled = call {_config = missionConfigFile >> "showRadio"; !isNumber _config || {getNumber _config == 1}}; - ACE_isGPSEnabled = call {_config = missionConfigFile >> "showGPS"; !isNumber _config || {getNumber _config == 1}}; +ACE_isMapEnabled = call {_config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}}; +ACE_isCompassEnabled = call {_config = missionConfigFile >> "showCompass"; !isNumber _config || {getNumber _config == 1}}; +ACE_isWatchEnabled = call {_config = missionConfigFile >> "showWatch"; !isNumber _config || {getNumber _config == 1}}; +ACE_isRadioEnabled = call {_config = missionConfigFile >> "showRadio"; !isNumber _config || {getNumber _config == 1}}; +ACE_isGPSEnabled = call {_config = missionConfigFile >> "showGPS"; !isNumber _config || {getNumber _config == 1}}; - ACE_itemFix = ["ACE_itemFix", "onEachFrame", { - _items = assignedItems ACE_player; - showMap (ACE_isMapEnabled && {"ItemMap" in _items}); - showCompass (ACE_isCompassEnabled && {"ItemCompass" in _items}); - showWatch (ACE_isWatchEnabled && {"ItemWatch" in _items}); - //showRadio (ACE_isRadioEnabled && {"ItemRadio" in _items}); - showGPS (ACE_isGPSEnabled && {"ItemGPS" in _items || {cameraOn == getConnectedUAV ACE_player}}); //If player is activly controling a UAV, showGPS controls showing the map (m key) - }] call BIS_fnc_addStackedEventHandler; -}; +GVAR(AssignedItems) = []; +GVAR(AssignedItemsInfo) = []; + +["playerInventoryChanged", { + private ["_unit", "_assignedItems", "_shownItems"]; + + _unit = _this select 0; + _assignedItems = _this select 1 select 17; + + _shownItems = [ + ACE_isMapEnabled, + ACE_isCompassEnabled, + ACE_isWatchEnabled, + ACE_isRadioEnabled, + ACE_isGPSEnabled + ]; + + { + if !(_x in GVAR(AssignedItems)) then { + GVAR(AssignedItems) pushBack _x; + GVAR(AssignedItemsInfo) pushBack toLower getText (configFile >> "CfgWeapons" >> _x >> "ACE_hideItemType") + }; + + private "_hideItemType"; + _hideItemType = GVAR(AssignedItemsInfo) select (GVAR(AssignedItems) find _x); + + switch (_hideItemType) do { + case ("map"): { + _shownItems set [0, false]; + }; + case ("compass"): { + _shownItems set [1, false]; + }; + case ("watch"): { + _shownItems set [2, false]; + }; + case ("radio"): { + _shownItems set [3, false]; + }; + case ("GPS"): { + _shownItems set [4, false]; + }; + }; + } forEach _assignedItems; + + //systemChat str _shownItems; + + showMap (_shownItems select 0); + showCompass (_shownItems select 1); + showWatch (_shownItems select 2); + showRadio (_shownItems select 3); + showGPS (_shownItems select 4 || {cameraOn == getConnectedUAV _unit}); //If player is activly controling a UAV, showGPS controls showing the map (m key) +}] call FUNC(addEventHandler); diff --git a/addons/parachute/CfgWeapons.hpp b/addons/parachute/CfgWeapons.hpp index 6388bbd5a1..067d065bf0 100644 --- a/addons/parachute/CfgWeapons.hpp +++ b/addons/parachute/CfgWeapons.hpp @@ -1,6 +1,8 @@ class CfgWeapons { class ItemWatch; - class ACE_Altimeter:ItemWatch { + class ACE_Altimeter: ItemWatch { + ACE_hideItemType = "Watch"; + author = "$STR_ACE_Common_ACETeam"; descriptionShort = "$STR_ACE_Parachute_AltimeterDescription"; displayName = "$STR_ACE_Parachute_AltimeterDisplayName";