Skip to content

Commit f2515fd

Browse files
authored
Misc. - Replace configProperties wherever possible (#11265)
* Replace configProperties wherever possible * Update fnc_parseConfigForInjuries.sqf * Update fnc_cycleAttackProfileKeyDown.sqf * Update fnc_onFired.sqf * Revert count change * Update fnc_onFired.sqf * Missileguidance - Minor code cleanup (#11266) * Code cleanup * Revert _ammo changes * Update fnc_onFiredGetArgs.sqf * Revert some changes * Do cheaper check first * Add config command test cases * Use configClasses instead of configProperties wherever parent can't inherit subclasses
1 parent 5e0f91d commit f2515fd

33 files changed

+171
-82
lines changed

addons/arsenal/functions/fnc_baseOptic.sqf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if (_baseClasses isNotEqualTo []) exitWith {
2727
// Carry Handle
2828
{
2929
_baseClasses append (configProperties [_x, "getText _x == _optic"]);
30-
} forEach configProperties [configFile >> "CBA_CarryHandleTypes"];
30+
} forEach ("true" configClasses (configFile >> "CBA_CarryHandleTypes")); // CBA_CarryHandleTypes doesn't inherit, so use faster command
3131

3232
if (_baseClasses isNotEqualTo []) exitWith {
3333
configName (_baseClasses select 0) // return

addons/arsenal/functions/fnc_scanConfig.sqf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ private _toolList = createHashMap;
3030
// https://community.bistudio.com/wiki/Arma_3:_Characters_And_Gear_Encoding_Guide#Character_configuration
3131
// https://github.com/acemod/ACE3/pull/9040#issuecomment-1597748331
3232
private _filterFunction = toString {
33-
isClass _x && {if (isNumber (_x >> "scopeArsenal")) then {getNumber (_x >> "scopeArsenal") == 2 && {getNumber (_x >> "scope") > 0}} else {getNumber (_x >> "scope") == 2}} && {getNumber (_x >> QGVAR(hide)) != 1}
33+
(if (isNumber (_x >> "scopeArsenal")) then {getNumber (_x >> "scopeArsenal") == 2 && {getNumber (_x >> "scope") > 0}} else {getNumber (_x >> "scope") == 2}) && {getNumber (_x >> QGVAR(hide)) != 1}
3434
};
3535

3636
private _cfgWeapons = configFile >> "CfgWeapons";
@@ -132,7 +132,7 @@ private _isTool = false;
132132
if (_isTool) then {_toolList set [_className, nil]};
133133
};
134134
};
135-
} forEach configProperties [_cfgWeapons, _filterFunction, true];
135+
} forEach (_filterFunction configClasses _cfgWeapons);
136136

137137
// Get all grenades
138138
// Explicitly don't look at scope for these, we want hidden items to be sorted as grenades/explosives properly
@@ -191,19 +191,19 @@ _magazineMiscItems deleteAt "";
191191
(_configItems get IDX_VIRT_ITEMS_ALL) set [_className, nil];
192192
};
193193
};
194-
} forEach configProperties [_cfgMagazines, _filterFunction, true];
194+
} forEach (_filterFunction configClasses _cfgMagazines);
195195

196196
// Get all backpacks
197197
{
198198
if (getNumber (_x >> "isBackpack") == 1) then {
199199
(_configItems get IDX_VIRT_BACKPACK) set [configName _x, nil];
200200
};
201-
} forEach configProperties [configFile >> "CfgVehicles", _filterFunction, true];
201+
} forEach (_filterFunction configClasses (configFile >> "CfgVehicles"));
202202

203203
// Get all facewear
204204
{
205205
(_configItems get IDX_VIRT_GOGGLES) set [configName _x, nil];
206-
} forEach configProperties [configFile >> "CfgGlasses", _filterFunction, true];
206+
} forEach (_filterFunction configClasses (configFile >> "CfgGlasses"));
207207

208208
// Get all faces
209209
private _faceCache = createHashMap;
@@ -229,7 +229,7 @@ private _faceCategory = "";
229229
} forEach ("true" configClasses (configFile >> "CfgFaces"));
230230

