From f17e4af13cf37e8db25bb26cec5d6c9b3500caf9 Mon Sep 17 00:00:00 2001
From: NeilZar <neil.evers.1995@gmail.com>
Date: Sun, 14 Feb 2021 00:54:28 +0100
Subject: [PATCH 1/6] Add vehicle loadout context actions

---
 addons/context_actions/CfgContext.hpp         | 23 ++++++++++++++++---
 addons/context_actions/XEH_PREP.hpp           |  2 ++
 .../functions/fnc_canEditMagazines.sqf        | 20 ++++++++++++++++
 .../functions/fnc_canEditPylons.sqf           | 20 ++++++++++++++++
 4 files changed, 62 insertions(+), 3 deletions(-)
 create mode 100644 addons/context_actions/functions/fnc_canEditMagazines.sqf
 create mode 100644 addons/context_actions/functions/fnc_canEditPylons.sqf

diff --git a/addons/context_actions/CfgContext.hpp b/addons/context_actions/CfgContext.hpp
index 05b4d353c..81738dc6b 100644
--- a/addons/context_actions/CfgContext.hpp
+++ b/addons/context_actions/CfgContext.hpp
@@ -245,12 +245,29 @@ class EGVAR(context_menu,actions) {
             icon = "\a3\3den\Data\Displays\Display3DEN\ToolBar\undo_ca.paa";
         };
     };
