mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Cargo - Cache cargo vehicle classes (#6806)
* Cache cargo vehicle classes to init * fix * Apply suggestions from code review Co-Authored-By: dedmen <dedmen@users.noreply.github.com> * Fix initEH being added twice for static weapons
This commit is contained in:
parent
25d847ef12
commit
af1cf2c7f6
@ -105,47 +105,25 @@ GVAR(objectAction) = [
|
||||
LINKFUNC(addCargoVehiclesActions)
|
||||
] call EFUNC(interact_menu,createAction);
|
||||
|
||||
// find all remaining configured classes and init them, see XEH_preStart.sqf
|
||||
private _vehicleClassesAddAction = call (uiNamespace getVariable [QGVAR(initializedVehicleClasses), {[]}]);
|
||||
{
|
||||
[_x, 0, ["ACE_MainActions"], GVAR(vehicleAction)] call EFUNC(interact_menu,addActionToClass);
|
||||
} forEach _vehicleClassesAddAction;
|
||||
GVAR(initializedVehicleClasses) append _vehicleClassesAddAction;
|
||||
|
||||
private _initVehicleClasses = ["ThingX", "LandVehicle", "Air", "Ship_F"];
|
||||
private _initObjectClasses = ["ThingX", "StaticWeapon"];
|
||||
private _objectClassesAddAction = call (uiNamespace getVariable [QGVAR(initializedItemClasses), {[]}]);
|
||||
{
|
||||
[_x, 0, ["ACE_MainActions"], GVAR(objectAction)] call EFUNC(interact_menu,addActionToClass);
|
||||
} forEach _objectClassesAddAction;
|
||||
GVAR(initializedItemClasses) append _objectClassesAddAction;
|
||||
|
||||
private _vehicleClassesAddClassEH = call (uiNamespace getVariable [QGVAR(vehicleClasses_classEH), {[]}]);
|
||||
{
|
||||
[_x, "initPost", DFUNC(initVehicle), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
} forEach _initVehicleClasses;
|
||||
} forEach _vehicleClassesAddClassEH;
|
||||
|
||||
private _objectClassesAddClassEH = call (uiNamespace getVariable [QGVAR(objectClasses_classEH), {[]}]);
|
||||
{
|
||||
[_x, "initPost", DFUNC(initObject), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
} forEach _initObjectClasses;
|
||||
|
||||
// find all remaining configured classes and init them
|
||||
{
|
||||
private _class = configName _x;
|
||||
// init vehicle
|
||||
if (
|
||||
1 == getNumber (_x >> QGVAR(hasCargo))
|
||||
&& {{if (_class isKindOf _x) exitWith {false}; true} forEach _initVehicleClasses}
|
||||
) then {
|
||||
if (_class isKindOf "Static") then {
|
||||
if (2 == getNumber (_x >> "scope")) then {
|
||||
[_class, 0, ["ACE_MainActions"], GVAR(vehicleAction)] call EFUNC(interact_menu,addActionToClass);
|
||||
GVAR(initializedVehicleClasses) pushBack _class;
|
||||
};
|
||||
} else {
|
||||
[_class, "initPost", DFUNC(initVehicle), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
_initVehicleClasses pushBack _class;
|
||||
};
|
||||
};
|
||||
// init object
|
||||
if (
|
||||
1 == getNumber (_x >> QGVAR(canLoad))
|
||||
&& {{if (_class isKindOf _x) exitWith {false}; true} forEach _initObjectClasses}
|
||||
) then {
|
||||
if (_class isKindOf "Static") then {
|
||||
if (2 == getNumber (_x >> "scope")) then {
|
||||
[_class, 0, ["ACE_MainActions"], GVAR(objectAction)] call EFUNC(interact_menu,addActionToClass);
|
||||
GVAR(initializedItemClasses) pushBack _class;
|
||||
};
|
||||
} else {
|
||||
[_class, "initPost", DFUNC(initObject), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||
_initObjectClasses pushBack _class;
|
||||
};
|
||||
};
|
||||
} forEach ("true" configClasses (configFile >> "CfgVehicles"));
|
||||
} forEach _objectClassesAddClassEH;
|
||||
|
@ -1,3 +1,49 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
#include "XEH_PREP.hpp"
|
||||
|
||||
|
||||
//See XEH_postInit.sqf
|
||||
private _vehicleClasses_addClassEH = ["ThingX", "LandVehicle", "Air", "Ship_F"];
|
||||
private _objectClasses_addClassEH = ["ThingX", "StaticWeapon"];
|
||||
private _vehicleClasses_addAction = [];
|
||||
private _itemClasses_addAction = [];
|
||||
|
||||
// find all remaining configured classes and init them
|
||||
{
|
||||
private _class = configName _x;
|
||||
// init vehicle
|
||||
if (
|
||||
1 == getNumber (_x >> QGVAR(hasCargo))
|
||||
&& {-1 == _vehicleClasses_addClassEH findIf {_class isKindOf _x}}
|
||||
) then {
|
||||
if (_class isKindOf "Static") then {
|
||||
if (2 == getNumber (_x >> "scope")) then {
|
||||
_vehicleClasses_addAction pushBackUnique _class;
|
||||
};
|
||||
} else {
|
||||
_vehicleClasses_addClassEH pushBackUnique _class;
|
||||
};
|
||||
};
|
||||
// init object
|
||||
if (
|
||||
1 == getNumber (_x >> QGVAR(canLoad))
|
||||
&& {-1 == _objectClasses_addClassEH findIf {_class isKindOf _x}}
|
||||
) then {
|
||||
if (_class isKindOf "Static") then {
|
||||
if (2 == getNumber (_x >> "scope")) then {
|
||||
_itemClasses_addAction pushBackUnique _class;
|
||||
};
|
||||
} else {
|
||||
_objectClasses_addClassEH pushBackUnique _class;
|
||||
};
|
||||
};
|
||||
} forEach ("true" configClasses (configFile >> "CfgVehicles"));
|
||||
|
||||
|
||||
uiNamespace setVariable [QGVAR(vehicleClasses_classEH), compileFinal str _vehicleClasses_addClassEH];
|
||||
uiNamespace setVariable [QGVAR(objectClasses_classEH), compileFinal str _objectClasses_addClassEH];
|
||||
uiNamespace setVariable [QGVAR(initializedVehicleClasses), compileFinal str _vehicleClasses_addAction];
|
||||
uiNamespace setVariable [QGVAR(initializedItemClasses), compileFinal str _itemClasses_addAction];
|
||||
|
||||
TRACE_4("compiled",count _vehicleClasses_addClassEH,count _objectClasses_addClassEH,count _vehicleClasses_addAction,count _itemClasses_addAction);
|
||||
|
Loading…
Reference in New Issue
Block a user