From 13ebd10b2513ac1a78de60bd72291874165ffc3c Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Mon, 17 Aug 2020 18:07:07 +0200 Subject: [PATCH 01/15] Replace monitorRadios PFH with loadout EH --- addons/sys_radio/XEH_PREP.hpp | 2 +- addons/sys_radio/fnc_monitorRadios.sqf | 6 +++++- ...nc_monitorRadiosPFH.sqf => fnc_monitorRadiosHandler.sqf} | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) rename addons/sys_radio/{fnc_monitorRadiosPFH.sqf => fnc_monitorRadiosHandler.sqf} (98%) diff --git a/addons/sys_radio/XEH_PREP.hpp b/addons/sys_radio/XEH_PREP.hpp index 916a96b89..1bd4d0f78 100644 --- a/addons/sys_radio/XEH_PREP.hpp +++ b/addons/sys_radio/XEH_PREP.hpp @@ -1,5 +1,5 @@ PREP(monitorRadios); -PREP(monitorRadiosPFH); +PREP(monitorRadiosHandler); PREP(setActiveRadio); PREP(openRadio); diff --git a/addons/sys_radio/fnc_monitorRadios.sqf b/addons/sys_radio/fnc_monitorRadios.sqf index 11df1a107..f1d8e7b6e 100644 --- a/addons/sys_radio/fnc_monitorRadios.sqf +++ b/addons/sys_radio/fnc_monitorRadios.sqf @@ -22,5 +22,9 @@ GVAR(requestingNewId) = false; LOG("Monitor Inventory Starting"); [{ACRE_DATA_SYNCED && {(!isNil "ACRE_SERVER_INIT")} && {time >= 1}},{ - [DFUNC(monitorRadiosPFH), 0.25, []] call CBA_fnc_addPerFrameHandler; + [ + "loadout", + DFUNC(monitorRadiosHandler), + true + ] call CBA_fnc_addPlayerEventHandler; },[]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/sys_radio/fnc_monitorRadiosPFH.sqf b/addons/sys_radio/fnc_monitorRadiosHandler.sqf similarity index 98% rename from addons/sys_radio/fnc_monitorRadiosPFH.sqf rename to addons/sys_radio/fnc_monitorRadiosHandler.sqf index 7580e3b6e..7078f8846 100644 --- a/addons/sys_radio/fnc_monitorRadiosPFH.sqf +++ b/addons/sys_radio/fnc_monitorRadiosHandler.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [] call acre_sys_radio_fnc_monitorRadiosPFH + * [] call acre_sys_radio_fnc_monitorRadiosHandler * * Public: No */ From c823fe09619334baef6509b3001736b6eada4831 Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Mon, 17 Aug 2020 20:27:48 +0200 Subject: [PATCH 02/15] Add default radio replacement setting --- addons/sys_core/fnc_arsenalClose.sqf | 2 ++ addons/sys_radio/XEH_preInit.sqf | 2 ++ addons/sys_radio/fnc_monitorRadiosHandler.sqf | 8 ++++++-- addons/sys_radio/initSettings.sqf | 19 +++++++++++++++++++ addons/sys_radio/stringtable.xml | 6 ++++++ 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 addons/sys_radio/initSettings.sqf diff --git a/addons/sys_core/fnc_arsenalClose.sqf b/addons/sys_core/fnc_arsenalClose.sqf index 2fdc81cef..2f0dafdef 100644 --- a/addons/sys_core/fnc_arsenalClose.sqf +++ b/addons/sys_core/fnc_arsenalClose.sqf @@ -31,3 +31,5 @@ private _weapons = [acre_player] call EFUNC(sys_core,getGear); ACRE_ARSENAL_RADIOS = []; GVAR(arsenalRadios) = []; GVAR(arsenalOpen) = false; + +[] call EFUNC(sys_radio,monitorRadiosHandler); diff --git a/addons/sys_radio/XEH_preInit.sqf b/addons/sys_radio/XEH_preInit.sqf index 617c5045e..cd5465f6f 100644 --- a/addons/sys_radio/XEH_preInit.sqf +++ b/addons/sys_radio/XEH_preInit.sqf @@ -6,6 +6,8 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; +#include "initSettings.sqf" + // Define caches to save repetitive config lookups. GVAR(radioUniqueCache) = HASH_CREATE; GVAR(radioBaseClassCache) = HASH_CREATE; diff --git a/addons/sys_radio/fnc_monitorRadiosHandler.sqf b/addons/sys_radio/fnc_monitorRadiosHandler.sqf index 7078f8846..5d4e68fa5 100644 --- a/addons/sys_radio/fnc_monitorRadiosHandler.sqf +++ b/addons/sys_radio/fnc_monitorRadiosHandler.sqf @@ -50,8 +50,12 @@ private _currentUniqueItems = []; GVAR(requestingNewId) = true; if (_radio == "ItemRadio") then { - _radio = GVAR(defaultItemRadioType); - [acre_player, "ItemRadio", _radio] call EFUNC(sys_core,replaceGear); + if !(GVAR(defaultItemRadioType) isEqualTo "") then { + _radio = GVAR(defaultItemRadioType); + [acre_player, "ItemRadio", _radio] call EFUNC(sys_core,replaceGear); + } else { + [acre_player, "ItemRadio"] call CBA_fnc_removeItem; + }; }; TRACE_1("Getting ID for", _radio); diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf new file mode 100644 index 000000000..92b8d5d83 --- /dev/null +++ b/addons/sys_radio/initSettings.sqf @@ -0,0 +1,19 @@ +private _allRadios = [] call EFUNC(api,getAllRadios); +private _radioClasses = [""] + _allRadios # 0; +private _radioNames = ["None"] + _allRadios # 1; + +[ + QGVAR(defaultItemRadioType), + "LIST", + [ + LLSTRING(DefaultItemRadioType_DisplayName), + LLSTRING(DefaultItemRadioType_Description) + ], + "ACRE2", + [ + _radioClasses, + _radioNames, + (_radioClasses find "ACRE_PRC343") max 0 + ], + true +] call CBA_fnc_addSetting; diff --git a/addons/sys_radio/stringtable.xml b/addons/sys_radio/stringtable.xml index 21232f935..5cec20c73 100644 --- a/addons/sys_radio/stringtable.xml +++ b/addons/sys_radio/stringtable.xml @@ -144,5 +144,11 @@ 设定无线电为1% Rádio configurado a %1 + + Vanilla radio item replacement + + + ItemRadio inventory items will be replaced with this type of radio. + From 465b8789b3fa889c04b5bfade3104297879efba3 Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Tue, 18 Aug 2020 10:07:36 +0200 Subject: [PATCH 03/15] Tweaks --- addons/sys_radio/fnc_monitorRadios.sqf | 2 +- addons/sys_radio/fnc_monitorRadiosHandler.sqf | 33 +++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/addons/sys_radio/fnc_monitorRadios.sqf b/addons/sys_radio/fnc_monitorRadios.sqf index f1d8e7b6e..722acc614 100644 --- a/addons/sys_radio/fnc_monitorRadios.sqf +++ b/addons/sys_radio/fnc_monitorRadios.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" /* * Author: ACRE2Team - * Sets up the per frame event handler for monitoring the local player inventory for changes. + * Sets up the CBA loadout event handler for monitoring the local player inventory for changes. * * Arguments: * None diff --git a/addons/sys_radio/fnc_monitorRadiosHandler.sqf b/addons/sys_radio/fnc_monitorRadiosHandler.sqf index 5d4e68fa5..a6fc65c93 100644 --- a/addons/sys_radio/fnc_monitorRadiosHandler.sqf +++ b/addons/sys_radio/fnc_monitorRadiosHandler.sqf @@ -46,23 +46,28 @@ private _currentUniqueItems = []; if (GVAR(requestingNewId)) exitWith { }; private _radio = _x; private _hasUnique = _radio call EFUNC(sys_radio,isBaseClassRadio); - if (_hasUnique || {_radio == "ItemRadio"}) then { - GVAR(requestingNewId) = true; - if (_radio == "ItemRadio") then { - if !(GVAR(defaultItemRadioType) isEqualTo "") then { - _radio = GVAR(defaultItemRadioType); - [acre_player, "ItemRadio", _radio] call EFUNC(sys_core,replaceGear); - } else { - [acre_player, "ItemRadio"] call CBA_fnc_removeItem; - }; + if (_radio == "ItemRadio") then { + if (GVAR(defaultItemRadioType) != "") then { + // Replace vanilla radio item + _radio = GVAR(defaultItemRadioType); + GVAR(requestingNewId) = true; + [acre_player, "ItemRadio", _radio] call EFUNC(sys_core,replaceGear); + ["acre_getRadioId", [acre_player, _radio, QGVAR(returnRadioId)]] call CALLSTACK(CBA_fnc_serverEvent); + TRACE_1("Getting ID for", _radio); + } else { + // Vanilla radio item replacement disabled, simply remove it. + [acre_player, "ItemRadio"] call EFUNC(sys_core,removeGear); + }; + } else { + if (_hasUnique) then { + GVAR(requestingNewId) = true; + ["acre_getRadioId", [acre_player, _radio, QGVAR(returnRadioId)]] call CALLSTACK(CBA_fnc_serverEvent); + TRACE_1("Getting ID for", _radio); }; - TRACE_1("Getting ID for", _radio); - - ["acre_getRadioId", [acre_player, _radio, QGVAR(returnRadioId)]] call CALLSTACK(CBA_fnc_serverEvent); }; - private _isUnique = _radio call EFUNC(sys_radio,isUniqueRadio); - if (_isUnique) then { + + if (_radio call EFUNC(sys_radio,isUniqueRadio)) then { if !([_radio] call EFUNC(sys_data,isRadioInitialized)) then { WARNING_1("%1 was found in personal inventory but is uninitialized! Trying to collect new ID.",_radio); private _baseRadio = BASECLASS(_radio); From 3b9e2fa5e5cf324a31d5efc201e36c9975a42b42 Mon Sep 17 00:00:00 2001 From: Freddo Date: Tue, 18 Aug 2020 19:24:43 +0200 Subject: [PATCH 04/15] localization Co-authored-by: PabstMirror --- addons/sys_radio/initSettings.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index 92b8d5d83..a90e9dd7e 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -1,6 +1,6 @@ private _allRadios = [] call EFUNC(api,getAllRadios); private _radioClasses = [""] + _allRadios # 0; -private _radioNames = ["None"] + _allRadios # 1; +private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; [ QGVAR(defaultItemRadioType), From 7f1b494a73d54045345951854c569ea1f0e47fd0 Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Tue, 18 Aug 2020 19:47:57 +0200 Subject: [PATCH 05/15] Obsolete fnc_setItemRadioReplacement --- addons/api/CfgFunctions.hpp | 1 - addons/api/XEH_PREP.hpp | 1 + addons/api/fnc_setItemRadioReplacement.sqf | 22 ---------------------- 3 files changed, 1 insertion(+), 23 deletions(-) delete mode 100644 addons/api/fnc_setItemRadioReplacement.sqf diff --git a/addons/api/CfgFunctions.hpp b/addons/api/CfgFunctions.hpp index debdbdc7a..616e71425 100644 --- a/addons/api/CfgFunctions.hpp +++ b/addons/api/CfgFunctions.hpp @@ -29,7 +29,6 @@ class CfgFunctions { PATHTO_FNC(filterUnitLoadout); - PATHTO_FNC(setItemRadioReplacement); PATHTO_FNC(getDisplayName); PATHTO_FNC(setGlobalVolume); diff --git a/addons/api/XEH_PREP.hpp b/addons/api/XEH_PREP.hpp index 32dad80c0..ad16dc83d 100644 --- a/addons/api/XEH_PREP.hpp +++ b/addons/api/XEH_PREP.hpp @@ -2,3 +2,4 @@ PREP(mapChannelFieldName); PREP(setDefaultChannels); PREP(getDefaultChannels); +OBSOLETE_SYS(FUNC(setItemRadioReplacement),{params ['_radioType']; EGVAR(sys_radio,defaultItemRadioType) = _radioType;}]); diff --git a/addons/api/fnc_setItemRadioReplacement.sqf b/addons/api/fnc_setItemRadioReplacement.sqf deleted file mode 100644 index 79509477d..000000000 --- a/addons/api/fnc_setItemRadioReplacement.sqf +++ /dev/null @@ -1,22 +0,0 @@ -#include "script_component.hpp" -/* - * Author: ACRE2Team - * Set the radio type to replace "ItemRadio" in unit inventories. By default this is the "ACRE_PRC343" - * - * Arguments: - * 0: Radio base type - * - * Return Value: - * Success - * - * Example: - * ["ACRE_PRC148"] call acre_api_fnc_setItemRadioReplacement; - * - * Public: Yes - */ - -params ["_radioType"]; - -EGVAR(sys_radio,defaultItemRadioType) = _radioType; - -true From d5d0e49b0be834a7f36aff0acb061235b13809a0 Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Tue, 18 Aug 2020 19:55:21 +0200 Subject: [PATCH 06/15] Ensure fnc_getAllRadios is present --- addons/api/XEH_PREP.hpp | 2 +- addons/sys_radio/XEH_preInit.sqf | 4 ---- addons/sys_radio/initSettings.sqf | 36 ++++++++++++++++--------------- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/addons/api/XEH_PREP.hpp b/addons/api/XEH_PREP.hpp index ad16dc83d..e3a9f8115 100644 --- a/addons/api/XEH_PREP.hpp +++ b/addons/api/XEH_PREP.hpp @@ -2,4 +2,4 @@ PREP(mapChannelFieldName); PREP(setDefaultChannels); PREP(getDefaultChannels); -OBSOLETE_SYS(FUNC(setItemRadioReplacement),{params ['_radioType']; EGVAR(sys_radio,defaultItemRadioType) = _radioType;}]); +OBSOLETE_SYS(FUNC(setItemRadioReplacement),{params ['_radioType']; EGVAR(sys_radio,defaultItemRadioType) = _radioType;}); diff --git a/addons/sys_radio/XEH_preInit.sqf b/addons/sys_radio/XEH_preInit.sqf index cd5465f6f..78d2b6b1f 100644 --- a/addons/sys_radio/XEH_preInit.sqf +++ b/addons/sys_radio/XEH_preInit.sqf @@ -35,10 +35,6 @@ if (hasInterface) then { // this isn't used anymore i do not think? // acre_player setVariable [QGVAR(currentRadioList), []]; - - if (isNil QGVAR(defaultItemRadioType)) then { - GVAR(defaultItemRadioType) = "ACRE_PRC343"; - }; }; ADDON = true; diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index a90e9dd7e..6456fe62a 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -1,19 +1,21 @@ -private _allRadios = [] call EFUNC(api,getAllRadios); -private _radioClasses = [""] + _allRadios # 0; -private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; +[{!isNil EFUNC(api,getAllRadios)},{ + private _allRadios = [] call EFUNC(api,getAllRadios); + private _radioClasses = [""] + _allRadios # 0; + private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; -[ - QGVAR(defaultItemRadioType), - "LIST", [ - LLSTRING(DefaultItemRadioType_DisplayName), - LLSTRING(DefaultItemRadioType_Description) - ], - "ACRE2", - [ - _radioClasses, - _radioNames, - (_radioClasses find "ACRE_PRC343") max 0 - ], - true -] call CBA_fnc_addSetting; + QGVAR(defaultItemRadioType), + "LIST", + [ + LLSTRING(DefaultItemRadioType_DisplayName), + LLSTRING(DefaultItemRadioType_Description) + ], + "ACRE2", + [ + _radioClasses, + _radioNames, + (_radioClasses find "ACRE_PRC343") max 0 + ], + true + ] call CBA_fnc_addSetting; +}] call CBA_fnc_waitUntilAndExecute; From 5f77992b72a2d0c3773957ee3364570036445901 Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Sat, 22 Aug 2020 10:19:13 +0200 Subject: [PATCH 07/15] Removed comment --- addons/sys_radio/XEH_preInit.sqf | 3 --- 1 file changed, 3 deletions(-) diff --git a/addons/sys_radio/XEH_preInit.sqf b/addons/sys_radio/XEH_preInit.sqf index 78d2b6b1f..495dee7be 100644 --- a/addons/sys_radio/XEH_preInit.sqf +++ b/addons/sys_radio/XEH_preInit.sqf @@ -32,9 +32,6 @@ if (hasInterface) then { DVAR(ACRE_ACTIVE_RADIO) = ""; DVAR(ACRE_SPECTATOR_RADIOS) = []; - - // this isn't used anymore i do not think? - // acre_player setVariable [QGVAR(currentRadioList), []]; }; ADDON = true; From 8c7ff00ba410402bac648f715e172fb816ba6c0d Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Sat, 22 Aug 2020 10:41:54 +0200 Subject: [PATCH 08/15] Move fnc_getAllRadios from api to sys_core Changed API function to wrapper for sys_core --- addons/api/fnc_getAllRadios.sqf | 23 +--------------- addons/sys_core/XEH_PREP.hpp | 1 + addons/sys_core/fnc_getAllRadios.sqf | 40 ++++++++++++++++++++++++++++ addons/sys_radio/initSettings.sqf | 37 +++++++++++++------------ 4 files changed, 60 insertions(+), 41 deletions(-) create mode 100644 addons/sys_core/fnc_getAllRadios.sqf diff --git a/addons/api/fnc_getAllRadios.sqf b/addons/api/fnc_getAllRadios.sqf index ed73d541b..01fbc2671 100644 --- a/addons/api/fnc_getAllRadios.sqf +++ b/addons/api/fnc_getAllRadios.sqf @@ -16,25 +16,4 @@ * Public: Yes */ -// Return cached if already ran -if (!isNil QGVAR(allRadios)) exitWith { - GVAR(allRadios) -}; - -// Compile and cache for later calls -private _classes = []; -private _names = []; -{ - private _isRadio = getNumber (_x >> "type") == ACRE_COMPONENT_RADIO; - private _hasComponents = !(getArray (_x >> "defaultComponents") isEqualTo []); // Only non-base classes have that - private _name = getText (_x >> "name"); - - // Has name and isAcre, assume valid radio class - if (_isRadio && {_hasComponents} && {_name != ""}) then { - _classes pushBack (configName _x); - _names pushBack _name; - }; -} forEach ("true" configClasses (configFile >> "CfgAcreComponents")); - -GVAR(allRadios) = [_classes, _names]; -GVAR(allRadios) +[] call EFUNC(sys_core,getAllRadios) diff --git a/addons/sys_core/XEH_PREP.hpp b/addons/sys_core/XEH_PREP.hpp index aff0df21b..b657376d3 100644 --- a/addons/sys_core/XEH_PREP.hpp +++ b/addons/sys_core/XEH_PREP.hpp @@ -7,6 +7,7 @@ PREP(canUnderstand); PREP(cycleLanguage); PREP(findOcclusion); PREP(getAlive); +PREP(getAllRadios); PREP(getClientIdLoop); PREP(getCompartment); PREP(getGear); diff --git a/addons/sys_core/fnc_getAllRadios.sqf b/addons/sys_core/fnc_getAllRadios.sqf new file mode 100644 index 000000000..c746ebd23 --- /dev/null +++ b/addons/sys_core/fnc_getAllRadios.sqf @@ -0,0 +1,40 @@ +#include "script_component.hpp" +/* + * Author: ACRE2Team + * Returns all radios defined in CfgAcreRadios. Caches result for future calls. + * + * Arguments: + * None + * + * Return Value: + * 1: Radio Class Names + * 2: Radio Display Names + * + * Example: + * [] call acre_sys_core_fnc_getAllRadios; + * + * Public: No + */ + +// Return cached if already ran +if (!isNil QGVAR(allRadios)) exitWith { + GVAR(allRadios) +}; + +// Compile and cache for later calls +private _classes = []; +private _names = []; +{ + private _isRadio = getNumber (_x >> "type") == ACRE_COMPONENT_RADIO; + private _hasComponents = !(getArray (_x >> "defaultComponents") isEqualTo []); // Only non-base classes have that + private _name = getText (_x >> "name"); + + // Has name and isAcre, assume valid radio class + if (_isRadio && {_hasComponents} && {_name != ""}) then { + _classes pushBack (configName _x); + _names pushBack _name; + }; +} forEach ("true" configClasses (configFile >> "CfgAcreComponents")); + +GVAR(allRadios) = [_classes, _names]; +GVAR(allRadios) diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index 6456fe62a..190510fee 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -1,21 +1,20 @@ -[{!isNil EFUNC(api,getAllRadios)},{ - private _allRadios = [] call EFUNC(api,getAllRadios); - private _radioClasses = [""] + _allRadios # 0; - private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; +private _allRadios = [] call EFUNC(sys_core,getAllRadios); +private _radioClasses = [""] + _allRadios # 0; +private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; + +[ + QGVAR(defaultItemRadioType), + "LIST", + [ + LLSTRING(DefaultItemRadioType_DisplayName), + LLSTRING(DefaultItemRadioType_Description) + ], + "ACRE2", [ - QGVAR(defaultItemRadioType), - "LIST", - [ - LLSTRING(DefaultItemRadioType_DisplayName), - LLSTRING(DefaultItemRadioType_Description) - ], - "ACRE2", - [ - _radioClasses, - _radioNames, - (_radioClasses find "ACRE_PRC343") max 0 - ], - true - ] call CBA_fnc_addSetting; -}] call CBA_fnc_waitUntilAndExecute; + _radioClasses, + _radioNames, + (_radioClasses find "ACRE_PRC343") max 0 + ], + true +] call CBA_fnc_addSetting; From 04b6dc61bf7b97f48e2d9adad7c7a9185a956e60 Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Sat, 22 Aug 2020 10:43:14 +0200 Subject: [PATCH 09/15] Add another trigger for monitorRadiosHandler --- addons/sys_gui/fnc_inventoryListMouseUp.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/sys_gui/fnc_inventoryListMouseUp.sqf b/addons/sys_gui/fnc_inventoryListMouseUp.sqf index 2cc4fa8c8..60367b479 100644 --- a/addons/sys_gui/fnc_inventoryListMouseUp.sqf +++ b/addons/sys_gui/fnc_inventoryListMouseUp.sqf @@ -23,4 +23,5 @@ params ["", "_button"]; if (_button == 1) then { LOG("inventoryListMouseUp"); ACRE_HOLD_OFF_ITEMRADIO_CHECK = false; + [] call EFUNC(sys_radio,monitorRadiosHandler); }; From d330cd0b15670ca6db659c63514ab06de0462c62 Mon Sep 17 00:00:00 2001 From: Freddo Date: Mon, 14 Dec 2020 10:56:14 +0100 Subject: [PATCH 10/15] Update addons/sys_radio/initSettings.sqf Co-authored-by: jonpas --- addons/sys_radio/initSettings.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index 190510fee..2b58e5d39 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -1,4 +1,3 @@ - private _allRadios = [] call EFUNC(sys_core,getAllRadios); private _radioClasses = [""] + _allRadios # 0; private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; From bc158ee5a7637294b3caea3449c8abb20d377415 Mon Sep 17 00:00:00 2001 From: Freddo Date: Mon, 14 Dec 2020 11:01:36 +0100 Subject: [PATCH 11/15] Change to use CBA_settings_fnc_set --- addons/api/XEH_PREP.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/api/XEH_PREP.hpp b/addons/api/XEH_PREP.hpp index b8bbfb654..1ba44ee67 100644 --- a/addons/api/XEH_PREP.hpp +++ b/addons/api/XEH_PREP.hpp @@ -2,4 +2,4 @@ PREP(mapChannelFieldName); // Obsolete -OBSOLETE_SYS(FUNC(setItemRadioReplacement),{params ['_radioType']; EGVAR(sys_radio,defaultItemRadioType) = _radioType;}); +OBSOLETE_SYS(FUNC(setItemRadioReplacement),{params ['_radioType']; [QEGVAR(sys_radio,defaultItemRadioType), _radioType, 1, "mission"] call CBA_settings_fnc_set;}); From 996318bc7be651014a00c85faf07b0b790c095cf Mon Sep 17 00:00:00 2001 From: Freddo Date: Mon, 14 Dec 2020 11:14:30 +0100 Subject: [PATCH 12/15] Tweak basicMissionSetup Haven't tried it in game yet --- addons/api/fnc_basicMissionSetup.sqf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/api/fnc_basicMissionSetup.sqf b/addons/api/fnc_basicMissionSetup.sqf index 81a68d784..96420667b 100644 --- a/addons/api/fnc_basicMissionSetup.sqf +++ b/addons/api/fnc_basicMissionSetup.sqf @@ -82,14 +82,15 @@ private _addRadios = { _player setVariable [QGVAR(basicMissionSetup), true, true]; private _cleanRadioList = []; - if !("ACRE_PRC343" in _defaultRadios) then { + private _defaultRadio = QEGVAR(sys_radio,defaultItemRadioType) call CBA_settings_fnc_get; + if !(_defaultRadio in _defaultRadios) then { [_player, "ItemRadio"] call EFUNC(sys_core,removeGear); - [_player, "ACRE_PRC343"] call EFUNC(sys_core,removeGear); + [_player, _defaultRadio] call EFUNC(sys_core,removeGear); _cleanRadioList = _defaultRadios; } else { private _countDefaultRadios = 0; { - if (_x == "ACRE_PRC343") then { + if (_x == _defaultRadio) then { _countDefaultRadios = _countDefaultRadios + 1; if (_countDefaultRadios > 1) then { _cleanRadioList pushBack _x; From 4b0ef05f0385338a205fd51bba6dc73232b12a1e Mon Sep 17 00:00:00 2001 From: Freddo Date: Mon, 14 Dec 2020 11:32:09 +0100 Subject: [PATCH 13/15] Add to ace_arsenal_displayClosed eventhandler --- addons/ace_interact/XEH_postInitClient.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/ace_interact/XEH_postInitClient.sqf b/addons/ace_interact/XEH_postInitClient.sqf index add2403ed..14fcb4025 100644 --- a/addons/ace_interact/XEH_postInitClient.sqf +++ b/addons/ace_interact/XEH_postInitClient.sqf @@ -8,6 +8,7 @@ if (!hasInterface) exitWith {}; ["ace_arsenal_displayClosed", { EGVAR(sys_core,arsenalOpen) = false; + [] call DFUNC(monitorRadiosHandler); }] call CBA_fnc_addEventHandler; ["ace_arsenal_rightPanelFilled", { From dd759a2b2542c24944555c1c7d644d2ac3ac654f Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 14 Jun 2023 21:15:22 +0200 Subject: [PATCH 14/15] Deprecate instead of obsolete setItemRadioReplacement API, Cleanup --- addons/api/CfgFunctions.hpp | 1 + addons/api/XEH_PREP.hpp | 3 --- addons/api/fnc_basicMissionSetup.sqf | 2 +- addons/api/fnc_setItemRadioReplacement.sqf | 25 ++++++++++++++++++++++ addons/sys_radio/fnc_monitorRadios.sqf | 6 +----- addons/sys_radio/initSettings.sqf | 15 ++++--------- addons/sys_radio/stringtable.xml | 4 ++-- 7 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 addons/api/fnc_setItemRadioReplacement.sqf diff --git a/addons/api/CfgFunctions.hpp b/addons/api/CfgFunctions.hpp index 33ae6bbcb..a202bd0ca 100644 --- a/addons/api/CfgFunctions.hpp +++ b/addons/api/CfgFunctions.hpp @@ -30,6 +30,7 @@ class CfgFunctions { PATHTO_FNC(filterUnitLoadout); + PATHTO_FNC(setItemRadioReplacement); PATHTO_FNC(getDisplayName); PATHTO_FNC(setGlobalVolume); diff --git a/addons/api/XEH_PREP.hpp b/addons/api/XEH_PREP.hpp index 1ba44ee67..764f59809 100644 --- a/addons/api/XEH_PREP.hpp +++ b/addons/api/XEH_PREP.hpp @@ -1,5 +1,2 @@ // Helpers PREP(mapChannelFieldName); - -// Obsolete -OBSOLETE_SYS(FUNC(setItemRadioReplacement),{params ['_radioType']; [QEGVAR(sys_radio,defaultItemRadioType), _radioType, 1, "mission"] call CBA_settings_fnc_set;}); diff --git a/addons/api/fnc_basicMissionSetup.sqf b/addons/api/fnc_basicMissionSetup.sqf index a3bb8a7ce..ad888bbfb 100644 --- a/addons/api/fnc_basicMissionSetup.sqf +++ b/addons/api/fnc_basicMissionSetup.sqf @@ -82,7 +82,7 @@ private _addRadios = { _player setVariable [QGVAR(basicMissionSetup), true, true]; private _cleanRadioList = []; - private _defaultRadio = QEGVAR(sys_radio,defaultItemRadioType) call CBA_settings_fnc_get; + private _defaultRadio = EGVAR(sys_radio,defaultItemRadioType); if !(_defaultRadio in _defaultRadios) then { [_player, "ItemRadio"] call EFUNC(sys_core,removeGear); [_player, _defaultRadio] call EFUNC(sys_core,removeGear); diff --git a/addons/api/fnc_setItemRadioReplacement.sqf b/addons/api/fnc_setItemRadioReplacement.sqf new file mode 100644 index 000000000..70dcc4d1a --- /dev/null +++ b/addons/api/fnc_setItemRadioReplacement.sqf @@ -0,0 +1,25 @@ +#include "script_component.hpp" +/* + * Author: ACRE2Team + * DEPRECATED + * Set the radio type to replace "ItemRadio" in unit inventories. By default this is the "ACRE_PRC343" + * + * Arguments: + * 0: Radio base type + * + * Return Value: + * Success + * + * Example: + * ["ACRE_PRC148"] call acre_api_fnc_setItemRadioReplacement; + * + * Public: No + */ + +ACRE_DEPRECATED(QFUNC(setItemRadioReplacement),"2.12","CBA Setting") + +params ["_radioType"]; + +[QEGVAR(sys_radio,defaultItemRadioType), _radioType, 1, "mission"] call CBA_settings_fnc_set; + +true diff --git a/addons/sys_radio/fnc_monitorRadios.sqf b/addons/sys_radio/fnc_monitorRadios.sqf index 722acc614..f7fc0c9c6 100644 --- a/addons/sys_radio/fnc_monitorRadios.sqf +++ b/addons/sys_radio/fnc_monitorRadios.sqf @@ -22,9 +22,5 @@ GVAR(requestingNewId) = false; LOG("Monitor Inventory Starting"); [{ACRE_DATA_SYNCED && {(!isNil "ACRE_SERVER_INIT")} && {time >= 1}},{ - [ - "loadout", - DFUNC(monitorRadiosHandler), - true - ] call CBA_fnc_addPlayerEventHandler; + ["loadout", DFUNC(monitorRadiosHandler), true] call CBA_fnc_addPlayerEventHandler; },[]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index 2b58e5d39..ba305f13d 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -1,19 +1,12 @@ private _allRadios = [] call EFUNC(sys_core,getAllRadios); -private _radioClasses = [""] + _allRadios # 0; -private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios # 1; +private _radioClasses = [""] + _allRadios select 0; +private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios select 1; [ QGVAR(defaultItemRadioType), "LIST", - [ - LLSTRING(DefaultItemRadioType_DisplayName), - LLSTRING(DefaultItemRadioType_Description) - ], + [LLSTRING(DefaultItemRadioType_DisplayName), LLSTRING(DefaultItemRadioType_Description)], "ACRE2", - [ - _radioClasses, - _radioNames, - (_radioClasses find "ACRE_PRC343") max 0 - ], + [_radioClasses, _radioNames, (_radioClasses find "ACRE_PRC343") max 0], true ] call CBA_fnc_addSetting; diff --git a/addons/sys_radio/stringtable.xml b/addons/sys_radio/stringtable.xml index a0b23a491..bf2b22469 100644 --- a/addons/sys_radio/stringtable.xml +++ b/addons/sys_radio/stringtable.xml @@ -160,10 +160,10 @@ Telsiz Ayarı Şuna Atandı: %1 - Vanilla radio item replacement + Radio Item Replacement - ItemRadio inventory items will be replaced with this type of radio. + Default radio inventory items will be replaced with this type of radio. From d18dd076a907f471c49413d5f8d19bf70355576e Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 Sep 2023 04:22:07 +0200 Subject: [PATCH 15/15] Fix merge --- addons/api/fnc_setItemRadioReplacement.sqf | 6 +----- addons/sys_radio/XEH_preInit.sqf | 2 -- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/addons/api/fnc_setItemRadioReplacement.sqf b/addons/api/fnc_setItemRadioReplacement.sqf index c45bb0b88..ddd0c05cd 100644 --- a/addons/api/fnc_setItemRadioReplacement.sqf +++ b/addons/api/fnc_setItemRadioReplacement.sqf @@ -1,11 +1,7 @@ #include "script_component.hpp" /* * Author: ACRE2Team -<<<<<<< HEAD - * DEPRECATED -======= * DEPRECATED! Replaced by CBA Setting. ->>>>>>> master * Set the radio type to replace "ItemRadio" in unit inventories. By default this is the "ACRE_PRC343" * * Arguments: @@ -17,7 +13,7 @@ * Example: * ["ACRE_PRC148"] call acre_api_fnc_setItemRadioReplacement; * - * Public: No + * Public: Yes */ ACRE_DEPRECATED(QFUNC(setItemRadioReplacement),"2.12","CBA Setting") diff --git a/addons/sys_radio/XEH_preInit.sqf b/addons/sys_radio/XEH_preInit.sqf index 74a156680..4527c8de3 100644 --- a/addons/sys_radio/XEH_preInit.sqf +++ b/addons/sys_radio/XEH_preInit.sqf @@ -6,8 +6,6 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; -#include "initSettings.sqf" - // Define caches to save repetitive config lookups. GVAR(radioUniqueCache) = HASH_CREATE; GVAR(radioBaseClassCache) = HASH_CREATE;