diff --git a/addons/arsenal/functions/fnc_addStat.sqf b/addons/arsenal/functions/fnc_addStat.sqf index e97638d50a..3e62e2a438 100644 --- a/addons/arsenal/functions/fnc_addStat.sqf +++ b/addons/arsenal/functions/fnc_addStat.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" /* - * Author: Alganthe, johnb43 + * Author: Alganthe, johnb43, LinkIsGrim * Adds a stat to ACE Arsenal. * * Arguments: @@ -76,20 +76,13 @@ private _fnc_addToTabs = { _currentTab = _tabsList select _x; // Find if there is an entry with same ID - if (_currentTab findIf {_x findIf {_x select 0 == _statName} != -1} != -1) then { + if (_currentTab findIf {_x select 5 == _statName} != -1) then { TRACE_1("A stat with this ID already exists", _statName); } else { _stat = +_finalArray; - _stat set [0, _statName]; + _stat set [5, _statName]; - private _index = _currentTab findIf {count _x < 5}; - - // Add to existing page if there's enough space, otherwise create a new page - if (_index != -1) then { - (_currentTab select _index) pushBack _stat; - } else { - _currentTab pushBack [_stat]; - }; + _currentTab pushBack _stat; _return pushBack _statName; @@ -99,7 +92,7 @@ private _fnc_addToTabs = { } forEach _tabsToAddTo; }; -private _finalArray = ["", _stats, _title, [_showBar, _showText], [_barStatement, _textStatement, _condition], _priority]; +private _finalArray = [_priority, _stats, _title, [_showBar, _showText], [_barStatement, _textStatement, _condition], ""]; if (_leftTabs isNotEqualTo []) then { [GVAR(statsListLeftPanel), _leftTabs, "L"] call _fnc_addToTabs; @@ -109,7 +102,6 @@ if (_rightTabs isNotEqualTo []) then { [GVAR(statsListRightPanel), _rightTabs, "R"] call _fnc_addToTabs; }; -private _statsFlat = []; private _stats = []; private _tabToChange = []; @@ -123,34 +115,10 @@ private _tabToChange = []; GVAR(statsListLeftPanel) }; - _statsFlat = []; + _stats = _tabToChange select _tab; - // Get all stats of a tab into a single array - { - _statsFlat append _x; - } forEach (_tabToChange select _tab); - - // Put priority up front - { - reverse _x; - } forEach _statsFlat; - - // Sort numerically - _statsFlat sort false; - - // Put it back at the rear - { - reverse _x; - } forEach _statsFlat; - - _stats = []; - - // Group stats into groups of 5 - for "_index" from 0 to count _statsFlat - 1 step 5 do { - _stats pushBack (_statsFlat select [_index, _index + 5]); - }; - - _tabToChange set [_tab, _stats]; + // Sort by priority + _stats sort false; } forEach _changes; _return diff --git a/addons/arsenal/functions/fnc_compileStats.sqf b/addons/arsenal/functions/fnc_compileStats.sqf index 0462b13e03..7b9eeac366 100644 --- a/addons/arsenal/functions/fnc_compileStats.sqf +++ b/addons/arsenal/functions/fnc_compileStats.sqf @@ -23,7 +23,7 @@ private _fnc_addToTabs = { { // Make stat name _stat = +_finalArray; - _stat set [0, [_class, _tabSide, [str _x, format ["0%1", _x]] select (_x < 10)] joinString ""]; + _stat set [5, [_class, _tabSide, [str _x, format ["0%1", _x]] select (_x < 10)] joinString ""]; (_tabsList select _x) pushBack _stat; } forEach _tabsToAddTo; @@ -31,22 +31,12 @@ private _fnc_addToTabs = { // Sort by priority private _fnc_sortLists = { - params ["_tabsList"]; + params ["_tabs"]; { - // Put priority up front - { - reverse _x; - } forEach _x; - // Sort numerically _x sort false; - - // Put it back at the rear - { - reverse _x; - } forEach _x; - } forEach _tabsList; + } forEach _tabs; }; private _statsListLeftPanel = [ @@ -101,7 +91,7 @@ private _priority = 0; _condition = compile _condition; }; - _finalArray = ["", _stats, _displayName, [_showBar, _showText], [{}, {}, _condition], _priority]; + _finalArray = [_priority, _stats, _displayName, [_showBar, _showText], [{}, {}, _condition], ""]; if (_showBar) then { (_finalArray select 4) set [0, compile (getText (_x >> "barStatement"))]; diff --git a/addons/arsenal/functions/fnc_handleStats.sqf b/addons/arsenal/functions/fnc_handleStats.sqf index a89903b85f..a31a30bea4 100644 --- a/addons/arsenal/functions/fnc_handleStats.sqf +++ b/addons/arsenal/functions/fnc_handleStats.sqf @@ -99,7 +99,7 @@ private _fnc_handleStats = { call _fnc_hideEverything }; - GVAR(currentStatPage) = GVAR(currentStatPage) min floor ((count _statsTab) / 5); + GVAR(currentStatPage) = GVAR(currentStatPage) min floor ((count _statsTab) / 5); private _statsToDisplay = _statsTab select [GVAR(currentStatPage) * 5, 5]; @@ -113,7 +113,7 @@ private _fnc_handleStats = { private _textStatementResult = ""; { - _x params ["_ID", "_configEntry", "_title", "_bools", "_statements"]; + _x params ["", "_configEntry", "_title", "_bools", "_statements"]; _bools params ["_showBar", "_showText"]; _statements params [["_barStatement", {}, [{}]], ["_textStatement", {}, [{}]], ["_condition", {true}, [{}]]]; diff --git a/addons/arsenal/functions/fnc_removeStat.sqf b/addons/arsenal/functions/fnc_removeStat.sqf index 8c480c5a1b..ccbb34810e 100644 --- a/addons/arsenal/functions/fnc_removeStat.sqf +++ b/addons/arsenal/functions/fnc_removeStat.sqf @@ -25,7 +25,6 @@ private _stringCount = 0; private _tabSide = ""; private _tab = ""; private _tabToChange = []; -private _changes = []; { // Get tab info @@ -44,41 +43,5 @@ private _changes = []; }; // Delete stat - { - _x deleteAt (_x findIf {_x select 0 == _currentID}); - } forEach _tabToChange; - - // Store information, so that only tabs that were changed can be sorted again - _changes pushBackUnique [_tab, _tabSide]; + _tabToChange deleteAt (_tabToChange findIf {_x select 5 == _currentID}); } forEach _IDList; - -private _statsFlat = []; -private _stats = []; - -// Fill empty spots -{ - _x params ["_tab", "_tabSide"]; - - _tabToChange = if (_tabSide == "R") then { - GVAR(statsListRightPanel) - } else { - GVAR(statsListLeftPanel) - }; - - _statsFlat = []; - - // Get all stats of a tab into a single array - { - _statsFlat append _x; - } forEach (_tabToChange select _tab); - - // Priority has stayed intact, so no need to sort - _stats = []; - - // Group stats into groups of 5 - for "_index" from 0 to count _statsFlat - 1 step 5 do { - _stats pushBack (_statsFlat select [_index, _index + 5]); - }; - - _tabToChange set [_tab, _stats]; -} forEach _changes;