disableSerialization; private ["_control","_display","_temp","_event","_data","_x","_stopTheKey","_keyLeft","_i","_index","_size","_indices","_lbcontrol"]; private ["_key","_keyRight","_keyTop","_keyBottom","_secondColumn","_activateControl","_output","_doFilter"]; private ["_event","_data","_display","_control","_primaryWeaponControl","_IDCsArray","_lbIDC","_lbColumn","_sum"]; /* IGUI_GEAR_filterPrimaryWeapon = (_activeFilter select 0); IGUI_GEAR_filterSecondaryWeapon = (_activeFilter select 1); IGUI_GEAR_filterAmmo = (_activeFilter select 2); IGUI_GEAR_filterBinocular = (_activeFilter select 3); IGUI_GEAR_filterInventory = (_activeFilter select 4); IGUI_GEAR_filterPistols = (_activeFilter select 5); IGUI_GEAR_filterPistolAmmo = (_activeFilter select 6); */ _filterSets = [ //Primary Weapon, Secondary weapon, Ammo, Binocular, Inventory, Pistols, Pistols Ammo [false,false,false,false,false,false,false], [false,true,false,true,true,true,true], [true,false,false,true,true,true,true], [true,true,true,false,false,true,true], // all but pistol, pistols ammo [true,true,true,true,true,true,true] ]; _icons = [ "\ca\ui\data\igui_buyUnit_filter_1_ca.paa", "\ca\ui\data\igui_buyUnit_filter_2_ca.paa", "\ca\ui\data\igui_buyUnit_filter_3_ca.paa", "\ca\ui\data\igui_buyUnit_filter_4_ca.paa", "\ca\ui\data\igui_buyUnit_filter_5_ca.paa" ]; _event = _this select 1; _data = _this select 0; _dofilter = false; /*-------------------------------------------*/ if(typeName(_data select 0) == "DISPLAY")then { _display = (_data select 0); }; if(typeName(_data select 0) == "CONTROL")then { _control = (_data select 0); _display = ctrlParent _control; }; /*-------------------------------------------*/ _lbSelectedItem = { private ["_index","_selectedItem","_n"]; _lbcontrol = _display displayctrl _lbIDC; _index = lbCurSel _lbcontrol; _selectedItem = ""; _n = 0; while {(_selectedItem == "")&&(_n<6)} do { _selectedItem = _lbcontrol lnbData [_index,1]; uisleep 0.001; _n = _n + 1; }; _selectedItem; }; _arrowsEnable = { private ["_index","_selectedItem"]; _lbcontrol = _display displayctrl _lbIDC; _controlLeftArrow = _display displayctrl 147; _controlRightArrow = _display displayctrl 146; _index = lbCurSel _lbcontrol; _selectedItemCountLeft = _lbcontrol lnbText [_index,0]; _selectedItemCountRight = _lbcontrol lnbText [_index,2]; }; _isWeapon = { private ["_item","_return"]; _item = _this select 0; _return = (str(configfile >> "cfgWeapons" >> _item) != ""); _return; }; _isMagazine = { private ["_item","_return"]; _item = _this select 0; _return = (str(configfile >> "cfgMagazines" >> _item) != ""); _return; }; _IDCsArray = [ [107], [121], [108], [107], [122,123,124,125,126,127,128,129], [107], [107], [107], [109,110,111,112,113,114,115,116,117,118,119,120], [109,110,111,112,113,114,115,116,117,118,119,120], [108], [107], [130,131], [107], [107], [107], [107], [134,135,136,137,138,139,140,141,142,143,144,145], [107], [107], [107], [107] ]; _showAllIDCs = { private ["_slotArray","_j","_i"]; for [{_i=0},{_i-1 ) then { _itemSlot = _display displayctrl (_slotArray select _j); _itemSlot ctrlSetFade 0.0; _itemSlot ctrlCommit 0.3; } else { _itemSlot = _display displayctrl (_slotArray select _j); _itemSlot ctrlSetFade 0.5; _itemSlot ctrlCommit 0.3; }; }; }; /* for [{_i=0},{_i> "cfgWeapons" >> _item >> "type"); }; if ([_item] call _isMagazine) then { _return = getNumber(configfile >> "cfgMagazines" >> _item >> "type"); }; _return; }; _highlightIDCs = { _hlIDCs = _this select 0; for [{_i=0},{_i=0}, {_i = _i - 1} ] do { _valResult = _val mod _n; if (_valResult != _val) then { _bitArray set [_i, 1]; }; _n = _n / 2; _val = _valResult; }; _bitArray }; _highlightGearSlots ={ // [] call _showAllIDCs; _selectedItem = [] call _lbSelectedItem; _selectedItemSlot = [_selectedItem] call _itemSlot; _selectedItemSlotFlags = [_selectedItemSlot] call _returnBitArray; _selectedItemSlotIDCs = [_selectedItemSlotFlags] call _returnSlotIDCs; [_selectedItemSlotIDCs] call _higlightIDCs; }; _weaponsLBSetFocus = { _lbcontrol = _display displayctrl _lbIDC; /** Temporary disabled to prevent bug news:hov5k4$f6f$1@new-server.localdomain **/ //ctrlSetFocus _lbcontrol; }; _setFilterIcon = { _ctrlIcon = _display displayctrl 148; _ctrlIcon ctrlSetText (_icons select IGUI_GEAR_activeFilter); }; _keyActions = { _keyLeft = [203,327700,327686]; _keyRight = [205,327696,327687]; _keyTop = [200,327697,327684]; _keyBottom = [208,327701,327685]; _key = _data select 1; if((_keyLeft find _key)>=0)then { _control = _display displayctrl 146; ctrlActivate _control; _output = true; }; if((_keyRight find _key)>=0)then { _control = _display displayctrl 147; ctrlActivate _control; _output = true; }; if((_keyTop find _key)>=0)then { }; if((_keyBottom find _key)>=0)then { }; }; //_bitArray = [0,0,0,0,0 ,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]; /* #define WeaponNoSlot 0 // dummy weapons #define WeaponSlotPrimary 1 // primary weapons #define WeaponSlotSecondary 4 // secondary weapons #define WeaponSlotHandGun 2 // HandGun #define WeaponSlotHandGunItem 16 // HandGun magazines #define WeaponSlotItem 256 // items #define WeaponSlotBinocular 4096 // binocular #define WeaponHardMounted 65536 #define WeaponSlotInventory 131072 // inventory items */ _setFilterGlobals = { _activeFilter = _this; IGUI_GEAR_filterPrimaryWeapon = (_activeFilter select 0); IGUI_GEAR_filterSecondaryWeapon = (_activeFilter select 1); IGUI_GEAR_filterAmmo = (_activeFilter select 2); IGUI_GEAR_filterBinocular = (_activeFilter select 3); IGUI_GEAR_filterInventory = (_activeFilter select 4); IGUI_GEAR_filterPistols = (_activeFilter select 5); IGUI_GEAR_filterPistolAmmo = (_activeFilter select 6); }; //1201 _highlightFilterIcons = { for [{_i=0},{_i<6}, {_i = _i + 1} ] do { _control = _display displayctrl (1200 + _i); _control ctrlSetTextColor [0.6000,0.8392,0.4706,1.0]; }; _control = _display displayctrl (1200 + _this); _control ctrlSetTextColor [1,1,1,1]; }; _matchesFilter = { private ["_itemValue","_itemBitArray"]; _output = false; _itemValue = _this select 0; _itemBitArray = [_itemValue] call _returnBitArray; if (_itemValue == 1 && IGUI_GEAR_filterPrimaryWeapon) then { _output = true; }; if (_itemValue == 5 && IGUI_GEAR_filterPrimaryWeapon) then { _output = true; }; if (_itemValue == 4 && IGUI_GEAR_filterSecondaryWeapon) then { _output = true; }; if (_itemValue == 2 && IGUI_GEAR_filterPistols) then { _output = true; }; if (_itemValue == 16 && IGUI_GEAR_filterPistolAmmo) then { _output = true; }; if (_itemValue == 131072 && IGUI_GEAR_filterInventory) then { _output = true; }; if (_itemValue == 512 && IGUI_GEAR_filterAmmo) then { _output = true; }; if (_itemValue == 256 && IGUI_GEAR_filterAmmo) then { _output = true; }; if (_itemValue == 4096 && IGUI_GEAR_filterBinocular) then { _output = true; }; _output; }; _filterItems = { private ["_n","_itemType"]; _deleteIndexes = []; _lbcontrol = _display displayctrl _lbIDC; _n = (lnbSize _lbcontrol) select 0; _j = 0; for [{_i=_n},{_i>=0}, {_i = _i - 1} ] do { _item = _lbcontrol lnbData [_i,1]; _itemType = [_item] call _itemSlot; if ([_itemType] call _matchesFilter) then { _j = _j + 1; _deleteIndexes set [(_j-1), _i]; }; }; LB_CTRL = _lbcontrol; { _lbcontrol lnbDeleteRow _x; } forEach _deleteIndexes; }; _itemPicture = { private ["_item"]; _item = _this select 0; _return = ""; if ([_item] call _isWeapon) then { _return = getText(configfile >> "cfgWeapons" >> _item >> "picture"); }; if ([_item] call _isMagazine) then { _return = getText(configfile >> "cfgMagazines" >> _item >> "picture"); }; _return; }; _itemDescription = { private ["_inputItem","_return"]; _inputItem = _this select 0; _return = ""; if ([_inputItem] call _isWeapon) then { _name = getText(configfile >> "cfgWeapons" >> _inputItem >> "descriptionShort"); _return = (_name); }; if ([_inputItem] call _isMagazine) then { _name = getText(configfile >> "cfgMagazines" >> _inputItem >> "descriptionShort"); _return = (_name); }; _return; }; _itemName = { private ["_item"]; _item = _this select 0; _return = ""; if ([_item] call _isWeapon) then { _name = getText(configfile >> "cfgWeapons" >> _item >> "displayName"); _return = ( _name); }; if ([_item] call _isMagazine) then { _name = getText(configfile >> "cfgMagazines" >> _item >> "displayName"); _return = ( _name); }; _return; }; _displayItemIcon = { private ["_selectedItem","_itemPicturePath"]; _selectedItem = [] call _lbSelectedItem; _itemPicturePath = [_selectedItem] call _itemPicture; _pictureControl = _display displayctrl 1104; _pictureControl ctrlSetText _itemPicturePath; }; _displayItemDescription = { private ["_descriptionControl","_selectedItemDescription","_selectedItemN"]; _selectedItemN = [] call _lbSelectedItem; _selectedItemDescription = [_selectedItemN] call _itemDescription; _descriptionControl = _display displayctrl 1106; _descriptionControl ctrlSetStructuredText parseText(_selectedItemDescription); }; _displayItemName = { private ["_nameControl","_itemDescription"]; _selectedItem = [] call _lbSelectedItem; _itemName = [_selectedItem] call _itemName; _nameControl = _display displayctrl 1101; _nameControl ctrlSetText _itemName; }; _output = true; _lbIDC = 105; switch _event do { case "initDialog": { [] call _showAllIDCs; }; case "onLoad": { [] call _weaponsLBSetFocus; [] call _arrowsEnable; [] call _displayItemIcon; [] call _displayItemName; [] call _displayItemDescription; [] call _showAllIDCs; //[] call _arrowsEnable; //[] call _highlightGearSlots; }; //used for buyUnits case "filter": { IGUI_GEAR_activeFilter = IGUI_GEAR_activeFilter + 1; if (IGUI_GEAR_activeFilter > ((count _filterSets)-1 )) then { IGUI_GEAR_activeFilter = 0; }; _doFilter = true; }; //changing IGUI_GEAR_activeFilter, but not filter picture (used for buyGear) case "filterNotSet": { IGUI_GEAR_activeFilter = IGUI_GEAR_activeFilter + 1; if (IGUI_GEAR_activeFilter > ((count _filterSets)-1 )) then { IGUI_GEAR_activeFilter = 0; }; //_doFilter = true; }; case "filter_left": { IGUI_GEAR_activeFilter = IGUI_GEAR_activeFilter - 1; if (IGUI_GEAR_activeFilter < 0) then { IGUI_GEAR_activeFilter = ((count _filterSets)-1 ); }; _doFilter = true; }; case "onFocus": { [] call _weaponsLBSetFocus; //[] call _arrowsEnable; }; case "onKeyDown": { [] call _keyActions; }; case "onLBSelChanged": { [] call _displayItemIcon; [] call _displayItemName; [] call _displayItemDescription; //[] call _arrowsEnable; [] call _highlightGearSlots; }; case "onKillFocus": { [] call _weaponsLBSetFocus; }; default { }; }; /* Filter removed, moving to engine */ if _doFilter then { (_filterSets select IGUI_GEAR_activeFilter) call _setFilterGlobals; // [] call _filterItems; // [] call _setFilterIcon; }; _output; false;