Add a 3DEN attribute to save defaultLoadoutsList, fix shared loadout check

This commit is contained in:
Josuan Albin
2017-11-04 01:43:15 +01:00
parent 033db02dc6
commit be6fcd669e
4 changed files with 108 additions and 83 deletions

View File

@ -14,5 +14,27 @@ class CfgPatches {
};
};
class Cfg3DEN {
class Mission {
class GVAR(DummyCategory) {
displayName="Dummy attribute, should never show up";
class AttributeCategories {
class ACE3_Arsenal {
class Attributes {
class GVAR(DefaultLoadoutsListAttribute) {
property = QGVAR(DefaultLoadoutsListAttribute);
value=0;
expression="if !(is3DEN) then {ace_arsenal_defaultLoadoutsList = _value};";
defaultValue="[]";
validate="none";
wikiType="[[Array]]";
};
};
};
};
};
};
};
#include "ui\RscAttributes.hpp"
#include "CfgEventHandlers.hpp"

View File

@ -9,53 +9,80 @@ if (isNil "_data" || {!(_data isEqualType [])}) exitWith {
[_display, "Wrong format given"] call FUNC(message);
};
if (count _data == 10) then {
GVAR(center) setUnitLoadout _data;
if (GVAR(shiftState) && {is3DEN}) then {
GVAR(currentItems) = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", [], [], [], [], [], []];
for "_index" from 0 to 15 do {
switch (_index) do {
case 0;
case 1;
case 2:{
GVAR(currentItems) set [_index, ((LIST_DEFAULTS select 0) select _index)];
};
case 3;
case 4;
case 5;
case 6;
case 7;
case 8;
case 9: {
GVAR(currentItems) set [_index, (LIST_DEFAULTS select _index) select 0];
{
if (
count _x == 2 &&
{_x select 0 isEqualType ""} &&
{_x select 1 isEqualType []} &&
{count (_x select 1) == 10}
) then {
};
case 10: {
{(GVAR(currentItems) select 15) pushBack _x} forEach (uniformItems GVAR(center));
};
case 11: {
{(GVAR(currentItems) select 16) pushBack _x} forEach (vestItems GVAR(center));
};
case 12: {
{(GVAR(currentItems) select 17) pushBack _x} forEach (backpackItems GVAR(center));
};
case 13: {
GVAR(currentItems) set [18, (primaryWeaponItems GVAR(center)) + (primaryWeaponMagazine GVAR(center))];
};
case 14: {
GVAR(currentItems) set [19, (secondaryWeaponItems GVAR(center)) + (secondaryWeaponMagazine GVAR(center))];
};
case 15: {
GVAR(currentItems) set [20, (handgunItems GVAR(center)) + (handgunMagazine GVAR(center))];
_x params ["_loadoutName", "_loadout"];
private _sameNameLoadoutsList = GVAR(defaultLoadoutsList) select {_x select 0 == _loadoutName};
if (count _sameNameLoadoutsList == 0) then {
GVAR(defaultLoadoutsList) pushBack [_loadoutName, _loadout];
} else {
GVAR(defaultLoadoutsList) set [GVAR(defaultLoadoutsList) find (_sameNameLoadoutsList select 0), _loadoutName, _loadout];
};
};
} foreach _data;
set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]];
} else {
if (count _data == 10) then {
GVAR(center) setUnitLoadout _data;
GVAR(currentItems) = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", [], [], [], [], [], []];
for "_index" from 0 to 15 do {
switch (_index) do {
case 0;
case 1;
case 2:{
GVAR(currentItems) set [_index, ((LIST_DEFAULTS select 0) select _index)];
};
case 3;
case 4;
case 5;
case 6;
case 7;
case 8;
case 9: {
GVAR(currentItems) set [_index, (LIST_DEFAULTS select _index) select 0];
};
case 10: {
{(GVAR(currentItems) select 15) pushBack _x} forEach (uniformItems GVAR(center));
};
case 11: {
{(GVAR(currentItems) select 16) pushBack _x} forEach (vestItems GVAR(center));
};
case 12: {
{(GVAR(currentItems) select 17) pushBack _x} forEach (backpackItems GVAR(center));
};
case 13: {
GVAR(currentItems) set [18, (primaryWeaponItems GVAR(center)) + (primaryWeaponMagazine GVAR(center))];
};
case 14: {
GVAR(currentItems) set [19, (secondaryWeaponItems GVAR(center)) + (secondaryWeaponMagazine GVAR(center))];
};
case 15: {
GVAR(currentItems) set [20, (handgunItems GVAR(center)) + (handgunMagazine GVAR(center))];
};
};
};
// Reapply insignia
[GVAR(center), ""] call bis_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call bis_fnc_setUnitInsignia;
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);
[_display, "Loadout imported from clipboard"] call FUNC(message); // TBL
};
// Reapply insignia
[GVAR(center), ""] call bis_fnc_setUnitInsignia;
[GVAR(center), GVAR(currentInsignia)] call bis_fnc_setUnitInsignia;
[_display, _display displayCtrl GVAR(currentLeftPanel)] call FUNC(fillLeftPanel);
[_display, "Loadout imported from clipboard"] call FUNC(message); // TBL
};

View File

@ -13,7 +13,7 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
if (is3DEN && {GVAR(currentLoadoutsTab) == IDC_buttonDefaultLoadouts}) then {
GVAR(defaultLoadoutsList) deleteAt (GVAR(defaultLoadoutsList) find ((GVAR(defaultLoadoutsList) select {_x select 0 == _loadoutName}) select 0));
set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]];
} else {
private _data = profileNamespace getVariable [QGVAR(saved_loadouts), []];
_data deleteAt (_data find ((_data select {_x select 0 == _loadoutName}) select 0));
@ -40,4 +40,3 @@ if (GVAR(currentLoadoutsTab) != IDC_buttonSharedLoadouts) then {
publicVariable QGVAR(sharedLoadoutsVars);
[(findDisplay IDD_ace_arsenal), format ["Loadout '%1' was unshared", _loadoutName]] call FUNC(message); // TBL
};

View File

@ -26,19 +26,10 @@ scopeName "main";
switch (GVAR(currentLoadoutsTab)) do {
case IDC_buttonMyLoadouts:{
if (count _sameNameLoadoutsList > 0) then {
{
for '_i' from 0 to (((lnbsize _contentPanelCtrl) select 0) - 1) do {
if ((_contentPanelCtrl lnbText [_i, 1]) == (_x select 0)) exitwith {
if ((_contentPanelCtrl lnbText [_i, 0]) != "") then {
[(findDisplay IDD_ace_arsenal), format ["A loadout of yours with the same name is being shared", _editBoxContent]] call FUNC(message); // TBL
breakOut "main";
};
};
};
} foreach _sameNameLoadoutsList;
private _similarSharedLoadouts = GVAR(sharedLoadoutsVars) select {_x == (profileName + _editBoxContent)};
if (count _similarSharedLoadouts > 0) exitWith {
[(findDisplay IDD_ace_arsenal), format ["You are sharing a loadout with this name", _editBoxContent]] call FUNC(message); // TBL
breakOut "main";
};
for "_dataIndex" from 0 to 10 do {
@ -90,10 +81,8 @@ switch (GVAR(currentLoadoutsTab)) do {
};
if (count _sameNameLoadoutsList == 0) then {
_data pushBack [_editBoxContent, _loadout];
} else {
_data set [_data find (_sameNameLoadoutsList select 0), [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _loadout]];
};
@ -129,8 +118,6 @@ switch (GVAR(currentLoadoutsTab)) do {
_sameNameLoadoutsList = GVAR(defaultLoadoutsList) select {_x select 0 == _editBoxContent};
TRACE_1("test", _sameNameLoadoutsList);
for "_dataIndex" from 0 to 10 do {
switch (_dataIndex) do {
@ -181,11 +168,8 @@ switch (GVAR(currentLoadoutsTab)) do {
if (count _sameNameLoadoutsList == 0) then {
LOG("weeee");
GVAR(defaultLoadoutsList) pushBack [_editBoxContent, _loadout];
} else {
LOG(":(");
GVAR(defaultLoadoutsList) set [GVAR(defaultLoadoutsList) find (_sameNameLoadoutsList select 0), [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _loadout]];
};
@ -212,25 +196,20 @@ switch (GVAR(currentLoadoutsTab)) do {
for '_i' from 0 to (((lnbsize _contentPanelCtrl) select 0) - 1) do {
if ((_contentPanelCtrl lnbText [_i, 1]) == _editBoxContent) exitwith {_contentPanelCtrl lnbSetCurSelRow _i};
};
set3DENMissionAttributes [[QGVAR(DummyCategory), QGVAR(DefaultLoadoutsListAttribute), GVAR(defaultLoadoutsList)]];
} else {
if (count _sameNameLoadoutsList == 0) then {
private _similarSharedLoadouts = GVAR(sharedLoadoutsVars) select {_x == (profileName + _editBoxContent)};
if (count _similarSharedLoadouts > 0) exitWith {
[(findDisplay IDD_ace_arsenal), format ["You are sharing a loadout with this name", _editBoxContent]] call FUNC(message); // TBL
breakOut "main";
};
if (count _sameNameLoadoutsList == 0) then {
_data pushBack [_editBoxContent, _curSelLoadout];
} else {
{
for '_i' from 0 to (((lnbsize _contentPanelCtrl) select 0) - 1) do {
if ((_contentPanelCtrl lnbText [_i, 1]) == (_x select 0)) exitwith {
if ((_contentPanelCtrl lnbText [_i, 0]) != "") then {
[(findDisplay IDD_ace_arsenal), format ["A loadout of yours with the same name is being shared", _editBoxContent]] call FUNC(message); // TBL
breakOut "main";
};
};
};
} foreach _sameNameLoadoutsList;
_data set [_data find (_sameNameLoadoutsList select 0), [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _curSelLoadout]];
};
};
@ -239,17 +218,15 @@ switch (GVAR(currentLoadoutsTab)) do {
case IDC_buttonSharedLoadouts :{
if ((_contentPanelCtrl lnbText [_cursSelRow, 0]) == profileName) exitWith {
[(findDisplay IDD_ace_arsenal), format ["You are sharing a loadout with this name", _editBoxContent]] call FUNC(message); // TBL
[(findDisplay IDD_ace_arsenal), format ["You are sharing this loadout", _editBoxContent]] call FUNC(message); // TBL
breakOut "main";
};
private _loadout = (GVAR(sharedLoadoutsNamespace) getVariable ((_contentPanelCtrl lnbText [_cursSelRow, 0]) + (_contentPanelCtrl lnbText [_cursSelRow, 1]))) select 2;
if (count _sameNameLoadoutsList == 0) then {
_data pushBack [_editBoxContent, _loadout];
} else {
_data set [_data find (_sameNameLoadoutsList select 0), [[_editBoxContent, _loadoutName] select (_loadoutName isEqualTo _editBoxContent), _loadout]];
};
};