mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Headless - Code optimisation (#9873)
* Headless optimisations * Swapped blacklist for unitIsUAV check * Moved UAV check * Update addons/headless/functions/fnc_transferGroups.sqf Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Update addons/headless/functions/fnc_transferGroups.sqf Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Update fnc_transferGroups.sqf --------- Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
This commit is contained in:
parent
e6cc5fca89
commit
0d401b2664
@ -1,12 +1,12 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
["ace_settingsInitialized", {
|
["CBA_settingsInitialized", {
|
||||||
// Register and remove HCs if not client that is not server and distribution or end mission enabled
|
// Register and remove HCs if not client that is not server and distribution or end mission enabled
|
||||||
if ((!hasInterface || isServer) && {XGVAR(enabled) || XGVAR(endMission) != 0}) then {
|
if ((!hasInterface || isServer) && {XGVAR(enabled) || XGVAR(endMission) != 0}) then {
|
||||||
if (isServer) then {
|
if (isServer) then {
|
||||||
// Request rebalance on any unit spawn (only if distribution enabled)
|
// Request rebalance on any unit spawn (only if distribution enabled)
|
||||||
if (XGVAR(enabled)) then {
|
if (XGVAR(enabled)) then {
|
||||||
["AllVehicles", "initPost", LINKFUNC(handleSpawn), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
["CAManBase", "initPost", LINKFUNC(handleSpawn), nil, nil, true] call CBA_fnc_addClassEventHandler;
|
||||||
};
|
};
|
||||||
// Add disconnect EH
|
// Add disconnect EH
|
||||||
addMissionEventHandler ["HandleDisconnect", {call FUNC(handleDisconnect)}];
|
addMissionEventHandler ["HandleDisconnect", {call FUNC(handleDisconnect)}];
|
||||||
|
@ -12,7 +12,6 @@ if (isServer) then {
|
|||||||
GVAR(headlessClients) = [];
|
GVAR(headlessClients) = [];
|
||||||
GVAR(inRebalance) = false;
|
GVAR(inRebalance) = false;
|
||||||
GVAR(endMissionCheckDelayed) = false;
|
GVAR(endMissionCheckDelayed) = false;
|
||||||
GVAR(blacklistType) = [BLACKLIST_UAV];
|
|
||||||
[QXGVAR(headlessClientJoined), LINKFUNC(handleConnectHC)] call CBA_fnc_addEventHandler;
|
[QXGVAR(headlessClientJoined), LINKFUNC(handleConnectHC)] call CBA_fnc_addEventHandler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,17 +19,14 @@ params ["_headlessClient"];
|
|||||||
|
|
||||||
// Exit if HC already registered
|
// Exit if HC already registered
|
||||||
// No need to check if distribution or end mission enabled, as if disabled this will never run
|
// No need to check if distribution or end mission enabled, as if disabled this will never run
|
||||||
if (_headlessClient in GVAR(headlessClients)) exitWith {};
|
if (GVAR(headlessClients) pushBackUnique _headlessClient == -1) exitWith {};
|
||||||
|
|
||||||
// Register for use
|
|
||||||
GVAR(headlessClients) pushBack _headlessClient;
|
|
||||||
|
|
||||||
if (XGVAR(log)) then {
|
if (XGVAR(log)) then {
|
||||||
INFO_1("Registered HC: %1",_headlessClient);
|
INFO_1("Registered HC: %1",_headlessClient);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Exit if AI distribution is disabled
|
// Exit if AI distribution is disabled
|
||||||
if (!XGVAR(enabled)) exitWith {true};
|
if (!XGVAR(enabled)) exitWith {};
|
||||||
|
|
||||||
// Rebalance
|
// Rebalance
|
||||||
[true] call FUNC(rebalance);
|
[true] call FUNC(rebalance);
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_object"];
|
params ["_object"];
|
||||||
TRACE_1("HandleDisconnect",_this);
|
TRACE_1("HandleDisconnect",_object);
|
||||||
|
|
||||||
// Exit if not HC
|
// Exit if not HC
|
||||||
if !(_object in GVAR(headlessClients)) exitWith {
|
if !(_object in GVAR(headlessClients)) exitWith {
|
||||||
@ -28,9 +28,7 @@ if !(_object in GVAR(headlessClients)) exitWith {
|
|||||||
if (CBA_missionTime < 150) then {
|
if (CBA_missionTime < 150) then {
|
||||||
TRACE_1("Mission start delay",CBA_missionTime);
|
TRACE_1("Mission start delay",CBA_missionTime);
|
||||||
GVAR(endMissionCheckDelayed) = true;
|
GVAR(endMissionCheckDelayed) = true;
|
||||||
[{
|
[LINKFUNC(endMissionNoPlayers), [], 150 - CBA_missionTime] call CBA_fnc_waitAndExecute;
|
||||||
call FUNC(endMissionNoPlayers);
|
|
||||||
}, [], 150 - CBA_missionTime] call CBA_fnc_waitAndExecute;
|
|
||||||
} else {
|
} else {
|
||||||
// End instantly or after delay
|
// End instantly or after delay
|
||||||
if (XGVAR(endMission) == 1) then {
|
if (XGVAR(endMission) == 1) then {
|
||||||
@ -39,7 +37,7 @@ if !(_object in GVAR(headlessClients)) exitWith {
|
|||||||
} else {
|
} else {
|
||||||
TRACE_2("Delayed 60s end",GVAR(endMission),CBA_missionTime);
|
TRACE_2("Delayed 60s end",GVAR(endMission),CBA_missionTime);
|
||||||
GVAR(endMissionCheckDelayed) = true;
|
GVAR(endMissionCheckDelayed) = true;
|
||||||
[FUNC(endMissionNoPlayers), [], 60] call CBA_fnc_waitAndExecute;
|
[LINKFUNC(endMissionNoPlayers), [], 60] call CBA_fnc_waitAndExecute;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -4,27 +4,22 @@
|
|||||||
* Handles AI spawn and requests a rebalance if applicable.
|
* Handles AI spawn and requests a rebalance if applicable.
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: Object <OBJECT>
|
* 0: Unit <OBJECT>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* [object] call ace_headless_fnc_handleSpawn
|
* [cursorObject] call ace_headless_fnc_handleSpawn
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
params ["_object"];
|
params ["_unit"];
|
||||||
TRACE_1("Spawn",_object);
|
TRACE_1("Spawn",_unit);
|
||||||
|
|
||||||
// Exit if HC transferring disabled or object not a unit (including unit inside vehicle) or is player
|
// Exit if unit is player or UAV crew
|
||||||
if (!(_object in allUnits) || {isPlayer _object}) exitWith {};
|
if (isPlayer _unit || {unitIsUAV _unit}) exitWith {};
|
||||||
|
|
||||||
// Exit and blacklist if of blacklist type
|
|
||||||
if ({_object isKindOf _x} count GVAR(blacklistType) > 0) exitWith {
|
|
||||||
_object setVariable [QXGVAR(blacklist), true];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Rebalance
|
// Rebalance
|
||||||
[false] call FUNC(rebalance);
|
[false] call FUNC(rebalance);
|
||||||
|
@ -23,7 +23,7 @@ TRACE_3("Rebalance",GVAR(inRebalance),GVAR(headlessClients),_force);
|
|||||||
if (GVAR(inRebalance) || {GVAR(headlessClients) isEqualTo []}) exitWith {};
|
if (GVAR(inRebalance) || {GVAR(headlessClients) isEqualTo []}) exitWith {};
|
||||||
|
|
||||||
// Transfer after rebalance delay
|
// Transfer after rebalance delay
|
||||||
[FUNC(transferGroups), [_force], XGVAR(Delay)] call CBA_fnc_waitAndExecute;
|
[LINKFUNC(transferGroups), _force, XGVAR(delay)] call CBA_fnc_waitAndExecute;
|
||||||
|
|
||||||
// Currently in rebalance flag
|
// Currently in rebalance flag
|
||||||
GVAR(inRebalance) = true;
|
GVAR(inRebalance) = true;
|
||||||
|
@ -79,8 +79,8 @@ private _numTransferredHC3 = 0;
|
|||||||
_transfer = false;
|
_transfer = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// No transfer if player in this group
|
// No transfer if player or UAV in this group
|
||||||
if (isPlayer _x) exitWith {
|
if (isPlayer _x || {unitIsUAV _x}) exitWith {
|
||||||
_transfer = false;
|
_transfer = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -89,14 +89,16 @@ private _numTransferredHC3 = 0;
|
|||||||
_transfer = false;
|
_transfer = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// No transfer if vehicle unit is in or crew in that vehicle is blacklisted
|
private _vehicle = objectParent _x;
|
||||||
if (vehicle _x != _x && {(vehicle _x) getVariable [QXGVAR(blacklist), false]}) exitWith {
|
|
||||||
|
// No transfer if the vehicle the unit is in or if the crew in that vehicle is blacklisted
|
||||||
|
if ((_vehicle getVariable [QXGVAR(blacklist), false]) || {unitIsUAV _vehicle}) exitWith {
|
||||||
_transfer = false;
|
_transfer = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Save gear if unit about to be transferred with current loadout (naked unit work-around)
|
// Save gear if unit about to be transferred with current loadout (naked unit work-around)
|
||||||
if (XGVAR(transferLoadout) == 1) then {
|
if (XGVAR(transferLoadout) == 1) then {
|
||||||
_x setVariable [QGVAR(loadout), [_x] call CBA_fnc_getLoadout, true];
|
_x setVariable [QGVAR(loadout), _x call CBA_fnc_getLoadout, true];
|
||||||
};
|
};
|
||||||
} forEach (units _x);
|
} forEach (units _x);
|
||||||
};
|
};
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
[ELSTRING(common,Enabled), LSTRING(EnabledDesc)],
|
[ELSTRING(common,Enabled), LSTRING(EnabledDesc)],
|
||||||
format ["ACE %1", LLSTRING(Module)],
|
format ["ACE %1", LLSTRING(Module)],
|
||||||
false,
|
false,
|
||||||
true,
|
1,
|
||||||
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||||
true
|
true
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
@ -15,9 +15,8 @@
|
|||||||
[LSTRING(Delay), LSTRING(DelayDesc)],
|
[LSTRING(Delay), LSTRING(DelayDesc)],
|
||||||
format ["ACE %1", LLSTRING(Module)],
|
format ["ACE %1", LLSTRING(Module)],
|
||||||
[0, 60, 15, -1],
|
[0, 60, 15, -1],
|
||||||
true,
|
1,
|
||||||
{[QGVAR(delay), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
{[QGVAR(delay), _this] call EFUNC(common,cbaSettings_settingChanged)}
|
||||||
true
|
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
@ -26,7 +25,7 @@
|
|||||||
[LSTRING(EndMission), LSTRING(EndMissionDesc)],
|
[LSTRING(EndMission), LSTRING(EndMissionDesc)],
|
||||||
format ["ACE %1", LLSTRING(Module)],
|
format ["ACE %1", LLSTRING(Module)],
|
||||||
[[0, 1, 2], [ELSTRING(Common,Disabled), LSTRING(Instant), LSTRING(Delayed)], 0],
|
[[0, 1, 2], [ELSTRING(Common,Disabled), LSTRING(Instant), LSTRING(Delayed)], 0],
|
||||||
true,
|
1,
|
||||||
{[QGVAR(delay), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
{[QGVAR(delay), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
||||||
true
|
true
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
@ -37,9 +36,8 @@
|
|||||||
[LSTRING(Log), LSTRING(LogDesc)],
|
[LSTRING(Log), LSTRING(LogDesc)],
|
||||||
format ["ACE %1", LLSTRING(Module)],
|
format ["ACE %1", LLSTRING(Module)],
|
||||||
false,
|
false,
|
||||||
true,
|
1,
|
||||||
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)},
|
{[QGVAR(enabled), _this] call EFUNC(common,cbaSettings_settingChanged)}
|
||||||
true
|
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
|
||||||
[
|
[
|
||||||
@ -48,7 +46,7 @@
|
|||||||
[LSTRING(TransferLoadout), LSTRING(TransferLoadoutDesc)],
|
[LSTRING(TransferLoadout), LSTRING(TransferLoadoutDesc)],
|
||||||
format ["ACE %1", LLSTRING(Module)],
|
format ["ACE %1", LLSTRING(Module)],
|
||||||
[[0, 1, 2], [ELSTRING(Common,Disabled), LSTRING(TransferLoadoutCurrent), LSTRING(TransferLoadoutConfig)], 0],
|
[[0, 1, 2], [ELSTRING(Common,Disabled), LSTRING(TransferLoadoutCurrent), LSTRING(TransferLoadoutConfig)], 0],
|
||||||
true,
|
1,
|
||||||
{},
|
{},
|
||||||
true // needs mission restart
|
true // needs mission restart
|
||||||
] call CBA_fnc_addSetting;
|
] call CBA_fnc_addSetting;
|
||||||
|
@ -17,4 +17,3 @@
|
|||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
#define DELAY_DEFAULT 15
|
#define DELAY_DEFAULT 15
|
||||||
#define BLACKLIST_UAV "UAV", "UAV_AI_base_F", "B_UAV_AI", "O_UAV_AI", "I_UAV_AI"
|
|
||||||
|
Loading…
Reference in New Issue
Block a user