/* Dynamic inventory sub menu By Aaron Clark - Epoch Mod */ //[[[cog import generate_private_arrays ]]] private ["_CfgEpochClient","_Suppressed","_activeControl","_bg","_btn_arr","_buffer","_buttonTXT","_button_gen","_button_texts","_cfgItemInteractions","_config","_control","_data","_display","_interactActions","_interactOption","_magCount","_pos","_start_idc","_type","_y2d"]; //[[[end]]] _button_texts = []; _activeControl = uiNamespace getVariable ["EPOCH_active_button_control", controlNull]; if (!isNull _activeControl) then { _activeControl ctrlShow false; ctrlDelete _activeControl; }; _this call EPOCH_selectInventoryItem; _data = EPOCH_InteractedItem select 1; _interactOption = 0; _buttonTXT = ""; _magCount = 1; _interactActions = []; _config = (configfile >> "CfgWeapons" >> _data); _CfgEpochClient = 'CfgEpochClient' call EPOCH_returnConfig; _Suppressed = getarray (_CfgEpochClient >> "SuppressedCraftingItems"); // _cfgItemInteractions = (('CfgItemInteractions' call EPOCH_returnConfig) >> _data); _cfgItemInteractions = ["CfgItemInteractions", _data] call EPOCH_returnConfigV2; if (isClass (_config)) then { _type = getNumber (_config >> "type"); _interactOption = getNumber (_cfgItemInteractions >> "interactAction"); _buttonTXT = getText(_cfgItemInteractions >> "interactText"); _interactActions = getArray(_cfgItemInteractions >> "interactActions"); } else { if (EPOCH_AdvancedVehicleRepair_Enabled && _data in ["VehicleRepair","VehicleRepairLg"]) exitwith {}; _config = (configfile >> "CfgMagazines" >> _data); _type = getNumber (_config >> "type"); _interactOption = getNumber (_cfgItemInteractions >> "interactAction"); _buttonTXT = getText(_cfgItemInteractions >> "interactText"); _magCount = getNumber (_config >> "count"); _interactActions = getArray(_cfgItemInteractions >> "interactActions"); }; // legacy if (_buttonTXT != "") then { _button_texts pushBack [_buttonTXT]; }; // additional interactActions if !(_interactActions isEqualTo []) then { { _button_texts pushBack _x; } forEach _interactActions; }; // ammo repack if (_magCount > 1) then { _button_texts pushBack ["REPACK","[0] call EPOCH_consumeItem;"]; }; _config = 'CfgCrafting' call EPOCH_returnConfig; if (isClass (_config >> _data) && !(_data in _Suppressed)) then { EPOCH_CraftingItem = EPOCH_InteractedItem select 0; _button_texts pushBack ["CRAFT","EPOCH_CraftingItem call EPOCH_crafting_load;"]; } else { EPOCH_CraftingItem = ""; }; /* Moved to DynaMenu _config = 'CfgVehicleUpgrades' call EPOCH_returnConfig; if (isClass (_config >> _data)) then { { if (isclass (_config >> _data >> (typeof _x))) exitwith { EPOCH_UpgradeVehicle = [_data,_x]; _reqMaterials = getArray (_config >> _data >> (typeof _x) >> "ReqMaterials"); _itemtxt = "required: "; { _itemtxt = _itemtxt + str (_x select 0) + ((_x select 1) call EPOCH_itemDisplayName) + ", "; } foreach _reqMaterials; _txt1 = format ["Upgrade %1", (typeof _x) call EPOCH_itemDisplayName]; _txt2 = "EPOCH_UpgradeVehicle call EPOCH_Client_UpgradeVehicle;"; _button_texts pushBack [_txt1,_txt2]; }; } foreach (nearestobjects [player,["Landvehicle","SHIP","AIR","TANK"],10]); }; */ if !(_button_texts isEqualTo []) then { _display = ctrlParent (_this select 0); _pos = getMousePosition; _control = _display ctrlCreate ["RscControlsGroupNoScrollbars", 5678910]; uiNamespace setVariable ["EPOCH_active_button_control", _control]; _control ctrlSetPosition [(_pos select 0)-0.03,(_pos select 1)-0.03,1,1]; _control ctrlCommit 0; _bg = _display ctrlCreate ["RscButtonTextOnly", 12349,_control]; _bg ctrlSetPosition [0,0,1,1]; _bg ctrlCommit 0; _bg ctrlAddEventHandler ["MouseEnter",{ _activeControl = uiNamespace getVariable ["EPOCH_active_button_control", controlNull]; if !(isNull _activeControl) then { _activeControl ctrlShow false; }; }]; _buffer = _display ctrlCreate ["RscButtonTextOnly", 12345,_control]; _buffer ctrlSetPosition [0.02,0.02,0.25,0.0625 + (0.0625 * (count _button_texts))]; _buffer ctrlAddEventHandler ["ButtonClick",{ _activeControl = uiNamespace getVariable ["EPOCH_active_button_control", controlNull]; if !(isNull _activeControl) then { _activeControl ctrlShow false; }; }]; _buffer ctrlCommit 0; _y2d = 0.06; _btn_arr = []; _start_idc = 12346; { _x params [["_btn_text","EXAMINE"],["_btn_code","[] call EPOCH_consumeItem;"]]; _button_gen = _display ctrlCreate ["RscButtonMenu", _start_idc,_control]; _start_idc = _start_idc + 1; _button_gen ctrlSetPosition [0.06,_y2d,0.20,0.06]; _button_gen ctrlSetText _btn_text; _button_gen ctrlCommit 0; _button_gen ctrlSetEventHandler ["ButtonClick",_btn_code + "(uiNamespace getVariable [""EPOCH_active_button_control"", controlNull]) ctrlShow false;"]; _y2d = _y2d + 0.0625; _btn_arr pushBack _button_gen; } forEach _button_texts; reverse _btn_arr; uiNamespace setVariable ["EPOCH_active_controls", ([_control,_bg,_buffer] + _btn_arr) ]; // uiNamespace setVariable ["EPOCH_active_buttons", _btn_arr ]; {ctrlSetFocus _x} forEach (uiNamespace getVariable ["EPOCH_active_controls", []]); };