mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Add a 3DEN attribute to save defaultLoadoutsList, fix shared loadout check
This commit is contained in:
@ -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"
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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]];
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user