Add ACE Arsenal stats (#6110)
* Add test class
* Add stats mockup
* Merge branch 'master' of https://github.com/acemod/ACE3 into arsenalStats
* Finish mockup, add basic hide/show logic
* Add base for stats
* Use CBA EHs for stats to allow 3rd party mods of it
* Add handleStats and most of the UI behaviors for stats
* Continue work on stats
* Add container stats
* Add page support for stats
* Add text for the ROF stat
* Add accuracy in MOA for the accuracy stat
* Change accuracy shown number to 1 decimal instead of 2
* Add MIL in the dispersion stat text
* Change stats layout, remove dummy text strings
* Add some AB stats
* Remove last test string
* Replace configExtremes by normal lookup where it's relevant
* Add "undefined value" string when AB stat isn't present
Mostly for laucnhers
* Fix typo in preInit
* Change drag model stat to ballistic coef
* Fix issue with unused stats, change text to white when bar is present
* Rewrite some part of handleStats
Reason: add support for conditions, less redundant code, less reasons for dedmen to emasculate me
* Re-add _hideUnusedFnc, handle empty stats arrays
* Pass args to stat conditions, add test condition stat
* Add hearing related stats
* Remove the padding between stats and the stat bar / text
* Add strings for stats
* Change stats window to fit baer's suggestion
* Algin the close stats button, add missing strings
* Finish code review
* Add missing newline
* Remove duplicate strings
* Add explosive range stat
* Use proper string for the explo range stat
* Fix capitalization for ctrlParent
* Fix conditional stats blocking other stats
* Add better integration for ballistics, hearing and explosive stats
* Replace the private array in handleStat by params
* Add backblast stats
* Add backblast stat strings
* Add flashlight map color and g-force reduction stats
* Shorten preInit
* Change stats close button to fit arsenal design
* Improve stats page indicator look
* Rework how stats are stored and retrieved
* Remove args config entry, add priority entry, add vanilla weapon stats
* Add vanilla container stats
* Remove some lines in preInit
* Add ballistics stats
* Add hearing stats
* Remove uneeded config entries
* Add explosive range stat
* Add backblast stats
* Add spaces after semicolons in statements
To make JJ happy because I don't care.
* Add flashlights map color stat
* Add gforce reduction stat
FINALLY FUCKING DONE
* Fix headers for the new stats funcs
* Add add / remove stat API
* Fix typo in removeStat header
* Remove uneeded inline func
* Clean up add / remove stat
* Move all CfgACEArsenalStats entries to their own file
* Replace STR_ACE_Ballistics_statAmmo by a BI string
* Add script profiler related macro and code
* Use the highest ballistic coef instead of first one defined
* Add support for future ammo displayname
* Add ACE_standardAtmosphere for ballistic coef
* Add mag muzzle velocity stat
* Add weapon muzzle velocity stat
* Add comment explaining the ENABLE_PERF_PROFILING macro
* Change cfgACEArsenalStats to ACE_Arsenal_Stats
* Make JJ less pissy about spaces around =
* Fix indentation in weaponMuzzleVelocity, use param
* Use GVAR and EGVAR when appropriate
* Prefix all stats except the base class
* Fix Merge
* Fix aspect ratio scaling of stats panel
* Minor fixes
2018-02-15 16:03:22 +00:00
|
|
|
/*
|
|
|
|
* Author: Alganthe
|
|
|
|
* Add a stat to ACE Arsenal.
|
|
|
|
*
|
|
|
|
* Arguments:
|
|
|
|
* 0: Tabs to add the stat to (ARRAY of ARRAYS)
|
|
|
|
* 0.1: Left tab indexes (ARRAY of NUMBERS)
|
|
|
|
* 0.2 Right tab indexes (ARRAY of NUMBERS)
|
|
|
|
* 1: Stat class (STRING) (A unique string for each stat)
|
|
|
|
* 2: Config entries to pass (ARRAY of STRINGS)
|
|
|
|
* 3: Title (STRING)
|
|
|
|
* 4: Show bar / show text bools (ARRAY of BOOLS)
|
|
|
|
* 4.1 Show bar (BOOL)
|
|
|
|
* 4.2 Show text (BOOL)
|
|
|
|
* 5: Array of statements (ARRAY of ARRAYS)
|
|
|
|
* 5.1: Bar code (CODE)
|
|
|
|
* 5.2 Text code (CODE)
|
|
|
|
* 5.3 Condition code (CODE)
|
|
|
|
* 6: Priority (NUMBER) (Optional)
|
|
|
|
*
|
|
|
|
* Return Value:
|
|
|
|
* 0: Array of IDs (ARRAY of STRINGS)
|
|
|
|
*
|
|
|
|
* Example:
|
|
|
|
* [[[0,1,2], [7]], "scopeStat", ["scope"], "Scope", [false, true], [{}, {
|
|
|
|
params ["_statsArray", "_itemCfg"];
|
|
|
|
getNumber (_itemCfg >> _statsArray select 0)
|
|
|
|
}, {true}]] call ACE_arsenal_fnc_addStat
|
|
|
|
*
|
|
|
|
* Public: Yes
|
|
|
|
*/
|
|
|
|
#include "script_component.hpp"
|
|
|
|
params [
|
|
|
|
["_tabs", [[], []], [[]], 2],
|
|
|
|
["_class", "", [""]],
|
|
|
|
["_stats", [], [[]]],
|
|
|
|
["_title", "", [""]],
|
|
|
|
["_bools", [false, false], [[]], 2],
|
|
|
|
["_statements", [{}, {}, {true}], [[]], 3],
|
|
|
|
["_priority", 0, [0]]
|
|
|
|
];
|
|
|
|
|
|
|
|
_tabs params [
|
|
|
|
["_leftTabs", [], [[]]],
|
|
|
|
["_rightTabs", [], [[]]]
|
|
|
|
];
|
|
|
|
|
|
|
|
_bools params [["_showBar", false, [false]], ["_showText", false, [false]]];
|
|
|
|
|
|
|
|
_statements params [
|
|
|
|
["_barStatement", {}, [{}]],
|
|
|
|
["_textStatement", {}, [{}]],
|
|
|
|
["_condition", {true}, [{}]]
|
|
|
|
];
|
|
|
|
|
2018-02-24 05:30:15 +00:00
|
|
|
call FUNC(compileStats);
|
Add ACE Arsenal stats (#6110)
* Add test class
* Add stats mockup
* Merge branch 'master' of https://github.com/acemod/ACE3 into arsenalStats
* Finish mockup, add basic hide/show logic
* Add base for stats
* Use CBA EHs for stats to allow 3rd party mods of it
* Add handleStats and most of the UI behaviors for stats
* Continue work on stats
* Add container stats
* Add page support for stats
* Add text for the ROF stat
* Add accuracy in MOA for the accuracy stat
* Change accuracy shown number to 1 decimal instead of 2
* Add MIL in the dispersion stat text
* Change stats layout, remove dummy text strings
* Add some AB stats
* Remove last test string
* Replace configExtremes by normal lookup where it's relevant
* Add "undefined value" string when AB stat isn't present
Mostly for laucnhers
* Fix typo in preInit
* Change drag model stat to ballistic coef
* Fix issue with unused stats, change text to white when bar is present
* Rewrite some part of handleStats
Reason: add support for conditions, less redundant code, less reasons for dedmen to emasculate me
* Re-add _hideUnusedFnc, handle empty stats arrays
* Pass args to stat conditions, add test condition stat
* Add hearing related stats
* Remove the padding between stats and the stat bar / text
* Add strings for stats
* Change stats window to fit baer's suggestion
* Algin the close stats button, add missing strings
* Finish code review
* Add missing newline
* Remove duplicate strings
* Add explosive range stat
* Use proper string for the explo range stat
* Fix capitalization for ctrlParent
* Fix conditional stats blocking other stats
* Add better integration for ballistics, hearing and explosive stats
* Replace the private array in handleStat by params
* Add backblast stats
* Add backblast stat strings
* Add flashlight map color and g-force reduction stats
* Shorten preInit
* Change stats close button to fit arsenal design
* Improve stats page indicator look
* Rework how stats are stored and retrieved
* Remove args config entry, add priority entry, add vanilla weapon stats
* Add vanilla container stats
* Remove some lines in preInit
* Add ballistics stats
* Add hearing stats
* Remove uneeded config entries
* Add explosive range stat
* Add backblast stats
* Add spaces after semicolons in statements
To make JJ happy because I don't care.
* Add flashlights map color stat
* Add gforce reduction stat
FINALLY FUCKING DONE
* Fix headers for the new stats funcs
* Add add / remove stat API
* Fix typo in removeStat header
* Remove uneeded inline func
* Clean up add / remove stat
* Move all CfgACEArsenalStats entries to their own file
* Replace STR_ACE_Ballistics_statAmmo by a BI string
* Add script profiler related macro and code
* Use the highest ballistic coef instead of first one defined
* Add support for future ammo displayname
* Add ACE_standardAtmosphere for ballistic coef
* Add mag muzzle velocity stat
* Add weapon muzzle velocity stat
* Add comment explaining the ENABLE_PERF_PROFILING macro
* Change cfgACEArsenalStats to ACE_Arsenal_Stats
* Make JJ less pissy about spaces around =
* Fix indentation in weaponMuzzleVelocity, use param
* Use GVAR and EGVAR when appropriate
* Prefix all stats except the base class
* Fix Merge
* Fix aspect ratio scaling of stats panel
* Minor fixes
2018-02-15 16:03:22 +00:00
|
|
|
private _returnArray = [];
|
|
|
|
|
|
|
|
private _fnc_addToTabs = {
|
|
|
|
params ["_tabsList", "_tabsToAddTo", "_sideString", "_returnIndex"];
|
|
|
|
{
|
|
|
|
private _currentTab = _tabsList select _x;
|
|
|
|
|
|
|
|
private _finalID = [_class, _sideString, [str _x, format ["0%1", _x]] select (_x < 10)] joinString "";
|
|
|
|
|
|
|
|
if ({{_x select 0 == _finalID} count _x > 0} count _currentTab > 0) then {
|
|
|
|
TRACE_1("A stat with this ID already exists", _finalID);
|
|
|
|
} else {
|
|
|
|
|
|
|
|
private _arrayToSave = +_finalArray;
|
|
|
|
_arrayToSave set [0, _finalID];
|
|
|
|
_returnArray pushBack _finalID;
|
|
|
|
|
|
|
|
// Add to existing page if there's enough space, otherwise create a new page
|
|
|
|
if ({count _x < 5} count _currentTab > 0) then {
|
|
|
|
{
|
|
|
|
if (count _x < 5) exitWith {
|
|
|
|
(_currentTab select _forEachIndex) append [_arrayToSave];
|
|
|
|
};
|
|
|
|
} foreach _currentTab;
|
|
|
|
} else {
|
|
|
|
_currentTab pushBack [_arrayToSave];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
} foreach _tabsToAddTo;
|
|
|
|
};
|
|
|
|
|
|
|
|
private _finalArray = ["", _stats, _title, [_showBar, _showText], [_barStatement, _textStatement, _condition], _priority];
|
|
|
|
|
|
|
|
if (count _leftTabs > 0) then {
|
2018-02-24 05:30:15 +00:00
|
|
|
[GVAR(statsListLeftPanel), _leftTabs, "L", 0] call _fnc_addToTabs;
|
Add ACE Arsenal stats (#6110)
* Add test class
* Add stats mockup
* Merge branch 'master' of https://github.com/acemod/ACE3 into arsenalStats
* Finish mockup, add basic hide/show logic
* Add base for stats
* Use CBA EHs for stats to allow 3rd party mods of it
* Add handleStats and most of the UI behaviors for stats
* Continue work on stats
* Add container stats
* Add page support for stats
* Add text for the ROF stat
* Add accuracy in MOA for the accuracy stat
* Change accuracy shown number to 1 decimal instead of 2
* Add MIL in the dispersion stat text
* Change stats layout, remove dummy text strings
* Add some AB stats
* Remove last test string
* Replace configExtremes by normal lookup where it's relevant
* Add "undefined value" string when AB stat isn't present
Mostly for laucnhers
* Fix typo in preInit
* Change drag model stat to ballistic coef
* Fix issue with unused stats, change text to white when bar is present
* Rewrite some part of handleStats
Reason: add support for conditions, less redundant code, less reasons for dedmen to emasculate me
* Re-add _hideUnusedFnc, handle empty stats arrays
* Pass args to stat conditions, add test condition stat
* Add hearing related stats
* Remove the padding between stats and the stat bar / text
* Add strings for stats
* Change stats window to fit baer's suggestion
* Algin the close stats button, add missing strings
* Finish code review
* Add missing newline
* Remove duplicate strings
* Add explosive range stat
* Use proper string for the explo range stat
* Fix capitalization for ctrlParent
* Fix conditional stats blocking other stats
* Add better integration for ballistics, hearing and explosive stats
* Replace the private array in handleStat by params
* Add backblast stats
* Add backblast stat strings
* Add flashlight map color and g-force reduction stats
* Shorten preInit
* Change stats close button to fit arsenal design
* Improve stats page indicator look
* Rework how stats are stored and retrieved
* Remove args config entry, add priority entry, add vanilla weapon stats
* Add vanilla container stats
* Remove some lines in preInit
* Add ballistics stats
* Add hearing stats
* Remove uneeded config entries
* Add explosive range stat
* Add backblast stats
* Add spaces after semicolons in statements
To make JJ happy because I don't care.
* Add flashlights map color stat
* Add gforce reduction stat
FINALLY FUCKING DONE
* Fix headers for the new stats funcs
* Add add / remove stat API
* Fix typo in removeStat header
* Remove uneeded inline func
* Clean up add / remove stat
* Move all CfgACEArsenalStats entries to their own file
* Replace STR_ACE_Ballistics_statAmmo by a BI string
* Add script profiler related macro and code
* Use the highest ballistic coef instead of first one defined
* Add support for future ammo displayname
* Add ACE_standardAtmosphere for ballistic coef
* Add mag muzzle velocity stat
* Add weapon muzzle velocity stat
* Add comment explaining the ENABLE_PERF_PROFILING macro
* Change cfgACEArsenalStats to ACE_Arsenal_Stats
* Make JJ less pissy about spaces around =
* Fix indentation in weaponMuzzleVelocity, use param
* Use GVAR and EGVAR when appropriate
* Prefix all stats except the base class
* Fix Merge
* Fix aspect ratio scaling of stats panel
* Minor fixes
2018-02-15 16:03:22 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
if (count _rightTabs > 0) then {
|
2018-02-24 05:30:15 +00:00
|
|
|
[GVAR(statsListRightPanel), _rightTabs, "R", 1] call _fnc_addToTabs;
|
Add ACE Arsenal stats (#6110)
* Add test class
* Add stats mockup
* Merge branch 'master' of https://github.com/acemod/ACE3 into arsenalStats
* Finish mockup, add basic hide/show logic
* Add base for stats
* Use CBA EHs for stats to allow 3rd party mods of it
* Add handleStats and most of the UI behaviors for stats
* Continue work on stats
* Add container stats
* Add page support for stats
* Add text for the ROF stat
* Add accuracy in MOA for the accuracy stat
* Change accuracy shown number to 1 decimal instead of 2
* Add MIL in the dispersion stat text
* Change stats layout, remove dummy text strings
* Add some AB stats
* Remove last test string
* Replace configExtremes by normal lookup where it's relevant
* Add "undefined value" string when AB stat isn't present
Mostly for laucnhers
* Fix typo in preInit
* Change drag model stat to ballistic coef
* Fix issue with unused stats, change text to white when bar is present
* Rewrite some part of handleStats
Reason: add support for conditions, less redundant code, less reasons for dedmen to emasculate me
* Re-add _hideUnusedFnc, handle empty stats arrays
* Pass args to stat conditions, add test condition stat
* Add hearing related stats
* Remove the padding between stats and the stat bar / text
* Add strings for stats
* Change stats window to fit baer's suggestion
* Algin the close stats button, add missing strings
* Finish code review
* Add missing newline
* Remove duplicate strings
* Add explosive range stat
* Use proper string for the explo range stat
* Fix capitalization for ctrlParent
* Fix conditional stats blocking other stats
* Add better integration for ballistics, hearing and explosive stats
* Replace the private array in handleStat by params
* Add backblast stats
* Add backblast stat strings
* Add flashlight map color and g-force reduction stats
* Shorten preInit
* Change stats close button to fit arsenal design
* Improve stats page indicator look
* Rework how stats are stored and retrieved
* Remove args config entry, add priority entry, add vanilla weapon stats
* Add vanilla container stats
* Remove some lines in preInit
* Add ballistics stats
* Add hearing stats
* Remove uneeded config entries
* Add explosive range stat
* Add backblast stats
* Add spaces after semicolons in statements
To make JJ happy because I don't care.
* Add flashlights map color stat
* Add gforce reduction stat
FINALLY FUCKING DONE
* Fix headers for the new stats funcs
* Add add / remove stat API
* Fix typo in removeStat header
* Remove uneeded inline func
* Clean up add / remove stat
* Move all CfgACEArsenalStats entries to their own file
* Replace STR_ACE_Ballistics_statAmmo by a BI string
* Add script profiler related macro and code
* Use the highest ballistic coef instead of first one defined
* Add support for future ammo displayname
* Add ACE_standardAtmosphere for ballistic coef
* Add mag muzzle velocity stat
* Add weapon muzzle velocity stat
* Add comment explaining the ENABLE_PERF_PROFILING macro
* Change cfgACEArsenalStats to ACE_Arsenal_Stats
* Make JJ less pissy about spaces around =
* Fix indentation in weaponMuzzleVelocity, use param
* Use GVAR and EGVAR when appropriate
* Prefix all stats except the base class
* Fix Merge
* Fix aspect ratio scaling of stats panel
* Minor fixes
2018-02-15 16:03:22 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
_returnArray
|