#include "..\script_component.hpp" #include "..\defines.hpp" /* * Author: Alganthe, Brett Mayson, johnb43 * Fills the sort menu. * * Arguments: * 0: Arsenal display * 1: Tab control * 2: Sort control * * Return Value: * None * * Public: No */ params ["_display", "_control", "_sortCtrl", "_sortDirectionCtrl"]; lbClear _sortCtrl; lbClear _sortDirectionCtrl; private _right = false; private _rightSort = ctrlIDC _sortCtrl == IDC_sortRightTab; // Handle sorting direction private _lastSortDirection = [GVAR(lastSortDirectionLeft), GVAR(lastSortDirectionRight)] select _rightSort; private _sortIndex = 0; private _index = -1; { _x params ["_sortName", "_displayName", "_direction"]; _index = _sortDirectionCtrl lbAdd _displayName; _sortDirectionCtrl lbSetData [_index, _sortName]; _sortDirectionCtrl lbSetValue [_index, _direction]; if (_direction == _lastSortDirection) then { _sortIndex = _index; }; } forEach [[QGVAR(descending), LLSTRING(sortDescending), DESCENDING], [QGVAR(ascending), LLSTRING(sortAscending), ASCENDING]]; // Prevent FUNC(sortPanel) being called twice in succession GVAR(ignoreFirstSortPanelCall) = true; _sortDirectionCtrl lbSetCurSel _sortIndex; // Handle sorting private _sorts = if (_rightSort && {GVAR(currentLeftPanel) in [IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack]}) then { _right = true; // Right panel for uniforms, vest and backpacks GVAR(sortListRightPanel) select ( switch (GVAR(currentRightPanel)) do { case IDC_buttonOptic: {0}; case IDC_buttonItemAcc: {1}; case IDC_buttonMuzzle: {2}; case IDC_buttonBipod: {3}; case IDC_buttonCurrentMag; case IDC_buttonCurrentMag2; case IDC_buttonMag; case IDC_buttonMagALL: {4}; case IDC_buttonThrow: {5}; case IDC_buttonPut: {6}; case IDC_buttonMisc: {7}; } ) } else { private _idc = ctrlIDC _control; switch (true) do { // Right panel for weapons case (_rightSort): { GVAR(sortListRightPanel) select ( switch (_idc) do { case IDC_buttonOptic: {0}; case IDC_buttonItemAcc: {1}; case IDC_buttonMuzzle: {2}; case IDC_buttonBipod: {3}; case IDC_buttonCurrentMag; case IDC_buttonCurrentMag2; case IDC_buttonMag; case IDC_buttonMagALL: {4}; case IDC_buttonThrow: {5}; case IDC_buttonPut: {6}; case IDC_buttonMisc: {7}; } ) }; // Left panel default { GVAR(sortListLeftPanel) select ([ IDC_buttonPrimaryWeapon, IDC_buttonHandgun, IDC_buttonSecondaryWeapon, IDC_buttonUniform, IDC_buttonVest, IDC_buttonBackpack, IDC_buttonHeadgear, IDC_buttonGoggles, IDC_buttonNVG, IDC_buttonBinoculars, IDC_buttonMap, IDC_buttonGPS, IDC_buttonRadio, IDC_buttonCompass, IDC_buttonWatch, IDC_buttonFace, IDC_buttonVoice, IDC_buttonInsignia ] find _idc) }; } }; private _lastSort = [GVAR(lastSortLeft), GVAR(lastSortRight)] select _rightSort; _sortIndex = 0; { if (_x isEqualTo []) then { continue; }; _x params ["_sortName", "_displayName", "", "_condition"]; // Check if sort if available for this panel if ([_right] call _condition) then { _index = _sortCtrl lbAdd _displayName; _sortCtrl lbSetData [_index, _sortName]; if (_displayName == _lastSort) then { _sortIndex = _index; }; }; } forEach _sorts; _sortCtrl lbSetCurSel _sortIndex;