#include "script_component.hpp" #define IDCs [31201,31200,31202,31203] disableSerialization; params ["_control"]; //Generic Init: private _display = ctrlparent _control; private _ctrlButtonOK = _display displayctrl 1; //IDC_OK private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objnull); TRACE_1("logicObject",_logic); _control ctrlRemoveAllEventHandlers "setFocus"; //Validate the module target: private _unit = effectiveCommander (attachedTo _logic); private _side = side _unit; scopeName "Main"; private _fnc_errorAndClose = { params ["_msg"]; _display closeDisplay 0; deleteVehicle _logic; [_msg] call EFUNC(common,displayTextStructured); breakOut "Main"; }; switch (false) do { case (_unit isKindOf "CAManBase"): { [LSTRING(OnlyInfantry)] call _fnc_errorAndClose; }; case (alive _unit): { [LSTRING(OnlyAlive)] call _fnc_errorAndClose; }; case (_side in [west,east,independent,civilian]): { ["Unit must belong to an appropriate side"] call _fnc_errorAndClose; }; }; //Specific on-load stuff: private _idcActive = 31200 + ([west,east,independent,civilian] find _side); SETVAR(_display,oldSide,_idcActive - 31200); SETVAR(_display,newSide,_idcActive - 31200); private _fnc_onSelection = { params [["_activeCtrl", controlNull, [controlNull]]]; private _display = ctrlParent _activeCtrl; if (isNull _display) exitWith {}; // Update the button scales and colours on selection { private _ctrl = _display displayCtrl _x; private _color = _ctrl getVariable "color"; private _scale = 1; if (ctrlIDC _activeCtrl == _x) then { _color set [3,1]; _scale = 1.2 } else { _color set [3,0.5]; }; _ctrl ctrlSetTextColor _color; [_ctrl,_scale,0.1] call BIS_fnc_ctrlSetScale; } forEach IDCs; // Store selected button index for confirmation SETVAR(_display,newSide,(ctrlIDC _activeCtrl) - 31200); }; // Initalize buttons with colour and scale { private _ctrl = _display displayCtrl _x; private _color = [_forEachIndex] call BIS_fnc_sideColor; _ctrl setVariable ["color", _color]; _ctrl ctrlSetActiveColor _color; _color set [3,0.5]; if (ctrlIDC _ctrl == _idcActive) then { [_ctrl,1.2,0] call BIS_fnc_ctrlSetScale; _color set [3,1]; }; _ctrl ctrlSetTextColor _color; _ctrl ctrlAddEventHandler ["buttonclick", _fnc_onSelection]; } forEach IDCs; private _fnc_onConfirm = { params [["_ctrlButtonOK", controlNull, [controlNull]]]; private _display = ctrlparent _ctrlButtonOK; if (isNull _display) exitWith {}; private _logic = GETMVAR(BIS_fnc_initCuratorAttributes_target,objnull); if (isNull _logic) exitWith {}; private _unit = effectiveCommander (attachedTo _logic); private _side = [west,east,independent,civilian] select (GETVAR(_display,newSide,GETVAR(_display,oldSide,0))); [_unit, _side] call FUNC(moduleGroupSide); deleteVehicle _logic; }; _ctrlButtonOK ctrlAddEventHandler ["buttonClick", _fnc_onConfirm];