ACE3/addons/arsenal/functions/fnc_buttonImport.sqf
Grim d33a158e2e
Arsenal - Favorites System (#9307)
* improve page handling

* drop MAX_STATS_PER_PAGE for now

* hide stats box when empty

* improve hiding

* improve _fnc_hideUnused

* condition

* prevent page overflow

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

* favorites var

* function prep

* favorites only

* improve favorites adding, add include

* fix stupid

* fix color setting (todo: lnb color)

* add button, finalize

* setting tooltip

* stringtable again

* fix setting overwrite, improve tooltip

* fix losing weapon items

* fix macro

* fix setting to intended overwrite

* remove unnecessary private

* docs

* more docs

* is

* improve button text

* docs

* fix tooltip not showing unless menuBar was clicked

* improve weapon accessory lookup

* empty line

* update refresh calls

* fix left panel

* cleanup currentCargo

* use BI string for favorites

* BI strings again

* no favorites for face/voice/insignia

* stringtable again

* add missing setColorRight

* Add comment for favorites setup

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2023-08-19 23:56:59 -04:00

84 lines
2.6 KiB
Plaintext

#include "script_component.hpp"
#include "..\defines.hpp"
/*
* Author: Alganthe, johnb43
* Import loadout / default loadouts list from clipboard.
*
* Arguments:
* 0: Arsenal display <DISPLAY>
*
* Return Value:
* None
*
* Public: No
*/
params ["_display"];
// Can be either a singular loadout or an array of loadouts
private _extendedLoadout = call compile copyFromClipboard;
// If error, exit
if (isNil "_extendedLoadout" || {!(_extendedLoadout isEqualType [])}) exitWith {
[_display, LLSTRING(importFormatError)] call FUNC(message);
};
if (GVAR(shiftState) && {is3DEN}) then {
// Supports CBA extended loadout or getUnitLoadout arrays
{
if (
count _x == 2 &&
{(_x select 0) isEqualType ""} &&
{(_x select 0) != ""} &&
{(_x select 1) isEqualType []} &&
{count (_x select 1) in [2, 10]}
) then {
_x call FUNC(addDefaultLoadout);
};
} forEach _extendedLoadout;
[_display, LLSTRING(importedDefault)] call FUNC(message);
set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]];
} else {
// If _extendedLoadout is in getUnitLoadout array, change into CBA extended loadout array
if (count _extendedLoadout == 10) then {
_extendedLoadout = [_extendedLoadout, createHashMap];
};
// Check if CBA extended loadout array
if ((count _extendedLoadout) == 2) then {
[GVAR(center), _extendedLoadout] call CBA_fnc_setLoadout;
// Update current item list and unique items
[true] call FUNC(refresh);
_extendedLoadout params ["_loadout", "_extendedInfo"];
// Reapply insignia
if (QGVAR(insignia) in _extendedInfo) then {
GVAR(currentInsignia) = _extendedInfo getOrDefault [QGVAR(insignia), ""];
} else {
[GVAR(center), ""] call BIS_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call BIS_fnc_setUnitInsignia;
};
// Save face
if (QGVAR(face) in _extendedInfo) then {
GVAR(currentFace) = _extendedInfo getOrDefault [QGVAR(face), GVAR(currentFace)];
};
// Save voice
if (QGVAR(voice) in _extendedInfo) then {
GVAR(currentVoice) = _extendedInfo getOrDefault [QGVAR(voice), GVAR(currentVoice)];
};
// Fill left panel
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);
[_display, LLSTRING(importedCurrent)] call FUNC(message);
};
};
[QGVAR(loadoutImported), [_display, GVAR(shiftState) && {is3DEN}]] call CBA_fnc_localEvent;