ACE3/addons/arsenal/functions/fnc_statTextStatement_scopeVisionMode.sqf
Grim e06c6f7835
General - Replace toLower with toLowerANSI where applicable (#9790)
* General - Replace toLower with toLowerANSI where applicable

* whoops

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/repair/functions/fnc_setHitPointDamage.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/repair/dev/draw_showRepairInfo.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/tagging/XEH_preStart.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/vehicle_damage/functions/fnc_handleCookoff.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* Update addons/tagging/XEH_preStart.sqf

Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>

* comparment -> compartment

* Update fnc_showHud.sqf

* Update fnc_registerObjects.sqf

* Update addons/common/functions/fnc_cbaSettings_settingChanged.sqf

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
2024-03-07 22:08:13 +01:00

77 lines
2.3 KiB
Plaintext

#include "..\script_component.hpp"
/*
* Author: Dedmen, johnb43
* Text statement for the scope Night vision support stat.
*
* Arguments:
* 0: Not used
* 1: Item config path <CONFIG>
*
* Return Value:
* Stat Text <STRING>
*
* Public: No
*/
params ["", "_config"];
TRACE_1("statTextStatement_scopeVisionMode",_config);
private _opticsModes = ("true" configClasses (_config >> "ItemInfo" >> "OpticsModes")) apply {
private _visionMode = getArray (_x >> "visionMode") apply {toLowerANSI _x};
[
getNumber (_x >> "useModelOptics") == 1, // Is in optics
_visionMode isEqualTo [], // Optional NVG
"nvg" in _visionMode, // Integrated NVG
"ti" in _visionMode // Integrated Thermal
]
};
private _primaryNVGIntegrated = false;
private _primaryNVGSupported = false;
private _primaryTiIntegrated = false;
private _secondaryNVGSupported = false;
{
_x params ["_isPrimary", "_optionalNvg", "_integratedNVG", "_integratedTi"];
if (_isPrimary) then {
if (_integratedNVG) then {
_primaryNVGIntegrated = true;
};
if (_optionalNvg) then {
_primaryNVGSupported = true;
};
if (_integratedTi) then {
_primaryTiIntegrated = true;
};
} else {
if (_optionalNvg) then {
_secondaryNVGSupported = true;
};
};
} forEach _opticsModes;
// Detecting Primary by useModelOptics works in 99.9% of cases.
// But on some scopes (from one specific mod) even the primary mode has useModelOptics=false
// So we have this workaround
// If we only have a single mode and it's a secondary, then consider it primary.
if (count _opticsModes == 1 && {!(_opticsModes select 0 select 0)}) then {
_primaryNVGSupported = _secondaryNVGSupported;
};
// If all modes support NVGs, then the primary also supports it
if (!_primaryNVGSupported && {(_opticsModes select {_x select 1}) isEqualTo _opticsModes}) then {
_primaryNVGSupported = true;
};
if (_primaryTiIntegrated && _primaryNVGIntegrated) exitWith {LLSTRING(statVisionMode_intPrimTi)};
if (_primaryTiIntegrated) exitWith {LLSTRING(statVisionMode_ti)};
if (_primaryNVGIntegrated) exitWith {LLSTRING(statVisionMode_intPrim)};
if (_primaryNVGSupported) exitWith {LLSTRING(statVisionMode_supPrim)};
if (_secondaryNVGSupported) exitWith {LLSTRING(statVisionMode_supSec)};
LLSTRING(statVisionMode_NoSup)