diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 1a2187783b..3f974b18df 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"}; + requiredAddons[] = {"ace_ballistics", "ace_weather"}; author[] = {"Ruthberg"}; authorUrl = "https://github.com/ulteq"; VERSION_CONFIG; diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 1adf622494..87d131934b 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -24,12 +24,12 @@ class CfgVehicles { // += needs a non inherited entry in that class, otherwise it simply overwrites //#include - - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleCheckPBOs: Module_F { + class Logic; + class Module_F: Logic { + class ModuleDescription; + }; + class ACE_Module: Module_F {}; + class ACE_ModuleCheckPBOs: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Common_CheckPBO_DisplayName"; @@ -77,7 +77,7 @@ class CfgVehicles { }; }; - class ACE_ModuleLSDVehicles: Module_F { + class ACE_ModuleLSDVehicles: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Common_LSDVehicles_DisplayName"; diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index b91d9b9a39..643d4cb9d3 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -269,6 +269,9 @@ GVAR(commonPostInited) = true; diag_log text format["[ACE] Settings received from server"]; + // Event so that ACE_Modules have their settings loaded: + ["InitSettingsFromModules", []] call FUNC(localEvent); + // Load user settings from profile if (hasInterface) then { call FUNC(loadSettingsFromProfile); diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 3f1e5a6308..dd13d10ec0 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_main"}; + requiredAddons[] = {"ace_main","ace_modules"}; author[] = {"KoffeinFlummi"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 52f70ea3af..2bb8e18f96 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -1,8 +1,5 @@ -class Logic; -class Module_F: Logic { - class ModuleDescription {}; -}; -class ACE_ModuleExplosive: Module_F { +class ACE_Module; +class ACE_ModuleExplosive: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Explosive_Module_DisplayName"; @@ -24,7 +21,7 @@ class ACE_ModuleExplosive: Module_F { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Explosive_Module_Description"; }; }; \ No newline at end of file diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 16bb47014a..eaa765d814 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -94,8 +94,8 @@ class CfgVehicles { }; - class Module_F; - class ACE_ModuleHearing: Module_F { + class ACE_Module; + class ACE_ModuleHearing: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Hearing_Module_DisplayName"; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 804aba1100..0f07accdee 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleInteraction: Module_F { + class ACE_Module; + class ACE_ModuleInteraction: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_InteractionSystem_Module_DisplayName"; diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index a5194e015e..43db54628b 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -1,6 +1,7 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleMap: Module_F { + + class ACE_Module; + class ACE_ModuleMap: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Map_Module_DisplayName"; @@ -39,6 +40,7 @@ class CfgVehicles { }; }; + class Module_F; class ACE_ModuleBlueForceTracking: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index f86f5d166e..463ed95406 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"}; weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction","ace_modules", "ace_apl"}; + requiredAddons[] = {"ace_interaction", "ace_apl"}; author[] = {"Glowbal", "KoffeinFlummi"}; authorUrl = ""; VERSION_CONFIG; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 949860742d..bd3164ac72 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -36,12 +36,8 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ArgumentsBaseUnits {}; - class ModuleDescription {}; - }; - class GVAR(dagrModule): Module_F { + class ACE_Module; + class GVAR(dagrModule): ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Dagr_Module_DisplayName"; @@ -62,7 +58,7 @@ class CfgVehicles { }; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Dagr_Module_Description"; }; }; diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index e4a9d0f2a5..5708f3c670 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -43,11 +43,8 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class GVAR(module): Module_F { + class ACE_Module; + class GVAR(module): ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_mk6mortar_Module_DisplayName"; @@ -76,7 +73,7 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_mk6mortar_Module_Description"; }; }; diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index b6aecf5f90..2e115d020b 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -1,44 +1,46 @@ #include "script_component.hpp" -// TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. -// We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. -{ - [_x] call { - private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; - _logic = _this select 0; - _logicType = typeof _logic; - _logic hideobject true; +["InitSettingsFromModules", { + // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. + // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. + { + [_x] call { + private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; + _logic = _this select 0; + _logicType = typeof _logic; + _logic hideobject true; - if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; - _config = (configFile >> "CfgVehicles" >> _logicType); - if !(isClass _config) exitwith {}; + if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; + _config = (configFile >> "CfgVehicles" >> _logicType); + if !(isClass _config) exitwith {}; - // isGlobal = 1; - _isGlobal = getNumber (_config >> "isGlobal") > 0; - _isDisposable = getNumber (_config >> "isDisposable") > 0; - _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; - _function = getText (_config >> "function"); - if (isnil _function) then { - _function = compile _function; - } else { - _function = missionNamespace getvariable _function; - }; + // isGlobal = 1; + _isGlobal = getNumber (_config >> "isGlobal") > 0; + _isDisposable = getNumber (_config >> "isDisposable") > 0; + _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; + _function = getText (_config >> "function"); + if (isnil _function) then { + _function = compile _function; + } else { + _function = missionNamespace getvariable _function; + }; - if (_isGlobal) then { - [_logic, [], true] call _function; - } else { - if (isServer) then { + if (_isGlobal) then { [_logic, [], true] call _function; + } else { + if (isServer) then { + [_logic, [], true] call _function; + }; + }; + + if !(_isPersistent) then { + _logic setvariable [QGVAR(initalized), true]; + }; + + if (_isDisposable) then { + deleteVehicle _logic; }; }; - - if !(_isPersistent) then { - _logic setvariable [QGVAR(initalized), true]; - }; - - if (_isDisposable) then { - deleteVehicle _logic; - }; - }; -}foreach GVAR(moduleInitCollection); + }foreach GVAR(moduleInitCollection); +}] call FUNC(addEventhandler); diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index c5880e7bb1..ee96c5251f 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {}; author[] = {"Glowbal"}; authorUrl = ""; VERSION_CONFIG; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index fabd3b09cb..50439218aa 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -1,9 +1,6 @@ class CfgVehicles { - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleNameTags : Module_F { + class ACE_Module; + class ACE_ModuleNameTags: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_NameTags_Module_DisplayName"; @@ -65,7 +62,7 @@ class CfgVehicles { defaultValue = 0; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_NameTags_Module_Description"; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index e90f4ba08e..6fd60e6321 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -1,9 +1,6 @@ class CfgVehicles { - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleRespawn: Module_F { + class ACE_Module; + class ACE_ModuleRespawn: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Respawn_Module_DisplayName"; @@ -27,12 +24,12 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Respawn_Module_Description"; }; }; - class ACE_ModuleFriendlyFire: Module_F { + class ACE_ModuleFriendlyFire: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_FriendlyFire_Module_DisplayName"; @@ -42,12 +39,12 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_FriendlyFire_Module_Description"; }; }; - class ACE_ModuleRallypoint: Module_F { + class ACE_ModuleRallypoint: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Rallypoint_Module_DisplayName"; @@ -57,7 +54,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Rallypoint_Module_Description"; }; }; diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 0f76c78568..d2548448b1 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -1,6 +1,6 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleSwitchUnits: Module_F { + class ACE_Module; + class ACE_ModuleSwitchUnits: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_SwitchUnits_Module_DisplayName"; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 60cb67d4c4..6e07148262 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -64,9 +64,10 @@ class CfgVehicles { class Logic; class Module_F: Logic { - class ModuleDescription {}; + class ModuleDescription; }; - class ACE_VehicleLock_ModuleSetup: Module_F { + class ACE_Module: Module_F {}; + class ACE_VehicleLock_ModuleSetup: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_VehicleLock_Module_DisplayName"; @@ -99,12 +100,12 @@ class CfgVehicles { defaultValue = "10"; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_VehicleLock_Module_Description"; }; }; - class ACE_VehicleLock_ModuleSyncedAssign: Module_F { + class ACE_VehicleLock_ModuleSyncedAssign: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName"; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 18059fe9e8..50e2f8ace0 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common", "ace_modules"}; + requiredAddons[] = {"ace_common"}; author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; VERSION_CONFIG; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 4bdc1cd5e1..5ea4212dbb 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common","ace_modules"}; + requiredAddons[] = {"ace_common"}; author[] = {"SilentSpike"}; authorUrl = "https://github.com/SilentSpike"; VERSION_CONFIG;