From 13ebd10b2513ac1a78de60bd72291874165ffc3c Mon Sep 17 00:00:00 2001 From: Freddo3000 Date: Mon, 17 Aug 2020 18:07:07 +0200 Subject: [PATCH 01/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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/23] 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 4bbb8eb90b3182e334d5521e2e4a92bd181fbbed Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Sep 2023 04:04:39 +0200 Subject: [PATCH 15/23] Revert inventory monitoring PFH switch to CBA loadout EH --- addons/ace_interact/XEH_postInitClient.sqf | 1 - addons/api/fnc_setItemRadioReplacement.sqf | 4 ++-- addons/sys_core/fnc_arsenalClose.sqf | 2 -- addons/sys_gui/fnc_inventoryListMouseUp.sqf | 1 - addons/sys_radio/XEH_PREP.hpp | 2 +- addons/sys_radio/fnc_monitorRadios.sqf | 4 ++-- ...fnc_monitorRadiosHandler.sqf => fnc_monitorRadiosPFH.sqf} | 5 +++-- 7 files changed, 8 insertions(+), 11 deletions(-) rename addons/sys_radio/{fnc_monitorRadiosHandler.sqf => fnc_monitorRadiosPFH.sqf} (96%) diff --git a/addons/ace_interact/XEH_postInitClient.sqf b/addons/ace_interact/XEH_postInitClient.sqf index 090ace094..12872bf97 100644 --- a/addons/ace_interact/XEH_postInitClient.sqf +++ b/addons/ace_interact/XEH_postInitClient.sqf @@ -10,7 +10,6 @@ if (!hasInterface) exitWith {}; ["ace_arsenal_displayClosed", { EGVAR(sys_core,arsenalOpen) = false; - [] call DFUNC(monitorRadiosHandler); }] call CBA_fnc_addEventHandler; ["ace_arsenal_rightPanelFilled", { diff --git a/addons/api/fnc_setItemRadioReplacement.sqf b/addons/api/fnc_setItemRadioReplacement.sqf index 70dcc4d1a..ac182dd59 100644 --- a/addons/api/fnc_setItemRadioReplacement.sqf +++ b/addons/api/fnc_setItemRadioReplacement.sqf @@ -1,7 +1,7 @@ #include "script_component.hpp" /* * Author: ACRE2Team - * DEPRECATED + * DEPRECATED! Replaced by CBA Setting. * Set the radio type to replace "ItemRadio" in unit inventories. By default this is the "ACRE_PRC343" * * Arguments: @@ -13,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_core/fnc_arsenalClose.sqf b/addons/sys_core/fnc_arsenalClose.sqf index e0f492de9..4fb243e1a 100644 --- a/addons/sys_core/fnc_arsenalClose.sqf +++ b/addons/sys_core/fnc_arsenalClose.sqf @@ -33,5 +33,3 @@ 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_gui/fnc_inventoryListMouseUp.sqf b/addons/sys_gui/fnc_inventoryListMouseUp.sqf index 60367b479..2cc4fa8c8 100644 --- a/addons/sys_gui/fnc_inventoryListMouseUp.sqf +++ b/addons/sys_gui/fnc_inventoryListMouseUp.sqf @@ -23,5 +23,4 @@ params ["", "_button"]; if (_button == 1) then { LOG("inventoryListMouseUp"); ACRE_HOLD_OFF_ITEMRADIO_CHECK = false; - [] call EFUNC(sys_radio,monitorRadiosHandler); }; diff --git a/addons/sys_radio/XEH_PREP.hpp b/addons/sys_radio/XEH_PREP.hpp index d981abb6b..5ee762dd5 100644 --- a/addons/sys_radio/XEH_PREP.hpp +++ b/addons/sys_radio/XEH_PREP.hpp @@ -1,5 +1,5 @@ PREP(monitorRadios); -PREP(monitorRadiosHandler); +PREP(monitorRadiosPFH); PREP(setActiveRadio); PREP(openRadio); diff --git a/addons/sys_radio/fnc_monitorRadios.sqf b/addons/sys_radio/fnc_monitorRadios.sqf index f7fc0c9c6..11df1a107 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 CBA loadout event handler for monitoring the local player inventory for changes. + * Sets up the per frame event handler for monitoring the local player inventory for changes. * * Arguments: * None @@ -22,5 +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; + [DFUNC(monitorRadiosPFH), 0.25, []] call CBA_fnc_addPerFrameHandler; },[]] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/sys_radio/fnc_monitorRadiosHandler.sqf b/addons/sys_radio/fnc_monitorRadiosPFH.sqf similarity index 96% rename from addons/sys_radio/fnc_monitorRadiosHandler.sqf rename to addons/sys_radio/fnc_monitorRadiosPFH.sqf index 084382cb1..64b0096fe 100644 --- a/addons/sys_radio/fnc_monitorRadiosHandler.sqf +++ b/addons/sys_radio/fnc_monitorRadiosPFH.sqf @@ -10,7 +10,7 @@ * None * * Example: - * [] call acre_sys_radio_fnc_monitorRadiosHandler + * [] call acre_sys_radio_fnc_monitorRadiosPFH * * Public: No */ @@ -67,7 +67,8 @@ private _currentUniqueItems = []; }; }; - if (_radio call EFUNC(sys_radio,isUniqueRadio)) then { + private _isUnique = _radio call EFUNC(sys_radio,isUniqueRadio); + if (_isUnique) 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 f02d31f0082c3454e5ae535bb103f262bb81ab3b Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Sep 2023 04:18:56 +0200 Subject: [PATCH 16/23] Remove weird defines --- addons/api/CfgAcreAPI.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/api/CfgAcreAPI.hpp b/addons/api/CfgAcreAPI.hpp index 4bcca5aa7..25f534d45 100644 --- a/addons/api/CfgAcreAPI.hpp +++ b/addons/api/CfgAcreAPI.hpp @@ -1,5 +1,4 @@ -#define true 1 -#define false 0 +// WIP concept class CfgAcreAPI { class RadioAPIFunctions { class setChannel { From 918911171f649c46aca252b2baa03eaba7f1651a Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Sep 2023 04:21:56 +0200 Subject: [PATCH 17/23] Fix missing defines --- addons/api/CfgAcreAPI.hpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/api/CfgAcreAPI.hpp b/addons/api/CfgAcreAPI.hpp index 25f534d45..de452f96f 100644 --- a/addons/api/CfgAcreAPI.hpp +++ b/addons/api/CfgAcreAPI.hpp @@ -2,31 +2,31 @@ class CfgAcreAPI { class RadioAPIFunctions { class setChannel { - required = true; + required = 1; }; class setVolume { - required = true; + required = 1; }; class setTransmitPower { - required = false; + required = 0; defaultFunction = QFUNC(api_setTransmitPower); }; class toggleOnOff { - required = false; + required = 0; defaultFunction = QFUNC(api_toggleOnOffState); }; class getOnOffState { - required = false; + required = 0; defaultFunction = QFUNC(api_getOnOffState); }; class getVolume { - required = true; + required = 1; }; class getChannel { - required = true; + required = 1; }; class getTransmitPower { - required = true; + required = 1; }; }; }; From 6b9a7b60ee5aed7861eba9edffb7d7ef1d9f99c2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 14 Sep 2023 04:22:48 +0200 Subject: [PATCH 18/23] Fix missing defines more --- addons/api/CfgModules.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/api/CfgModules.hpp b/addons/api/CfgModules.hpp index 33b192072..0010f53f2 100644 --- a/addons/api/CfgModules.hpp +++ b/addons/api/CfgModules.hpp @@ -98,28 +98,28 @@ class CfgVehicles { displayName = "Signal Loss"; description = "Set to false to disable signal and terrain loss values"; typeName = "BOOL"; - defaultValue = true; + defaultValue = 1; class values { }; }; class FullDuplex { displayName = "Full-Duplex Transmissions"; description = "Set to true to enable full-duplex, or multiple people transmitting"; typeName = "BOOL"; - defaultValue = false; + defaultValue = 0; class values { }; }; class Interference { displayName = "Signal Interference"; description = "Set to false to disable the interference from multiple transmitters"; typeName = "BOOL"; - defaultValue = true; + defaultValue = 1; class values { }; }; class IgnoreAntennaDirection { displayName = "Ignore Antenna Direction"; description = "Set to true to disable loss due to antenna directional radiation patterns."; typeName = "BOOL"; - defaultValue = false; + defaultValue = 0; class values { }; }; }; From 3fbc1264edb41173a91bd5a385e0461c154b1b7f Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 Sep 2023 01:01:06 +0200 Subject: [PATCH 19/23] Fix missing ACRE_COMPONENT_RADIO define --- addons/sys_radio/script_component.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/sys_radio/script_component.hpp b/addons/sys_radio/script_component.hpp index ddabc88af..5de5fa128 100644 --- a/addons/sys_radio/script_component.hpp +++ b/addons/sys_radio/script_component.hpp @@ -21,4 +21,5 @@ #define GET_UI_VAR(var1) uiNameSpace getVariable QUOTE(var1) #define SET_UI_VAR(var1,var2) uiNamespace setVariable [QUOTE(var1), var2] +#include "\idi\acre\addons\sys_components\script_acre_component_defines.hpp" #include "\idi\acre\addons\sys_intercom\script_acre_rackIntercom_defines.hpp" From 586a94d7e5f179d3e80854c8cfb1f0693d2410e6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 Sep 2023 01:28:05 +0200 Subject: [PATCH 20/23] Fix setting being LIST but expecting string --- addons/api/config.cpp | 3 ++- addons/api/fnc_basicMissionSetup.sqf | 2 +- addons/api/fnc_setItemRadioReplacement.sqf | 2 +- addons/sys_core/fnc_getAllRadios.sqf | 4 ++-- addons/sys_radio/XEH_preInit.sqf | 6 ++++-- addons/sys_radio/fnc_getDefaultRadio.sqf | 22 ++++++++++++++++++++++ addons/sys_radio/fnc_monitorRadiosPFH.sqf | 5 +++-- addons/sys_radio/initSettings.sqf | 14 +++++++------- addons/sys_radio/stringtable.xml | 4 ++-- 9 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 addons/sys_radio/fnc_getDefaultRadio.sqf diff --git a/addons/api/config.cpp b/addons/api/config.cpp index de7fa8b3c..1e1e0e499 100644 --- a/addons/api/config.cpp +++ b/addons/api/config.cpp @@ -14,7 +14,8 @@ class CfgPatches { "acre_sys_prc77", "acre_sys_prc343", "acre_sys_core", - "acre_sys_godmode" + "acre_sys_godmode", + "acre_sys_radio" }; author = ECSTRING(main,Author); authors[] = {"Jaynus", "Nou"}; diff --git a/addons/api/fnc_basicMissionSetup.sqf b/addons/api/fnc_basicMissionSetup.sqf index ad888bbfb..245a58ef0 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 = EGVAR(sys_radio,defaultItemRadioType); + private _defaultRadio = (call EFUNC(sys_radio,getDefaultRadio)) select 0; 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 index ac182dd59..e80940bb2 100644 --- a/addons/api/fnc_setItemRadioReplacement.sqf +++ b/addons/api/fnc_setItemRadioReplacement.sqf @@ -20,6 +20,6 @@ ACRE_DEPRECATED(QFUNC(setItemRadioReplacement),"2.12","CBA Setting") params ["_radioType"]; -[QEGVAR(sys_radio,defaultItemRadioType), _radioType, 1, "mission"] call CBA_settings_fnc_set; +[QEGVAR(sys_radio,defaultItemRadio), EGVAR(sys_radio,defaultItemRadioTypes) find (toUpperANSI _radioType), 1, "mission"] call CBA_settings_fnc_set; true diff --git a/addons/sys_core/fnc_getAllRadios.sqf b/addons/sys_core/fnc_getAllRadios.sqf index aca277c21..fbe41ca61 100644 --- a/addons/sys_core/fnc_getAllRadios.sqf +++ b/addons/sys_core/fnc_getAllRadios.sqf @@ -7,8 +7,8 @@ * None * * Return Value: - * 1: Radio Class Names - * 2: Radio Display Names + * 0: Radio Class Names + * 1: Radio Display Names * * Example: * [] call acre_sys_core_fnc_getAllRadios; diff --git a/addons/sys_radio/XEH_preInit.sqf b/addons/sys_radio/XEH_preInit.sqf index 495dee7be..4527c8de3 100644 --- a/addons/sys_radio/XEH_preInit.sqf +++ b/addons/sys_radio/XEH_preInit.sqf @@ -6,13 +6,13 @@ 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; GVAR(radioIsBaseClassCache) = HASH_CREATE; +GVAR(defaultRadios) = [] call EFUNC(sys_core,getAllRadios); + if (hasInterface) then { //DGVAR(workingRadioList) = []; DGVAR(currentRadioList) = []; @@ -34,4 +34,6 @@ if (hasInterface) then { DVAR(ACRE_SPECTATOR_RADIOS) = []; }; +#include "initSettings.sqf" + ADDON = true; diff --git a/addons/sys_radio/fnc_getDefaultRadio.sqf b/addons/sys_radio/fnc_getDefaultRadio.sqf new file mode 100644 index 000000000..edda374ff --- /dev/null +++ b/addons/sys_radio/fnc_getDefaultRadio.sqf @@ -0,0 +1,22 @@ +#include "script_component.hpp" +/* + * Author: ACRE2Team + * Returs the default ItemRadio replacement class and display name. + * + * Arguments: + * None + * + * Return Value: + * 0: Radio Class Name + * 1: Radio Display Name + * + * Example: + * [] call acre_sys_radio_fnc_getDefaultRadio + * + * Public: No + */ + +[ + (GVAR(defaultRadios) select 0) select GVAR(defaultRadio), + (GVAR(defaultRadios) select 1) select GVAR(defaultRadio) +] diff --git a/addons/sys_radio/fnc_monitorRadiosPFH.sqf b/addons/sys_radio/fnc_monitorRadiosPFH.sqf index 64b0096fe..e5dc896d2 100644 --- a/addons/sys_radio/fnc_monitorRadiosPFH.sqf +++ b/addons/sys_radio/fnc_monitorRadiosPFH.sqf @@ -48,9 +48,10 @@ private _currentUniqueItems = []; private _hasUnique = _radio call EFUNC(sys_radio,isBaseClassRadio); if (_radio == "ItemRadio") then { - if (GVAR(defaultItemRadioType) != "") then { + private _defaultRadio = (call FUNC(getDefaultRadio)) select 0; + if (_defaultRadio != "") then { // Replace vanilla radio item - _radio = GVAR(defaultItemRadioType); + _radio = _defaultRadio; GVAR(requestingNewId) = true; [acre_player, "ItemRadio", _radio] call EFUNC(sys_core,replaceGear); ["acre_getRadioId", [acre_player, _radio, QGVAR(returnRadioId)]] call CALLSTACK(CBA_fnc_serverEvent); diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index ba305f13d..839fd4fab 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -1,12 +1,12 @@ -private _allRadios = [] call EFUNC(sys_core,getAllRadios); -private _radioClasses = [""] + _allRadios select 0; -private _radioNames = [localize "str_a3_cfgglasses_none0"] + _allRadios select 1; - [ - QGVAR(defaultItemRadioType), + QGVAR(defaultRadio), "LIST", - [LLSTRING(DefaultItemRadioType_DisplayName), LLSTRING(DefaultItemRadioType_Description)], + [LLSTRING(DefaultRadio_DisplayName), LLSTRING(DefaultRadio_Description)], "ACRE2", - [_radioClasses, _radioNames, (_radioClasses find "ACRE_PRC343") max 0], + [ + [""] + (GVAR(defaultRadios) select 0), + [localize "str_a3_cfgglasses_none0"] + (GVAR(defaultRadios) select 1), + ((GVAR(defaultRadios) select 0) 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 b90f837da..bb70ce4af 100644 --- a/addons/sys_radio/stringtable.xml +++ b/addons/sys_radio/stringtable.xml @@ -159,10 +159,10 @@ Rádio configurado a %1 Telsiz Ayarı Şuna Atandı: %1 - + Radio Item Replacement - + Default radio inventory items will be replaced with this type of radio. From df953885b582c92007a7a7d9cbf65848d4406f75 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 Sep 2023 01:30:44 +0200 Subject: [PATCH 21/23] Adapt deprecated function as well --- addons/api/fnc_setItemRadioReplacement.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/api/fnc_setItemRadioReplacement.sqf b/addons/api/fnc_setItemRadioReplacement.sqf index e80940bb2..a058a2b84 100644 --- a/addons/api/fnc_setItemRadioReplacement.sqf +++ b/addons/api/fnc_setItemRadioReplacement.sqf @@ -20,6 +20,6 @@ ACRE_DEPRECATED(QFUNC(setItemRadioReplacement),"2.12","CBA Setting") params ["_radioType"]; -[QEGVAR(sys_radio,defaultItemRadio), EGVAR(sys_radio,defaultItemRadioTypes) find (toUpperANSI _radioType), 1, "mission"] call CBA_settings_fnc_set; +[QEGVAR(sys_radio,defaultRadio), (EGVAR(sys_radio,defaultRadios) select 0) find (toUpperANSI _radioType), 1, "mission"] call CBA_settings_fnc_set; true From 104ed5df1bc0f30228ef675723e86b23fcf64fcd Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 Sep 2023 01:33:39 +0200 Subject: [PATCH 22/23] Move include to correct component --- addons/sys_core/script_component.hpp | 2 ++ addons/sys_radio/script_component.hpp | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/sys_core/script_component.hpp b/addons/sys_core/script_component.hpp index 24d3f6eca..10e5b6de5 100644 --- a/addons/sys_core/script_component.hpp +++ b/addons/sys_core/script_component.hpp @@ -17,6 +17,8 @@ #include "\idi\acre\addons\main\script_macros.hpp" +#include "\idi\acre\addons\sys_components\script_acre_component_defines.hpp" + #define ACRE_REVEAL_AMOUNT 1.6 #define MAX_DIRECT_RANGE 300 diff --git a/addons/sys_radio/script_component.hpp b/addons/sys_radio/script_component.hpp index 5de5fa128..ddabc88af 100644 --- a/addons/sys_radio/script_component.hpp +++ b/addons/sys_radio/script_component.hpp @@ -21,5 +21,4 @@ #define GET_UI_VAR(var1) uiNameSpace getVariable QUOTE(var1) #define SET_UI_VAR(var1,var2) uiNamespace setVariable [QUOTE(var1), var2] -#include "\idi\acre\addons\sys_components\script_acre_component_defines.hpp" #include "\idi\acre\addons\sys_intercom\script_acre_rackIntercom_defines.hpp" From 4bf96069f01c795fe71f40e31f6126df6722e68c Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 27 Sep 2023 04:11:59 +0200 Subject: [PATCH 23/23] Fix all issues --- addons/api/fnc_basicMissionSetup.sqf | 2 +- addons/api/fnc_setItemRadioReplacement.sqf | 2 +- addons/sys_radio/fnc_getDefaultRadio.sqf | 22 ---------------------- addons/sys_radio/fnc_monitorRadios.sqf | 8 ++++++-- addons/sys_radio/fnc_monitorRadiosPFH.sqf | 5 +++-- addons/sys_radio/initSettings.sqf | 2 +- 6 files changed, 12 insertions(+), 29 deletions(-) delete mode 100644 addons/sys_radio/fnc_getDefaultRadio.sqf diff --git a/addons/api/fnc_basicMissionSetup.sqf b/addons/api/fnc_basicMissionSetup.sqf index 245a58ef0..ba4d3ac7e 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 = (call EFUNC(sys_radio,getDefaultRadio)) select 0; + private _defaultRadio = EGVAR(sys_radio,defaultRadio); 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 index a058a2b84..ddd0c05cd 100644 --- a/addons/api/fnc_setItemRadioReplacement.sqf +++ b/addons/api/fnc_setItemRadioReplacement.sqf @@ -20,6 +20,6 @@ ACRE_DEPRECATED(QFUNC(setItemRadioReplacement),"2.12","CBA Setting") params ["_radioType"]; -[QEGVAR(sys_radio,defaultRadio), (EGVAR(sys_radio,defaultRadios) select 0) find (toUpperANSI _radioType), 1, "mission"] call CBA_settings_fnc_set; +[QEGVAR(sys_radio,defaultRadio), _radioType, 1, "mission"] call CBA_settings_fnc_set; true diff --git a/addons/sys_radio/fnc_getDefaultRadio.sqf b/addons/sys_radio/fnc_getDefaultRadio.sqf deleted file mode 100644 index edda374ff..000000000 --- a/addons/sys_radio/fnc_getDefaultRadio.sqf +++ /dev/null @@ -1,22 +0,0 @@ -#include "script_component.hpp" -/* - * Author: ACRE2Team - * Returs the default ItemRadio replacement class and display name. - * - * Arguments: - * None - * - * Return Value: - * 0: Radio Class Name - * 1: Radio Display Name - * - * Example: - * [] call acre_sys_radio_fnc_getDefaultRadio - * - * Public: No - */ - -[ - (GVAR(defaultRadios) select 0) select GVAR(defaultRadio), - (GVAR(defaultRadios) select 1) select GVAR(defaultRadio) -] diff --git a/addons/sys_radio/fnc_monitorRadios.sqf b/addons/sys_radio/fnc_monitorRadios.sqf index 11df1a107..da1baac6c 100644 --- a/addons/sys_radio/fnc_monitorRadios.sqf +++ b/addons/sys_radio/fnc_monitorRadios.sqf @@ -21,6 +21,10 @@ GVAR(requestingNewId) = false; LOG("Monitor Inventory Starting"); -[{ACRE_DATA_SYNCED && {(!isNil "ACRE_SERVER_INIT")} && {time >= 1}},{ +[{ + ACRE_DATA_SYNCED && + {!isNil "ACRE_SERVER_INIT"} && + {time >= 1} +}, { [DFUNC(monitorRadiosPFH), 0.25, []] call CBA_fnc_addPerFrameHandler; -},[]] call CBA_fnc_waitUntilAndExecute; +}, []] call CBA_fnc_waitUntilAndExecute; diff --git a/addons/sys_radio/fnc_monitorRadiosPFH.sqf b/addons/sys_radio/fnc_monitorRadiosPFH.sqf index e5dc896d2..274535558 100644 --- a/addons/sys_radio/fnc_monitorRadiosPFH.sqf +++ b/addons/sys_radio/fnc_monitorRadiosPFH.sqf @@ -48,17 +48,18 @@ private _currentUniqueItems = []; private _hasUnique = _radio call EFUNC(sys_radio,isBaseClassRadio); if (_radio == "ItemRadio") then { - private _defaultRadio = (call FUNC(getDefaultRadio)) select 0; + private _defaultRadio = GVAR(defaultRadio); if (_defaultRadio != "") then { // Replace vanilla radio item _radio = _defaultRadio; 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); + TRACE_1("Getting ID for ItemRadio replacement",_radio); } else { // Vanilla radio item replacement disabled, simply remove it. [acre_player, "ItemRadio"] call EFUNC(sys_core,removeGear); + TRACE_1("Removing ItemRadio",_radio); }; } else { if (_hasUnique) then { diff --git a/addons/sys_radio/initSettings.sqf b/addons/sys_radio/initSettings.sqf index 839fd4fab..09d990735 100644 --- a/addons/sys_radio/initSettings.sqf +++ b/addons/sys_radio/initSettings.sqf @@ -6,7 +6,7 @@ [ [""] + (GVAR(defaultRadios) select 0), [localize "str_a3_cfgglasses_none0"] + (GVAR(defaultRadios) select 1), - ((GVAR(defaultRadios) select 0) find "ACRE_PRC343") max 0 + ((GVAR(defaultRadios) select 0) find "ACRE_PRC343") + 1 ], true ] call CBA_fnc_addSetting;