diff --git a/addons/main/script_macros_common.hpp b/addons/main/script_macros_common.hpp index 4a5c7a76d..f65aef899 100644 --- a/addons/main/script_macros_common.hpp +++ b/addons/main/script_macros_common.hpp @@ -1725,3 +1725,36 @@ Macro: IS_ADMIN_LOGGED commy2 ------------------------------------------- */ #define IS_ADMIN_LOGGED serverCommandAvailable "#shutdown" + +/* ------------------------------------------- +Macro: FILE_EXISTS + Check if a file exists on machines with interface + + Reports "false" if the file does not exist and throws an error in RPT. + +Parameters: + FILE - Path to the file + +Example: + (begin example) + // print "true" if file exists + systemChat str FILE_EXISTS("\A3\ui_f\data\igui\cfg\cursors\weapon_ca.paa"); + (end) + +Author: + commy2 +------------------------------------------- */ +#define FILE_EXISTS(FILE) (call {\ + private _return = false;\ + isNil {\ + private _control = (uiNamespace getVariable ["RscDisplayMain", displayNull]) ctrlCreate ["RscHTML", -1];\ + if (isNull _control) then {\ + _return = loadFile (FILE) != "";\ + } else {\ + _control htmlLoad (FILE);\ + _return = ctrlHTMLLoaded _control;\ + ctrlDelete _control;\ + };\ + };\ + _return\ +}) diff --git a/addons/settings/fnc_initDisplay3DEN.sqf b/addons/settings/fnc_initDisplay3DEN.sqf index 9251e9b41..7447415c2 100644 --- a/addons/settings/fnc_initDisplay3DEN.sqf +++ b/addons/settings/fnc_initDisplay3DEN.sqf @@ -71,15 +71,6 @@ add3DENEventHandler ["OnMissionLoad", _fnc_resetMissionSettingsMissionChanged]; #define MESSAGE_EXPORTED_SP 5 #define MESSAGE_EXPORTED_MP 6 -#define FILE_EXISTS(file) \ -call {\ - private _control = findDisplay 313 ctrlCreate ["RscHTML", -1];\ - _control htmlLoad file;\ - private _return = ctrlHTMLLoaded _control;\ - ctrlDelete _control;\ - _return\ -}; - add3DENEventHandler ["OnMessage", { params ["_message"]; diff --git a/addons/settings/fnc_initDisplayGameOptions.sqf b/addons/settings/fnc_initDisplayGameOptions.sqf index 2b355a2c7..d4f3ba857 100644 --- a/addons/settings/fnc_initDisplayGameOptions.sqf +++ b/addons/settings/fnc_initDisplayGameOptions.sqf @@ -35,15 +35,6 @@ if (isServer) then { }; // ----- reload settings file if in editor -#define FILE_EXISTS(file) \ -call {\ - private _control = findDisplay 313 ctrlCreate ["RscHTML", -1];\ - _control htmlLoad file;\ - private _return = ctrlHTMLLoaded _control;\ - ctrlDelete _control;\ - _return\ -}; - if (is3DEN && {FILE_EXISTS(MISSION_SETTINGS_FILE)}) then { GVAR(missionConfig) call CBA_fnc_deleteNamespace; GVAR(missionConfig) = [] call CBA_fnc_createNamespace; diff --git a/addons/settings/fnc_initDisplayMain.sqf b/addons/settings/fnc_initDisplayMain.sqf index e368600cc..42801da60 100644 --- a/addons/settings/fnc_initDisplayMain.sqf +++ b/addons/settings/fnc_initDisplayMain.sqf @@ -16,18 +16,7 @@ if (isClass (configFile >> "CfgPatches" >> QGVAR(userconfig))) then { private _userconfig = ""; if (_file != "") then { - private _fileExists = false; - - if (!isNull _display) then { - private _control = _display ctrlCreate ["RscHTML", -1]; - _control htmlLoad _file; - _fileExists = ctrlHTMLLoaded _control; - ctrlDelete _control; - } else { - _fileExists = loadFile _file != ""; - }; - - if (_fileExists) then { + if (FILE_EXISTS(_file)) then { INFO_1("Userconfig: File [%1] loaded successfully.",_file); _userconfig = _file; } else {