231231
// Get all voices
232-
private _voiceCache = (configProperties [configFile >> "CfgVoice", "isClass _x && {getNumber (_x >> 'scope') == 2}", true]) - [configFile >> "CfgVoice" >> "NoVoice"];
232+
private _voiceCache = ("getNumber (_x >> 'scope') == 2" configClasses (configFile >> "CfgVoice")) - [configFile >> "CfgVoice" >> "NoVoice"];
233233
_voiceCache = _voiceCache apply {configName _x};
234234

235235
// Get all insignia

addons/artillerytables/dev/checkConfigs.inc.sqf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ diag_log text "-------------------------------------------";
77
private _fnc_showPropertyDefined = {
88
params ["_configBase", "_configProperty"];
99

10-
private _customAll = configProperties [_configBase, 'isClass _x && {isNumber (_x >> _configProperty)}', true];
11-
private _customExplicit = _customAll select {[] isNotEqualTo configProperties [_x, 'configName _x == _configProperty', false]};
10+
private _customAll = 'isNumber (_x >> _configProperty)' configClasses _configBase; // Would have to use configProperties if configs inherited subclasses
11+
private _customExplicit = _customAll select {_x == inheritsFrom (_x >> _configProperty)};
1212
diag_log text format ["%1 with custom %2: %3 Explicit, %4 Total]", configName _configBase, _configProperty, count _customExplicit, count _customAll];
1313
diag_log text format [" - Defined: %1", _customExplicit apply {configName _x}];
1414
diag_log text format [" - Inherited: %1", _customAll apply {[configName _x, getNumber (_x >> _configProperty)]}];

addons/common/config.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,34 @@ class ACE_Tests {
7474
vehicleTransportInventory = QPATHTOF(dev\test_vehicleInventory.sqf);
7575
mapConfigs = QPATHTOF(dev\test_mapConfigs.sqf);
7676
cfgPatches = QPATHTOF(dev\test_cfgPatches.sqf);
77+
configCommands = QPATHTOF(dev\test_configCommands.sqf);
7778
};
7879

80+
#ifdef ACE_CONFIG_COMMANDS_TEST
81+
class GVAR(configCommandTestClasses) {
82+
class GVAR(testBase) {
83+
class GVAR(subclass1) {
84+
test = 1;
85+
};
86+
};
87+
class GVAR(test1): GVAR(testBase) {};
88+
class GVAR(test2): GVAR(testBase) {
89+
class GVAR(subclass1): GVAR(subclass1) {};
90+
};
91+
class GVAR(test3): GVAR(testBase) {
92+
class GVAR(subclass1): GVAR(subclass1) {
93+
test = 1;
94+
};
95+
};
96+
class GVAR(test4): GVAR(testBase) {
97+
class GVAR(subclass2): GVAR(subclass1) {};
98+
};
99+
class GVAR(test5): GVAR(testBase) {
100+
class GVAR(subclass2): GVAR(subclass1) {
101+
test = 1;
102+
};
103+
};
104+
};
105+
#endif
106+
79107
#include "ACE_ExtensionsHashes.hpp"
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include "..\script_component.hpp"
2+
3+
// johnb43
4+
// ["configCommands"] call ace_common_fnc_runTests;
5+
6+
INFO("Checking config commands");
7+
8+
private _testPass = true;
9+
10+
private _cases = [QGVAR(test1), QGVAR(test2), QGVAR(test3), QGVAR(test4), QGVAR(test5)];
11+
private _base = configFile >> QGVAR(configCommandTestClasses);
12+
13+
// Subclasses only, no inheritance
14+
private _configClasses = _cases apply {"true" configClasses (_base >> _x)};
15+
private _configProperties = _cases apply {configProperties [_base >> _x, "isClass _x", false]};
16+
17+
if (_configClasses isNotEqualTo _configProperties) then {
18+
ERROR_2("Config commands (1) not behaving as expected: %1 - %2",_configClasses,_configProperties);
19+
_testPass = false;
20+
};
21+
22+
// Specific subclass only, no inheritance
23+
_configClasses = _cases apply {QUOTE(configName _x == QQGVAR(subclass1)) configClasses (_base >> _x)};
24+
_configProperties = _cases apply {configProperties [_base >> _x, QUOTE(configName _x == QQGVAR(subclass1)), false]};
25+
26+
if (_configClasses isNotEqualTo _configProperties) then {
27+
ERROR_2("Config commands (2) not behaving as expected: %1 - %2",_configClasses,_configProperties);
28+
_testPass = false;
29+
};
30+
31+
_configClasses = _cases apply {QUOTE(configName _x == QQGVAR(subclass2)) configClasses (_base >> _x)};
32+
_configProperties = _cases apply {configProperties [_base >> _x, QUOTE(configName _x == QQGVAR(subclass2)), false]};
33+
34+
if (_configClasses isNotEqualTo _configProperties) then {
35+
ERROR_2("Config commands (3) not behaving as expected: %1 - %2",_configClasses,_configProperties);
36+
_testPass = false;
37+
};
38+
39+
// Test if attribute is inherited or not
40+
_configProperties = _cases apply {(configProperties [_base >> _x, "configName _x == 'test'", false]) isNotEqualTo []};
41+
private _inheritsFrom = _cases apply {(_base >> _x) == inheritsFrom (_base >> _x >> "test")};
42+
43+
if (_configProperties isNotEqualTo _inheritsFrom) then {
44+
ERROR_2("Config commands (4) not behaving as expected: %1 - %2",_configProperties,_inheritsFrom);
45+
_testPass = false;
46+
};
47+
48+
_testPass // return

addons/common/dev/test_mapConfigs.sqf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ diag_log text format ["--- Checking Map Configs ---"];
88

99
private _testPass = true;
1010

11-
private _maps = configProperties [configFile >> "CfgWorldList", "(isClass _x)", true];
11+
private _maps = "true" configClasses (configFile >> "CfgWorldList");
1212
{
1313
private _mapConfigName = configName _x;
1414
private _worldConfig = configFile >> "CfgWorlds" >> _mapConfigName;
@@ -36,7 +36,7 @@ private _maps = configProperties [configFile >> "CfgWorldList", "(isClass _x)",
3636
_stepX = getNumber (_x >> "stepX");
3737
_stepY = getNumber (_x >> "stepY");
3838
};
39-
} forEach configProperties [(_worldConfig >> "Grid"), "isClass _x", false];
39+
} forEach ("true" configClasses (_worldConfig >> "Grid"));
4040
private _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5);
4141
private _stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5);
4242
if (_stepYat5 < 0) then {diag_log text format ["%1 [%2] - Northing is reversed.",_mapDescription,_mapConfigName];};

