loadConfig: Difference between revisions
Jump to navigation
Jump to search
(Remove the "Leo" tag...) |
(Add another example) |
||
Line 36: | Line 36: | ||
//the first call will be slow (~0.1200 ms), but subsequent calls are fast (~0.0050 ms) | //the first call will be slow (~0.1200 ms), but subsequent calls are fast (~0.0050 ms) | ||
["a3\data_f\default_super.rvmat"] call _fnc_getConfig;</sqf> | ["a3\data_f\default_super.rvmat"] call _fnc_getConfig;</sqf> | ||
|x3=<sqf>//converting a config into hashmap | |||
_fnc_convertClass = { | |||
params ["_cfgClass"]; | |||
private _result = createHashMap; | |||
private _props = configProperties [_cfgClass, "true", true]; | |||
{ | |||
if (isNumber _x) then {_result set [configName _x, getNumber _x]; continue; }; | |||
if (isText _x) then {_result set [configName _x, getText _x]; continue; }; | |||
if (isArray _x) then {_result set [configName _x, getArray _x]; continue; }; | |||
} forEach _props; | |||
private _classes = "true" configClasses _cfgClass; | |||
{ | |||
_result set [configName _x, _x call _fnc_convertClass]; | |||
} forEach _classes; | |||
_result | |||
}; | |||
private _cfgMap = (loadConfig "mission.sqm") call _fnc_convertClass; | |||
_cfgMap get "EditorData" get "moveGridStep"; //similar to getNumber(_cfg >> "EditorData" >> "moveGridStep")</sqf> | |||
|seealso= [[config greater greater name|>>]] [[configFile]] [[configClasses]] [[isText]] [[isNumber]] [[isArray]] [[isClass]] [[configName]] [[getText]] [[getNumber]] [[getArray]] | |seealso= [[config greater greater name|>>]] [[configFile]] [[configClasses]] [[isText]] [[isNumber]] [[isArray]] [[isClass]] [[configName]] [[getText]] [[getNumber]] [[getArray]] | ||
}} | }} |
Revision as of 05:16, 17 March 2022
Description
- Description:
- Loads the given file as a Config. It can load .rvmat, .bisurf, .cpp, .bin, .sqm, and description.ext files (both binarized and unbinarized configs are supported).
- Groups:
- Config
Syntax
- Syntax:
- loadConfig path
- Parameters:
- path: String - Path to the file, which should be in a valid config format.
- Return Value:
- Config - Loaded config. Returns configNull if the file doesn't exist.
Examples
- Example 1:
- Example 2:
- //Using a cache to store loaded configs, since loading configs is very slow and should be done once. _fnc_getConfig = { params ["_path"]; //initialize cache if not initialized yet if (isNil "Leo_configCache") then { Leo_configCache = createHashMap; }; private _cfg = Leo_configCache getOrDefault [_path, configNull]; //if path doesn't exist in the cache or cfg is null, load the config if (isNull _cfg) then { _cfg = loadConfig _path; Leo_configCache set [_path, _cfg]; }; _cfg; }; //the first call will be slow (~0.1200 ms), but subsequent calls are fast (~0.0050 ms) ["a3\data_f\default_super.rvmat"] call _fnc_getConfig;
- Example 3:
- //converting a config into hashmap _fnc_convertClass = { params ["_cfgClass"]; private _result = createHashMap; private _props = configProperties [_cfgClass, "true", true]; { if (isNumber _x) then {_result set [configName _x, getNumber _x]; continue; }; if (isText _x) then {_result set [configName _x, getText _x]; continue; }; if (isArray _x) then {_result set [configName _x, getArray _x]; continue; }; } forEach _props; private _classes = "true" configClasses _cfgClass; { _result set [configName _x, _x call _fnc_convertClass]; } forEach _classes; _result }; private _cfgMap = (loadConfig "mission.sqm") call _fnc_convertClass; _cfgMap get "EditorData" get "moveGridStep"; //similar to getNumber(_cfg >> "EditorData" >> "moveGridStep")
Additional Information
- See also:
- >> configFile configClasses isText isNumber isArray isClass configName getText getNumber getArray
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note