ACE3/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf

72 lines
2.1 KiB
Plaintext

/*
* Author: Glowbal
* Called from the onLoad of ACE_settingsMenu dialog.
*
* Arguments:
* None
*
* Return Value:
* None
*
* Example:
* [onLoadEvent] call ACE_optionsmenu_fnc_onSettingsMenuOpen
*
* Public: No
*/
#include "script_component.hpp"
private ["_setting", "_menu"];
// Filter only user setable setting
GVAR(clientSideOptions) = [];
GVAR(clientSideColors) = [];
private _clientSettableCategories = [""];
{
// If the setting is user setable and not forced
if ((_x select 2) && !(_x select 6)) then {
// Append the current value to the setting metadata
_setting = + _x;
_setting pushBack (missionNamespace getVariable (_x select 0));
// Categorize the setting according to types
// @todo: allow the user to modify other types of parameters?
if ((_x select 1) == "SCALAR" || (_x select 1) == "BOOL") then {
GVAR(clientSideOptions) pushBack _setting;
};
if ((_x select 1) == "COLOR") then {
GVAR(clientSideColors) pushBack _setting;
};
_clientSettableCategories pushBackUnique (_x select 8); //Add to list of user-settable categories
};
} forEach EGVAR(common,settings);
//Delay a frame
[{ [MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged) }, []] call EFUNC(common,execNextFrame);
disableSerialization;
_menu = uiNamespace getVariable "ACE_settingsMenu";
(_menu displayCtrl 1002) ctrlEnable false;
(_menu displayCtrl 1003) ctrlEnable false;
if (GVAR(serverConfigGeneration) == 0) then {
(_menu displayCtrl 1102) ctrlEnable false;
(_menu displayCtrl 1102) ctrlShow false;
};
lbClear (_menu displayCtrl 14);
{
if (_x in _clientSettableCategories) then { //only show category if it has user-settable options
if (_x == "") then {
_x = localize LSTRING(category_all);
};
private _Index = (_menu displayCtrl 14) lbAdd _x;
(_menu displayCtrl 14) lbSetValue [_Index, _forEachIndex];
};
} forEach GVAR(categories);
(_menu displayCtrl 14) lbSetCurSel GVAR(currentCategorySelection); //All Catagoies