1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/* Use this file if you wish to set quickly a faction's groups */
Private ['_aiTeamTemplates','_aiTeamTemplateName','_aiTeamTemplateRequires','_aiTeamTypes','_aiTeamUpgrades','_blacklist','_cfgFaction','_faction','_side'];
_side = _this select 0;
_faction = _this select 1;
_blacklist = if (count _this > 2) then {_this select 2} else {[]};
_cfgFaction = configFile >> "CfgGroups" >> _side >> _faction;
if !(isClass _cfgFaction) exitWith {diag_log Format ["[WFBE (ERROR)][frameno:%1 | ticktime:%2] Squads_SetFactionGroups: Entry (configFile >> '%3' >> '%4') is not a valid group config.",diag_frameno,diag_tickTime,_side,_faction]};
_aiTeamTemplates = [];
_aiTeamTemplateName = [];
_aiTeamTemplateRequires = [];
_aiTeamTypes = [];
_aiTeamUpgrades = [];
//--- Iterate through the faction's config and grab the group along with it's properties.
for "_i" from 0 to ((count _cfgFaction) - 1) do {
Private ["_classKind"];
_classKind = _cfgFaction select _i;
// ACE CSW squads don't work quite right.
if (isClass _classKind && toUpper (configName(_classKind)) != "ACE_CSW_INFANTRY") then {
Private ["_nameKind"];
_nameKind = getText (_classKind >> "name");
for "_j" from 0 to ((count _classKind) - 1) do {
Private ["_classType"];
_classType = _classKind select _j;
if (isClass _classType && !(configName(_classType) in _blacklist)) then {
Private ["_factoryPool","_groupUnits","_levels","_nameGroup","_require"];
_nameGroup = getText (_classType >> "name");
_aiTeamTemplateName = _aiTeamTemplateName + [Format ["%1 - %2",_nameKind,_nameGroup]];
_groupUnits = [];
_require = [false, false, false, false];
_levels = [0,0,0,0];
for "_k" from 0 to ((count _classType) - 1) do {
Private ["_classUnit"];
_classUnit = _classType select _k;
if (isClass _classUnit) then {
Private ["_unit"];
_unit = getText (_classUnit >> "vehicle");
_groupUnits = _groupUnits + [_unit];
_get = _unit Call GetNamespace;
if !(isNil "_get") then {
_type = _get select QUERYUNITFACTORY;
_upgrade = _get select QUERYUNITUPGRADE;
_require set [_type, true];
_levels set [_type, _upgrade];
} else {
diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Squads_SetFactionGroups: Unit '%1' is not a defined within the core files.",_unit,diag_frameno,diag_tickTime];
/* TODO, Attempt to define*/
};
};
};
_factoryPool = switch (configName _classKind) do {
case "Infantry": {0};
case "Motorized": {1};
case "Mechanized": {2};
case "Armor": {2};
case "Air": {3};
default {0};
};
_aiTeamTypes = _aiTeamTypes + [_factoryPool];
_aiTeamUpgrades = _aiTeamUpgrades + [_levels];
_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_require];
_aiTeamTemplates = _aiTeamTemplates + [_groupUnits];
};
};
};
};
[_aiTeamTemplates, _aiTeamTemplateName, _aiTeamTemplateRequires, _aiTeamTypes, _aiTeamUpgrades]
|