Description
Loads the given file as a Config, allowing easy processing of the config file contents using commands such as configClasses, configProperties, >>, etc. It can load .rvmat, .bisurf, .cpp, .bin, .sqm, and description.ext files (both binarized and unbinarized configs are supported).
Important
- Config loading can be very slow; the config should only be loaded once and cached, e.g in a HashMap of
File Path → Config pairs (see #Example 3).
- It is advised to store the generated config in a variable, otherwise it will get destroyed if it is not being referenced directly (see #Example 2).
Syntax
loadConfig path
Parameters:
path: String - path to the file, which should be in a valid config format.
Returns: Config - loaded config. Returns configNull if the file doesn't exist.
Examples
Example 1
private _cfg = loadConfig "a3\data_f\default_super.rvmat";
getText (_cfg >> "Stage2" >> "uvSource");
Example 2
getNumber (loadConfig "mission.sqm" >> "ScenarioData" >> "respawnDelay");
_cfg = loadConfig "mission.sqm";
getNumber (_cfg >> "ScenarioData" >> "respawnDelay");
Example 3
private _fnc_loadConfig = {
params ["_path"];
if (isNil "TAG_configCache") then
{
TAG_configCache = createHashMap;
};
private _cfg = TAG_configCache getOrDefault [_path, configNull];
if (isNull _cfg) then
{
_cfg = loadConfig _path;
TAG_configCache set [_path, _cfg];
};
_cfg;
};
["a3\data_f\default_super.rvmat"] call _fnc_loadConfig;
Example 4
private _fnc_convertClass = {
params ["_cfgClass"];
private _result = createHashMap;
private _props = configProperties [_cfgClass, "true", true];
{
if (isNumber _x) then { _result set [toLowerANSI configName _x, getNumber _x]; continue; };
if (isText _x) then { _result set [toLowerANSI configName _x, getText _x]; continue; };
if (isArray _x) then { _result set [toLowerANSI configName _x, getArray _x]; continue; };
} forEach _props;
private _classes = "true" configClasses _cfgClass;
{
_result set [toLowerANSI configName _x, _x call _fnc_convertClass];
} forEach _classes;
_result;
};
private _cfg = loadConfig "mission.sqm";
private _cfgMap = _cfg call _fnc_convertClass;
_cfgMap get "editordata" get "movegridstep";
See also
loadFile · config greater greater name · configFile · configClasses · isText · isNumber · isArray · isClass · configName · getText · getNumber · getArray
When trying to load a terrain surface name, like you get from Ammo Eventhandlers when you hit the terrain, you can simply use
private _config = configFile >> "CfgSurfaces" >> _surfaceName;
You can recognize surface names by them not having any \ path separators in them, they usually start with gdt, for example "gdtvrsurface01".