+    class VehicleLoadout {
+        displayName = "$STR_A3_VR_Stamina_01_Loadout";
+        icon = QPATHTOF(ui\ammo_ca.paa);
+        priority = 39;
+        class Magazines {
+            displayName = "$STR_GEAR_MAGAZINES";
+            condition = QUOTE(_hoveredEntity call FUNC(canEditMagazines));
+            statement = QUOTE(_hoveredEntity call EFUNC(loadout,configure));
+            icon = QPATHTOF(ui\ammo_ca.paa);
+        };
+        class Pylons {
+            displayName = ECSTRING(pylons,DisplayName);
+            condition = QUOTE(_hoveredEntity call FUNC(canEditPylons));
+            statement = QUOTE(_hoveredEntity call EFUNC(pylons,configure));
+            icon = QPATHTOF(ui\ammo_ca.paa);
+        };
+    };
     class Inventory {
         displayName = "$STR_A3_Gear1";
         condition = QUOTE(_hoveredEntity call FUNC(canEditInventory));
         statement = QUOTE(_hoveredEntity call EFUNC(inventory,configure));
         icon = "\a3\Ui_F_Curator\Data\RscCommon\RscAttributeInventory\filter_0_ca.paa";
-        priority = 39;
+        priority = 38;
         class Edit {
             displayName = "$STR_3DEN_Display3DEN_MenUBar_Edit_text";
             condition = QUOTE(_hoveredEntity call FUNC(canEditInventory));
@@ -274,7 +291,7 @@ class EGVAR(context_menu,actions) {
         condition = QUOTE(_hoveredEntity call FUNC(canEditVehicleAppearance));
         statement = QUOTE(_hoveredEntity call EFUNC(garage,openGarage));
         icon = "\a3\3den\data\displays\display3den\entitymenu\garage_ca.paa";
-        priority = 38;
+        priority = 37;
         class Edit {
             displayName = "$STR_3DEN_Display3DEN_MenUBar_Edit_text";
             condition = QUOTE(_hoveredEntity call FUNC(canEditVehicleAppearance));
@@ -296,7 +313,7 @@ class EGVAR(context_menu,actions) {
     class VehicleLogistics {
         displayName = CSTRING(VehicleLogistics);
         icon = "\a3\ui_f\data\igui\cfg\simpleTasks\types\truck_ca.paa";
-        priority = 37;
+        priority = 36;
         class Repair {
             displayName = "$STR_Repair";
             condition = QUOTE(_objects call FUNC(canRepairVehicles));
diff --git a/addons/context_actions/XEH_PREP.hpp b/addons/context_actions/XEH_PREP.hpp
index ba746a072..b22310a96 100644
--- a/addons/context_actions/XEH_PREP.hpp
+++ b/addons/context_actions/XEH_PREP.hpp
@@ -1,5 +1,7 @@
 PREP(canEditInventory);
 PREP(canEditLoadout);
+PREP(canEditMagazines);
+PREP(canEditPylons);
 PREP(canEditVehicleAppearance);
 PREP(canHealUnits);
 PREP(canPasteVehicleAppearance);
diff --git a/addons/context_actions/functions/fnc_canEditMagazines.sqf b/addons/context_actions/functions/fnc_canEditMagazines.sqf
new file mode 100644
index 000000000..477c2d3f7
--- /dev/null
+++ b/addons/context_actions/functions/fnc_canEditMagazines.sqf
@@ -0,0 +1,20 @@
+#include "script_component.hpp"
+/*
+ * Author: mharis001
+ * Checks if the loadout of the given entity can be edited.
+ *
+ * Arguments:
+ * 0: Entity <ANY>
+ *
+ * Return Value:
+ * Can Edit Loadout <BOOL>
+ *
+ * Example:
+ * [_entity] call zen_context_actions_fnc_canEditLoadout
+ *
+ * Public: No
+ */
+
+params ["_entity"];
+
+alive _entity && {!(_entity call EFUNC(loadout,getWeaponList) isEqualTo [])}
diff --git a/addons/context_actions/functions/fnc_canEditPylons.sqf b/addons/context_actions/functions/fnc_canEditPylons.sqf
new file mode 100644
index 000000000..75908ccc9
--- /dev/null
+++ b/addons/context_actions/functions/fnc_canEditPylons.sqf
@@ -0,0 +1,20 @@
+#include "script_component.hpp"
+/*
+ * Author: mharis001
+ * Checks if the loadout of the given entity can be edited.
+ *
+ * Arguments:
+ * 0: Entity <ANY>
+ *
+ * Return Value:
+ * Can Edit Loadout <BOOL>
+ *
+ * Example:
+ * [_entity] call zen_context_actions_fnc_canEditLoadout
+ *
+ * Public: No
+ */
+
+params ["_entity"];
+
+alive _entity && {_entity call EFUNC(common,hasPylons)}

From 6473df7d5e19758ecacb5ea9d5c78cdbff6754f3 Mon Sep 17 00:00:00 2001
From: NeilZar <neil.evers.1995@gmail.com>
Date: Sun, 14 Feb 2021 14:52:00 +0100
Subject: [PATCH 2/6] Check if entity is object

---
 addons/context_actions/functions/fnc_canEditMagazines.sqf | 2 +-
 addons/context_actions/functions/fnc_canEditPylons.sqf    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/context_actions/functions/fnc_canEditMagazines.sqf b/addons/context_actions/functions/fnc_canEditMagazines.sqf
index 477c2d3f7..dd80eaec3 100644
--- a/addons/context_actions/functions/fnc_canEditMagazines.sqf
+++ b/addons/context_actions/functions/fnc_canEditMagazines.sqf
@@ -17,4 +17,4 @@
 
 params ["_entity"];
 
-alive _entity && {!(_entity call EFUNC(loadout,getWeaponList) isEqualTo [])}
+_entity isEqualType objNull && {alive _entity} && {!(_entity call EFUNC(loadout,getWeaponList) isEqualTo [])}
diff --git a/addons/context_actions/functions/fnc_canEditPylons.sqf b/addons/context_actions/functions/fnc_canEditPylons.sqf
index 75908ccc9..1d90e12f6 100644
--- a/addons/context_actions/functions/fnc_canEditPylons.sqf
+++ b/addons/context_actions/functions/fnc_canEditPylons.sqf
@@ -17,4 +17,4 @@
 
 params ["_entity"];
 
-alive _entity && {_entity call EFUNC(common,hasPylons)}
+_entity isEqualType objNull && {alive _entity} && {_entity call EFUNC(common,hasPylons)}

From d4a7fbb3b1976c3946fa35bacce902bd33350914 Mon Sep 17 00:00:00 2001
From: Neil Evers <neil.evers.1995@gmail.com>
Date: Thu, 11 Mar 2021 16:02:53 +0100
Subject: [PATCH 3/6] Pick some icons

---
 addons/context_actions/CfgContext.hpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/context_actions/CfgContext.hpp b/addons/context_actions/CfgContext.hpp
index 81738dc6b..21259e23c 100644
--- a/addons/context_actions/CfgContext.hpp
+++ b/addons/context_actions/CfgContext.hpp
@@ -253,13 +253,13 @@ class EGVAR(context_menu,actions) {
             displayName = "$STR_GEAR_MAGAZINES";
             condition = QUOTE(_hoveredEntity call FUNC(canEditMagazines));
             statement = QUOTE(_hoveredEntity call EFUNC(loadout,configure));
-            icon = QPATHTOF(ui\ammo_ca.paa);
+            icon = "\a3\ui_f\data\igui\cfg\weaponicons\mg_ca.paa";
         };
         class Pylons {
             displayName = ECSTRING(pylons,DisplayName);
             condition = QUOTE(_hoveredEntity call FUNC(canEditPylons));
             statement = QUOTE(_hoveredEntity call EFUNC(pylons,configure));
-            icon = QPATHTOF(ui\ammo_ca.paa);
+            icon = "\a3\ui_f\data\igui\cfg\weaponicons\aa_ca.paa";
         };
     };
     class Inventory {

From ab9e9dfd120536de4d4d71ff7394a22269626ef9 Mon Sep 17 00:00:00 2001
From: Neil Evers <neil.evers.1995@gmail.com>
Date: Sat, 13 Mar 2021 13:06:38 +0100
Subject: [PATCH 4/6] Address review

---
 addons/context_actions/config.cpp                         | 2 ++
 addons/context_actions/functions/fnc_canEditMagazines.sqf | 2 +-
 addons/context_actions/functions/fnc_canEditPylons.sqf    | 2 +-
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/addons/context_actions/config.cpp b/addons/context_actions/config.cpp
index c239499b5..2683db192 100644
--- a/addons/context_actions/config.cpp
+++ b/addons/context_actions/config.cpp
@@ -10,6 +10,8 @@ class CfgPatches {
             "zen_context_menu",
             "zen_garage",
             "zen_inventory",
+            "zen_loadout",
+            "zen_pylons",
             "zen_remote_control"
         };
         author = ECSTRING(main,Author);
diff --git a/addons/context_actions/functions/fnc_canEditMagazines.sqf b/addons/context_actions/functions/fnc_canEditMagazines.sqf
index dd80eaec3..5f2252670 100644
--- a/addons/context_actions/functions/fnc_canEditMagazines.sqf
+++ b/addons/context_actions/functions/fnc_canEditMagazines.sqf
@@ -1,6 +1,6 @@
 #include "script_component.hpp"
 /*
- * Author: mharis001
+ * Author: NeilZar
  * Checks if the loadout of the given entity can be edited.
  *
  * Arguments:
diff --git a/addons/context_actions/functions/fnc_canEditPylons.sqf b/addons/context_actions/functions/fnc_canEditPylons.sqf
index 1d90e12f6..2091d9032 100644
--- a/addons/context_actions/functions/fnc_canEditPylons.sqf
+++ b/addons/context_actions/functions/fnc_canEditPylons.sqf
@@ -1,6 +1,6 @@
 #include "script_component.hpp"
 /*
- * Author: mharis001
+ * Author: NeilZar
  * Checks if the loadout of the given entity can be edited.
  *
  * Arguments:

From 11b277746be66f8cb88b16ea8d656c5a781316da Mon Sep 17 00:00:00 2001
From: Neil Evers <neil.evers.1995@gmail.com>
Date: Sat, 13 Mar 2021 15:11:36 +0100
Subject: [PATCH 5/6] Update fnc_canEditMagazines.sqf

---
 addons/context_actions/functions/fnc_canEditMagazines.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/context_actions/functions/fnc_canEditMagazines.sqf b/addons/context_actions/functions/fnc_canEditMagazines.sqf
index 5f2252670..af8baaf89 100644
--- a/addons/context_actions/functions/fnc_canEditMagazines.sqf
+++ b/addons/context_actions/functions/fnc_canEditMagazines.sqf
@@ -17,4 +17,4 @@
 
 params ["_entity"];
 
-_entity isEqualType objNull && {alive _entity} && {!(_entity call EFUNC(loadout,getWeaponList) isEqualTo [])}
+_entity isEqualType objNull && {alive _entity} && {_entity call EFUNC(loadout,getWeaponList) isNotEqualTo []}

From 1b46e966e27ace759687ed9bee7260dedf65e3ca Mon Sep 17 00:00:00 2001
From: Neil Evers <neil.evers.1995@gmail.com>
Date: Sun, 14 Mar 2021 14:09:41 +0100
Subject: [PATCH 6/6] udpate headers

---
 addons/context_actions/functions/fnc_canEditMagazines.sqf | 6 +++---
 addons/context_actions/functions/fnc_canEditPylons.sqf    | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/addons/context_actions/functions/fnc_canEditMagazines.sqf b/addons/context_actions/functions/fnc_canEditMagazines.sqf
index 5f2252670..1e62b780d 100644
--- a/addons/context_actions/functions/fnc_canEditMagazines.sqf
+++ b/addons/context_actions/functions/fnc_canEditMagazines.sqf
@@ -1,16 +1,16 @@
 #include "script_component.hpp"
 /*
  * Author: NeilZar
- * Checks if the loadout of the given entity can be edited.
+ * Checks if the magazines loadout of the given entity can be edited.
  *
  * Arguments:
  * 0: Entity <ANY>
  *
  * Return Value:
- * Can Edit Loadout <BOOL>
+ * Can Edit Magazines <BOOL>
  *
  * Example:
- * [_entity] call zen_context_actions_fnc_canEditLoadout
+ * [_entity] call zen_context_actions_fnc_canEditMagazines
  *
  * Public: No
  */
diff --git a/addons/context_actions/functions/fnc_canEditPylons.sqf b/addons/context_actions/functions/fnc_canEditPylons.sqf
index 2091d9032..a4b33a5ed 100644
--- a/addons/context_actions/functions/fnc_canEditPylons.sqf
+++ b/addons/context_actions/functions/fnc_canEditPylons.sqf
@@ -1,16 +1,16 @@
 #include "script_component.hpp"
 /*
  * Author: NeilZar
- * Checks if the loadout of the given entity can be edited.
+ * Checks if the pylons of the given entity can be edited.
  *
  * Arguments:
  * 0: Entity <ANY>
  *
  * Return Value:
- * Can Edit Loadout <BOOL>
+ * Can Edit Pylons <BOOL>
  *
  * Example:
- * [_entity] call zen_context_actions_fnc_canEditLoadout
+ * [_entity] call zen_context_actions_fnc_canEditPylons
  *
  * Public: No
  */