addons/common/dev/test_vehicleInventory.sqf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
private _testPass = true;
66

7-
private _vehicles = configProperties [configFile >> "CfgVehicles", "(isClass _x)", true];
7+
private _vehicles = "true" configClasses (configFile >> "CfgVehicles");
88
{
99
private _vehType = configName _x;
1010
{

addons/common/functions/fnc_cbaSettings_convertHelper.sqf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ private _addonSearch = _addon + "_";
2323
private _addonSearchCount = count _addonSearch;
2424
TRACE_2("",_addonSearch,_addonSearchCount);
2525

26-
private _settings = configProperties [configFile >> "ACE_Settings", "(isClass _x) && {((configName _x) select [0, _addonSearchCount]) == _addonSearch}"];
26+
private _settings = "((configName _x) select [0, _addonSearchCount]) == _addonSearch" configClasses (configFile >> "ACE_Settings");
2727

2828
{
2929
private _config = _x;

addons/common/functions/fnc_cbaSettings_transferUserSettings.sqf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ if ((parseNumber _lastVersion) >= 3.12) exitWith {};
2323

2424
INFO("-Transfering old ACE_Settings to CBA-");
2525

26-
private _aceSettings = configProperties [configFile >> "ACE_Settings", "isClass _x"];
26+
private _aceSettings = "true" configClasses (configFile >> "ACE_Settings");
2727
{
2828
private _settingName = configName _x;
2929
private _isClientSettable = (getNumber (_x >> "isClientSettable")) > 0;

addons/common/functions/fnc_getMapGridData.sqf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private _stepY = 1e10;
3838
_stepX = getNumber (_x >> "stepX");
3939
_stepY = getNumber (_x >> "stepY");
4040
};
41-
} forEach configProperties [_cfgGrid, "isClass _x", false];
41+
} forEach ("true" configClasses _cfgGrid);
4242

4343
private _letterGrid = false;
4444

0 commit comments

Comments
 (0)