Zeus - Group Side Module: preserve group id and assigned team (#6569)

* Group Side - preserve group id and assigned team

* use findIf instead of breakOut
This commit is contained in:
Brett 2018-11-02 11:36:20 -06:00 committed by PabstMirror
parent 601b4c1e7b
commit 50d9fa4230

View File

@ -1,6 +1,6 @@
#include "script_component.hpp" #include "script_component.hpp"
/* /*
* Author: SilentSpike * Author: SilentSpike, Brett
* Zeus module function to change side of a group on dialog confirmation * Zeus module function to change side of a group on dialog confirmation
* *
* Arguments: * Arguments:
@ -25,20 +25,30 @@ if (_side == _newSide) exitWith {};
private _oldGroup = group _unit; private _oldGroup = group _unit;
private _newGroup = createGroup _newSide; private _newGroup = createGroup _newSide;
// Preserve groupid from the previous group if doesn't already exist
if ((allGroups findIf {side _x isEqualTo _newSide && {(groupId _oldGroup) isEqualTo (groupId _newGroup)}}) == -1) then {
_newGroup setGroupIdGlobal [groupId _oldGroup];
};
// Pretty hacky, will replace units return group with this new group if unconcious // Pretty hacky, will replace units return group with this new group if unconcious
if (GETVAR(_unit,ACE_isUnconscious,false) && {GETMVAR(EGVAR(medical,moveUnitsFromGroupOnUnconscious),false)}) then { if (GETVAR(_unit,ACE_isUnconscious,false) && {GETMVAR(EGVAR(medical,moveUnitsFromGroupOnUnconscious),false)}) then {
private _previousGroupsList = _unit getVariable [QEGVAR(common,previousGroupSwitchTo), []]; private _previousGroupsList = _unit getVariable [QEGVAR(common,previousGroupSwitchTo), []];
{ {
if ("ACE_isUnconscious" == (_x select 2)) exitWith { if ("ACE_isUnconscious" == (_x select 2)) exitWith {
_x set [0,_newGroup]; _x set [0,_newGroup];
_x set [1,_newSide]; _x set [1,_newSide];
_previousGroupsList set [_forEachIndex, _x]; _previousGroupsList set [_forEachIndex, _x];
}; };
} forEach _previousGroupsList; } forEach _previousGroupsList;
_unit setVariable [QEGVAR(common,previousGroupSwitchTo), _previousGroupsList, true]; _unit setVariable [QEGVAR(common,previousGroupSwitchTo), _previousGroupsList, true];
} else { } else {
(units _unit) joinSilent _newGroup; // Preserve assignedTeam for each unit
{
private _team = assignedTeam _x;
[_x] joinSilent _newGroup;
_x assignTeam _team;
} forEach units _unit;
deleteGroup _oldGroup; deleteGroup _oldGroup;
}; };