From 358a95381b8bb27b6759f47e51ffcfbf8e9bdea6 Mon Sep 17 00:00:00 2001
From: Glowbal
Requires the latest version of CBA A3 | BIF thread
-**ACE 3** is a join effort by the teams behind **ACE 2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3. +**ACE 3** is a joint effort by the teams behind **ACE 2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3. This mod is entirely **open-source**, and everyone is free to propose changes or maintain their own, customized version as long as they make their changes open to the public in accordance with the GNU General Public License (for more information check the license file attached to this project). From cad545601049f84c047ac34b7d2c155cd7cf65b4 Mon Sep 17 00:00:00 2001 From: commy2
+ * 2: Namespace to store the cache on
+ * 3: Cache uid
+ * 4: Max duration of the cache
+ *
+ * Return Value:
+ * Result of the function
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+EXPLODE_5_PVT(_this,_params,_function,_namespace,_uid,_duration);
+
+if (((_namespace getVariable [_uid, [-99999]]) select 0) < diag_tickTime) then {
+ _namespace setVariable [_uid, [diag_tickTime + _duration, _params call _function]];
+#ifdef DEBUG_MODE_FULL
+ diag_log format ["Calculated result: %1 %2", _namespace, _uid];
+} else {
+ diag_log format ["Cached result : %1 %2", _namespace, _uid];
+#endif
+};
+
+(_namespace getVariable _uid) select 1
diff --git a/addons/common/functions/fnc_eraseCache.sqf b/addons/common/functions/fnc_eraseCache.sqf
new file mode 100644
index 0000000000..00f49f4833
--- /dev/null
+++ b/addons/common/functions/fnc_eraseCache.sqf
@@ -0,0 +1,18 @@
+/*
+ * Author: CAA-Picard
+ * Deletes a cached result
+ *
+ * Arguments:
+ * 0: Namespace to store the cache on
+ * 1: Cache uid
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+EXPLODE_2_PVT(_this,_namespace,_uid);
+
+_namespace setVariable [_uid, nil];
From 14b97de93020e783d2f144b5c0104d9aeb04dadc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Tue, 10 Mar 2015 23:23:13 -0300
Subject: [PATCH 12/22] Cache the generation of active action trees for action
points. This sensibly cuts down the execution of action conditions.
---
addons/interact_menu/functions/fnc_renderBaseMenu.sqf | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf
index 7ff430fa08..e3a8a0c9a4 100644
--- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf
+++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf
@@ -58,8 +58,14 @@ if ((_sPos select 1) < safeZoneY || (_sPos select 1) > safeZoneY + safeZon
// Collect active tree
-// @todo: cache activeActionTree?
-_activeActionTree = ([_object, _baseAction] call FUNC(collectActiveActionTree));
+private "_uid";
+_uid = format [QGVAR(ATCache_%1), (_actionData select 7) select 0];
+_activeActionTree = [
+ [_object, _baseAction],
+ DFUNC(collectActiveActionTree),
+ _object, _uid, 0.2
+ ] call EFUNC(common,cachedCall);
+
// Check if there's something left for rendering
if (count _activeActionTree == 0) exitWith {false};
From e97467b3e3e37917f4b6d3d406b29f02863f5e6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Tue, 10 Mar 2015 23:36:28 -0300
Subject: [PATCH 13/22] Throw an event when the interact menu is closed
---
addons/interact_menu/functions/fnc_keyUp.sqf | 6 +++++-
addons/interact_menu/functions/fnc_keyUpSelfAction.sqf | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf
index b2b5f35547..5de1467729 100644
--- a/addons/interact_menu/functions/fnc_keyUp.sqf
+++ b/addons/interact_menu/functions/fnc_keyUp.sqf
@@ -12,7 +12,11 @@
*/
#include "script_component.hpp"
-GVAR(keyDown) = false;
+if (GVAR(keyDown)) then {
+ GVAR(keyDown) = false;
+ ["interactMenuClosed", [0]] call FUNC(localEvent);
+};
+
if(GVAR(actionSelected)) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
diff --git a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
index 0f784e640b..308b3882c7 100644
--- a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
+++ b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
@@ -16,7 +16,11 @@ if (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then {
closeDialog 0;
};
-GVAR(keyDownSelfAction) = false;
+if (GVAR(keyDownSelfAction)) then {
+ GVAR(keyDownSelfAction) = false;
+ ["interactMenuClosed", [1]] call FUNC(localEvent);
+};
+
if(GVAR(actionSelected)) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
From b33127d3b09b15c66affa6e86e6b967ede177b6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Tue, 10 Mar 2015 23:45:46 -0300
Subject: [PATCH 14/22] Renamed variable
---
addons/interact_menu/XEH_preInit.sqf | 2 +-
addons/interact_menu/functions/fnc_keyUp.sqf | 2 +-
addons/interact_menu/functions/fnc_keyUpSelfAction.sqf | 2 +-
addons/interact_menu/functions/fnc_render.sqf | 10 +++++++++-
4 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf
index d3ea2451b9..5e86ab4383 100644
--- a/addons/interact_menu/XEH_preInit.sqf
+++ b/addons/interact_menu/XEH_preInit.sqf
@@ -23,7 +23,7 @@ GVAR(keyDownTime) = 0;
GVAR(lastTime) = diag_tickTime;
GVAR(rotationAngle) = 0;
-GVAR(selectedAction) = {};
+GVAR(selectedStatement) = {};
GVAR(actionSelected) = false;
GVAR(selectedTarget) = objNull;
diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf
index 5de1467729..c983d5dfd2 100644
--- a/addons/interact_menu/functions/fnc_keyUp.sqf
+++ b/addons/interact_menu/functions/fnc_keyUp.sqf
@@ -21,7 +21,7 @@ if(GVAR(actionSelected)) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
_target = GVAR(selectedTarget);
- [GVAR(selectedTarget), ACE_player] call GVAR(selectedAction);
+ [GVAR(selectedTarget), ACE_player] call GVAR(selectedStatement);
};
GVAR(expanded) = false;
GVAR(lastPath) = [];
diff --git a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
index 308b3882c7..807b05c657 100644
--- a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
+++ b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
@@ -25,7 +25,7 @@ if(GVAR(actionSelected)) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
_target = GVAR(selectedTarget);
- [GVAR(selectedTarget), ACE_player] call GVAR(selectedAction);
+ [GVAR(selectedTarget), ACE_player] call GVAR(selectedStatement);
};
GVAR(expanded) = false;
GVAR(lastPath) = [];
diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf
index f5723f0c5d..8188c19c8d 100644
--- a/addons/interact_menu/functions/fnc_render.sqf
+++ b/addons/interact_menu/functions/fnc_render.sqf
@@ -143,7 +143,7 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
_foundTarget = true;
GVAR(actionSelected) = true;
GVAR(selectedTarget) = (_closest select 0) select 0;
- GVAR(selectedAction) = (((_closest select 0) select 1) select 0) select 3;
+ GVAR(selectedStatement) = (((_closest select 0) select 1) select 0) select 3;
_misMatch = false;
_hoverPath = (_closest select 2);
@@ -165,6 +165,14 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
if(!GVAR(expanded) && diag_tickTime-GVAR(startHoverTime) > 0.25) then {
GVAR(expanded) = true;
GVAR(menuDepthPath) = +GVAR(lastPath);
+
+ // Execute the menu action when it ex
+ if(GVAR(actionSelected)) then {
+ this = GVAR(selectedTarget);
+ _player = ACE_Player;
+ _target = GVAR(selectedTarget);
+ [GVAR(selectedTarget), ACE_player] call GVAR(selectedStatement);
+ };
};
};
};
From 722f49acc42173b4a27a30ad1882015a82e6c171 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 00:21:05 -0300
Subject: [PATCH 15/22] Execute statement when hovering over actions that open
submenus
---
addons/common/functions/fnc_cachedCall.sqf | 2 +-
addons/interact_menu/XEH_preInit.sqf | 1 +
addons/interact_menu/functions/fnc_render.sqf | 8 +++++---
3 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf
index 4829ce8b11..0c9aafcfc8 100644
--- a/addons/common/functions/fnc_cachedCall.sqf
+++ b/addons/common/functions/fnc_cachedCall.sqf
@@ -23,7 +23,7 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < diag_tickTime) then {
#ifdef DEBUG_MODE_FULL
diag_log format ["Calculated result: %1 %2", _namespace, _uid];
} else {
- diag_log format ["Cached result : %1 %2", _namespace, _uid];
+ diag_log format ["Cached result : %1 %2", _namespace, _uid];
#endif
};
diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf
index 5e86ab4383..4bd552c2f7 100644
--- a/addons/interact_menu/XEH_preInit.sqf
+++ b/addons/interact_menu/XEH_preInit.sqf
@@ -23,6 +23,7 @@ GVAR(keyDownTime) = 0;
GVAR(lastTime) = diag_tickTime;
GVAR(rotationAngle) = 0;
+GVAR(selectedAction) = [[],[]];
GVAR(selectedStatement) = {};
GVAR(actionSelected) = false;
GVAR(selectedTarget) = objNull;
diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf
index 8188c19c8d..58061a2b60 100644
--- a/addons/interact_menu/functions/fnc_render.sqf
+++ b/addons/interact_menu/functions/fnc_render.sqf
@@ -143,7 +143,9 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
_foundTarget = true;
GVAR(actionSelected) = true;
GVAR(selectedTarget) = (_closest select 0) select 0;
- GVAR(selectedStatement) = (((_closest select 0) select 1) select 0) select 3;
+ GVAR(selectedAction) = (_closest select 0) select 1;
+ GVAR(selectedStatement) = ((GVAR(selectedAction)) select 0) select 3;
+
_misMatch = false;
_hoverPath = (_closest select 2);
@@ -166,8 +168,8 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
GVAR(expanded) = true;
GVAR(menuDepthPath) = +GVAR(lastPath);
- // Execute the menu action when it ex
- if(GVAR(actionSelected)) then {
+ // Execute the current action if it's opening a submenu
+ if (count (GVAR(selectedAction) select 1) > 0) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
_target = GVAR(selectedTarget);
From 7138fadd71522d6bf734cd45b4332c6eef0fd67e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 00:25:45 -0300
Subject: [PATCH 16/22] Support additional parameters for addAction API
---
addons/interact_menu/functions/fnc_addAction.sqf | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/addons/interact_menu/functions/fnc_addAction.sqf b/addons/interact_menu/functions/fnc_addAction.sqf
index 136205766e..c7dd6ecab3 100644
--- a/addons/interact_menu/functions/fnc_addAction.sqf
+++ b/addons/interact_menu/functions/fnc_addAction.sqf
@@ -13,6 +13,7 @@
* 6: Statement
* 7: Condition
* 8: Distance
+ * 9: Other parameters (Optional)
*
* Return value:
* The entry full path, which can be used to remove the entry, or add children entries .
@@ -26,7 +27,7 @@
EXPLODE_9_PVT(_this,_object,_typeNum,_fullPath,_displayName,_icon,_position,_statement,_condition,_distance);
-private ["_varName","_actions"];
+private ["_varName","_actions","_params","_entry"];
_varName = [QGVAR(actions),QGVAR(selfActions)] select _typeNum;
_actions = _object getVariable [_varName, []];
@@ -34,7 +35,11 @@ if((count _actions) == 0) then {
_object setVariable [_varName, _actions];
};
-private "_entry";
+_params = [false,false,false,false];
+if (count _this > 9) then {
+ _params = _this select 9;
+};
+
_entry = [
[
_displayName,
@@ -43,7 +48,7 @@ _entry = [
_statement,
_condition,
_distance,
- [false,false,false],
+ _params,
+ _fullPath
],
[]
From f12e4ab751ae6aa797790e157ab43da6835d267b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 00:37:59 -0300
Subject: [PATCH 17/22] Add the runOnHover parameter
---
addons/interact_menu/functions/fnc_compileMenu.sqf | 5 +++--
addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf | 5 +++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf
index c2ebac5034..d509f5abc8 100644
--- a/addons/interact_menu/functions/fnc_compileMenu.sqf
+++ b/addons/interact_menu/functions/fnc_compileMenu.sqf
@@ -24,7 +24,7 @@ if !(isNil {missionNamespace getVariable [_actionsVarName, nil]}) exitWith {};
private "_recurseFnc";
_recurseFnc = {
private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_selection", "_condition", "_showDisabled",
- "_enableInside", "_children", "_entry", "_entryCfg", "_fullPath"];
+ "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_fullPath"];
EXPLODE_2_PVT(_this,_actionsCfg,_parentPath);
_actions = [];
@@ -48,6 +48,7 @@ _recurseFnc = {
_showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
_enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
_canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0;
+ _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
_fullPath = (+ _parentPath);
_fullPath pushBack (configName _entryCfg);
@@ -63,7 +64,7 @@ _recurseFnc = {
_statement,
_condition,
_distance,
- [_showDisabled,_enableInside,_canCollapse],
+ [_showDisabled,_enableInside,_canCollapse,_runOnHover],
_fullPath
],
_children
diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
index 0dd82e5178..42b76785f5 100644
--- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
+++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
@@ -24,7 +24,7 @@ if !(isNil {missionNamespace getVariable [_actionsVarName, nil]}) exitWith {};
private "_recurseFnc";
_recurseFnc = {
private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_selection", "_condition", "_showDisabled",
- "_enableInside", "_children", "_entry", "_entryCfg", "_fullPath"];
+ "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_fullPath"];
EXPLODE_2_PVT(_this,_actionsCfg,_parentPath);
_actions = [];
@@ -45,6 +45,7 @@ _recurseFnc = {
_showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
_enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
_canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0;
+ _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
_fullPath = (+ _parentPath);
_fullPath pushBack (configName _entryCfg);
@@ -60,7 +61,7 @@ _recurseFnc = {
_statement,
_condition,
10, //distace
- [_showDisabled,_enableInside,_canCollapse],
+ [_showDisabled,_enableInside,_canCollapse,_runOnHover],
_fullPath
],
_children
From c573b1048d8a4ec28b692fbd29755995dc548027 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 00:38:31 -0300
Subject: [PATCH 18/22] Made medical diagnosis statements run on hover
---
addons/medical/CfgVehicles.hpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp
index 2d0a9bd0a3..a15167f820 100644
--- a/addons/medical/CfgVehicles.hpp
+++ b/addons/medical/CfgVehicles.hpp
@@ -347,6 +347,7 @@ class CfgVehicles {
class ACE_Actions {
class ACE_Head {
+ runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
class Bandage_Head {
@@ -406,6 +407,7 @@ class CfgVehicles {
displayName = "Medical";
distance = 5.0;
condition = "true";
+ runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
showDisabled = 1;
priority = 2;
@@ -481,6 +483,7 @@ class CfgVehicles {
};
};
class ACE_ArmLeft {
+ runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
class Bandage_LeftArm {
@@ -602,6 +605,7 @@ class CfgVehicles {
};
};
class ACE_ArmRight {
+ runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
class Bandage_RightArm {
displayName = "Bandage Right Arm";
@@ -723,6 +727,7 @@ class CfgVehicles {
};
class ACE_LegLeft {
+ runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
class Bandage_LeftLeg {
displayName = "Bandage Left Leg";
@@ -834,6 +839,7 @@ class CfgVehicles {
};
};
class ACE_LegRight {
+ runOnHover = 1;
statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
class Bandage_RightLeg {
displayName = "Bandage Right Leg";
From 28929df32db20052bd0e86593ab6d60810fbf517 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 00:39:23 -0300
Subject: [PATCH 19/22] Avoid submenus running statements when they open.
Instead just check if the hovering action should runOnHover
---
addons/interact_menu/functions/fnc_render.sqf | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf
index 58061a2b60..3930068c25 100644
--- a/addons/interact_menu/functions/fnc_render.sqf
+++ b/addons/interact_menu/functions/fnc_render.sqf
@@ -168,8 +168,10 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then {
GVAR(expanded) = true;
GVAR(menuDepthPath) = +GVAR(lastPath);
- // Execute the current action if it's opening a submenu
- if (count (GVAR(selectedAction) select 1) > 0) then {
+ // Execute the current action if it's run on hover
+ private "_runOnHover";
+ _runOnHover = ((GVAR(selectedAction) select 0) select 6) select 3;
+ if (_runOnHover) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
_target = GVAR(selectedTarget);
From 3dfef439e528bb4146eb85cf8cb906cd17cfab22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 00:49:46 -0300
Subject: [PATCH 20/22] Delay the interactMenuClosed event until after the
statement is executed, just in case it's needed to clean up afterwards.
---
addons/interact_menu/functions/fnc_keyUp.sqf | 11 ++++++-----
.../interact_menu/functions/fnc_keyUpSelfAction.sqf | 11 ++++++-----
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/addons/interact_menu/functions/fnc_keyUp.sqf b/addons/interact_menu/functions/fnc_keyUp.sqf
index c983d5dfd2..70e7438125 100644
--- a/addons/interact_menu/functions/fnc_keyUp.sqf
+++ b/addons/interact_menu/functions/fnc_keyUp.sqf
@@ -12,17 +12,18 @@
*/
#include "script_component.hpp"
-if (GVAR(keyDown)) then {
- GVAR(keyDown) = false;
- ["interactMenuClosed", [0]] call FUNC(localEvent);
-};
-
if(GVAR(actionSelected)) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
_target = GVAR(selectedTarget);
[GVAR(selectedTarget), ACE_player] call GVAR(selectedStatement);
};
+
+if (GVAR(keyDown)) then {
+ GVAR(keyDown) = false;
+ ["interactMenuClosed", [0]] call FUNC(localEvent);
+};
+
GVAR(expanded) = false;
GVAR(lastPath) = [];
GVAR(menuDepthPath) = [];
diff --git a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
index 807b05c657..924fd4cca6 100644
--- a/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
+++ b/addons/interact_menu/functions/fnc_keyUpSelfAction.sqf
@@ -16,17 +16,18 @@ if (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then {
closeDialog 0;
};
-if (GVAR(keyDownSelfAction)) then {
- GVAR(keyDownSelfAction) = false;
- ["interactMenuClosed", [1]] call FUNC(localEvent);
-};
-
if(GVAR(actionSelected)) then {
this = GVAR(selectedTarget);
_player = ACE_Player;
_target = GVAR(selectedTarget);
[GVAR(selectedTarget), ACE_player] call GVAR(selectedStatement);
};
+
+if (GVAR(keyDownSelfAction)) then {
+ GVAR(keyDownSelfAction) = false;
+ ["interactMenuClosed", [1]] call FUNC(localEvent);
+};
+
GVAR(expanded) = false;
GVAR(lastPath) = [];
GVAR(menuDepthPath) = [];
From 8c7a51eac7d7f15e7fa2d8c6bdcc726f1ab34833 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?=
Date: Wed, 11 Mar 2015 01:43:37 -0300
Subject: [PATCH 21/22] Added addClassAction and removeClassAction functions
---
addons/interact_menu/XEH_preInit.sqf | 2 +
.../functions/fnc_addClassAction.sqf | 87 +++++++++++++++++++
.../functions/fnc_removeClassAction.sqf | 72 +++++++++++++++
3 files changed, 161 insertions(+)
create mode 100644 addons/interact_menu/functions/fnc_addClassAction.sqf
create mode 100644 addons/interact_menu/functions/fnc_removeClassAction.sqf
diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf
index 4bd552c2f7..487f1c017f 100644
--- a/addons/interact_menu/XEH_preInit.sqf
+++ b/addons/interact_menu/XEH_preInit.sqf
@@ -3,6 +3,7 @@
ADDON = false;
PREP(addAction);
+PREP(addClassAction);
PREP(compileMenu);
PREP(compileMenuSelfAction);
PREP(collectActiveActionTree);
@@ -11,6 +12,7 @@ PREP(keyDownSelfAction);
PREP(keyUp);
PREP(keyUpSelfAction);
PREP(removeAction);
+PREP(removeClassAction);
PREP(render);
PREP(renderIcon);
PREP(renderBaseMenu);
diff --git a/addons/interact_menu/functions/fnc_addClassAction.sqf b/addons/interact_menu/functions/fnc_addClassAction.sqf
new file mode 100644
index 0000000000..5916edbfbc
--- /dev/null
+++ b/addons/interact_menu/functions/fnc_addClassAction.sqf
@@ -0,0 +1,87 @@
+/*
+ * Author: CAA-Picard
+ * Add an ACE action to a class, under a certain path
+ * Note: This function is NOT global.
+ *
+ * Argument:
+ * 0: TypeOf of the class
+ * 1: Type of action, 0 for actions, 1 for self-actions
+ * 2: Full path of the new action
+ * 3: Name of the action shown in the menu
+ * 4: Icon
+ * 5: Position (Position or Selection Name) or
+ * 6: Statement
+ * 7: Condition
+ * 8: Distance
+ * 9: Other parameters (Optional)
+ *
+ * Return value:
+ * The entry full path, which can be used to remove the entry, or add children entries .
+ *
+ * Example:
+ * [typeOf cursorTarget, 0,["ACE_TapShoulderRight","VulcanPinch"],"Vulcan Pinch","",[0,0,0],{_target setDamage 1;},{true},100] call ace_interact_menu_fnc_addClassAction;
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+EXPLODE_9_PVT(_this,_objectType,_typeNum,_fullPath,_displayName,_icon,_position,_statement,_condition,_distance);
+
+private ["_varName","_actions","_params","_entry", "_parentLevel", "_foundParentLevel", "_fnc_findFolder"];
+
+_varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType];
+_actions = missionNamespace getVariable [_varName, []];
+if((count _actions) == 0) then {
+ missionNamespace setVariable [_varName, _actions];
+};
+
+_params = [false,false,false,false];
+if (count _this > 9) then {
+ _params = _this select 9;
+};
+
+// Search the class action trees and find where to insert the entry
+_parentLevel = _actions;
+_foundParentLevel = false;
+
+_fnc_findFolder = {
+ EXPLODE_3_PVT(_this,_fullPath,_level,_classActions);
+
+ if (count _fullPath == _level + 1) then {
+ _parentLevel = _classActions;
+ _foundParentLevel = true;
+ };
+
+ if (_foundParentLevel) exitWith {};
+
+ {
+ EXPLODE_2_PVT(_x,_actionData,_actionChildren);
+ if (((_actionData select 7) select _level) isEqualTo (_fullPath select _level)) exitWith {
+ // The action should go somewhere in here
+ [_fullPath, _level + 1, _actionChildren] call _fnc_findFolder;
+ };
+ } forEach _classActions;
+};
+
+[_fullPath, 0, _actions] call _fnc_findFolder;
+
+// Exit if there's no entry point to insert this action
+if (!_foundParentLevel) exitWith {};
+
+_entry = [
+ [
+ _displayName,
+ _icon,
+ _position,
+ _statement,
+ _condition,
+ _distance,
+ _params,
+ + _fullPath
+ ],
+ []
+ ];
+
+_parentLevel pushBack _entry;
+
+_fullPath
diff --git a/addons/interact_menu/functions/fnc_removeClassAction.sqf b/addons/interact_menu/functions/fnc_removeClassAction.sqf
new file mode 100644
index 0000000000..9ba29cd357
--- /dev/null
+++ b/addons/interact_menu/functions/fnc_removeClassAction.sqf
@@ -0,0 +1,72 @@
+/*
+ * Author: CAA-Picard
+ * Removes a class action from a class
+ * Note: This function is NOT global.
+ *
+ * Argument:
+ * 0: TypeOf of the class
+ * 1: Type of action, 0 for actions, 1 for self-actions
+ * 2: Full path of the new action
+ *
+ * Return value:
+ * None
+ *
+ * Example:
+ * [typeOf cursorTarget, 0,["ACE_TapShoulderRight","VulcanPinch"]] call ace_interact_menu_fnc_removeClassAction;
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+EXPLODE_3_PVT(_this,_objectType,_typeNum,_fullPath);
+
+private ["_varName","_actions","_parentLevel", "_actionIndex", "_foundAction", "_fnc_findFolder"];
+
+_varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType];
+_actions = missionNamespace getVariable [_varName, []];
+
+// Search the class action trees and find where to insert the entry
+_parentLevel = _actions;
+_actionIndex = -1;
+_foundAction = false;
+
+_fnc_findFolder = {
+ EXPLODE_3_PVT(_this,_fullPath,_level,_classActions);
+
+ if (count _fullPath == _level + 1) then {
+ _parentLevel = _classActions;
+ };
+
+ {
+ EXPLODE_2_PVT(_x,_actionData,_actionChildren);
+ if (((_actionData select 7) select _level) isEqualTo (_fullPath select _level)) exitWith {
+ if (_level + 1 == count _fullPath) exitWith {
+ _actionIndex = _forEachIndex;
+ _foundAction = true;
+ };
+ [_fullPath, _level + 1, _actionChildren] call _fnc_findFolder;
+ };
+ if (_foundAction) exitWith {};
+ } forEach _classActions;
+};
+
+[_fullPath, 0, _actions] call _fnc_findFolder;
+
+// Exit if the action was not found
+if (!_foundAction) exitWith {};
+
+_entry = [
+ [
+ _displayName,
+ _icon,
+ _position,
+ _statement,
+ _condition,
+ _distance,
+ _params,
+ + _fullPath
+ ],
+ []
+ ];
+
+_parentLevel deleteAt _actionIndex;
From b6423cc011701b5af7cb789978901921eb2314cd Mon Sep 17 00:00:00 2001
From: bux578
Date: Wed, 11 Mar 2015 10:38:22 +0100
Subject: [PATCH 22/22] add icons psd
---
extras/assets/icons/Icons_Modules.psd | Bin 0 -> 2302804 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 extras/assets/icons/Icons_Modules.psd
diff --git a/extras/assets/icons/Icons_Modules.psd b/extras/assets/icons/Icons_Modules.psd
new file mode 100644
index 0000000000000000000000000000000000000000..d240738a19764eeaa8ec7152fad60075210faf64
GIT binary patch
literal 2302804
zcmeEv2Vhi1^Z35IOK&9feuSzJ?vjwuA&pQ2frMiBa(77%E_dPXLMS5W$0v3Xm109t
zKxqmB@?jw$q6pFhu
za`hLJ3z_f*b?by~gMS||czU`*IYn)fCaF_2x`BZO-)#?+YE%OQCx*qzg{iYBHtwlgTnOGka!+_S73vWWjy=_QhyILW00Yka332
zq?jJ0Gj`-65#ota85M&T8G9=AX|m~x
zbXjmuxy%wX1RMZ3=@)HKD@=MrqF%2Z#FacgRd3Q8Q}yZ6=!CGI!P1Euol2i+93ZRf
z-I~5NCUuO$q#gwL=@lgJ9Td_xF<9PD9@4K@aCdmiL(RhBSp~kRm-@t5GVj%4O4ZD!wAqg_;>4vwFSX
zxwa%?$-EsQS)A*Wlf|iDv|g(>KnB^^E_
zIy|^wHjKV=?a5Uoj4<1
zJuq;b+NjSkDAl%YhKmWqSo2NO8m&lE51J_j3UA24n$O!tfVmztvtDott{a>qQLX0h
zEQuY;twpSxl?G7pu$3gF9#Uy#{p(5+8!P>bMTw2Ahl+ckFOKT$8<1^$7*)M?XVXq%
z^vVqE`66{nwGqagdu*PAVEpN+(y01{#mZy*M2Gi{4vh{T(knQ)Pw%j>*vRmxKD|PF
z_mM|K6U2_XZtJ*P?r)nrF5rC_4aSivX!tk7yCTnO|H=2e_gAt$SAnf{MA*2!e
zESb<{4Veabwz3h}NNMW*hU<(b1>k>p3`M5~&>0#W1xSpIiIGS5Ms)TK4eK)`Dm*GC
zG_*IcJ3w;vf?AsnAFY5qK3c4$@ZQmV!g}|PjO`N~PHQPDCUQt*=#buhdk2T~?bTa|
z)+T7ZXvY{dz~m{kHhu&ma5VY`qNtb5Fb$I94Ex@cjur{(srFFBBu8EMHd@dc?59xT
zh(1V(JeOKEKxPNEX3IK8a2_=EEA8&ZuNU<8@n@#0b$8;~xTvVF+ec#5Cz~=A26bc#
zklx)`NiIhFAa$c|xEbG{3efAOsSWp11;7@-0B=H`BH5r%lWNiwDQa1|E=6k6OYh39
zamBTX;~y-mQ8Dc=l3Jg;HRQiWYQbUsg8K;5g9k%uNK{
t*cwd0}X(GcGjD2yjrC>%%gG%(Bi<
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
z
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