From d02b5d2125871f1781be1b2e7d8fb23ea262e1be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= Date: Wed, 11 Mar 2015 16:26:58 -0300 Subject: [PATCH] Ensure the class actions are compiled from config before adding them from the API --- addons/interact_menu/functions/fnc_addClassAction.sqf | 7 +++++++ addons/interact_menu/functions/fnc_compileMenu.sqf | 9 ++++++--- .../functions/fnc_compileMenuSelfAction.sqf | 9 ++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/addons/interact_menu/functions/fnc_addClassAction.sqf b/addons/interact_menu/functions/fnc_addClassAction.sqf index 5916edbfbc..4931328af2 100644 --- a/addons/interact_menu/functions/fnc_addClassAction.sqf +++ b/addons/interact_menu/functions/fnc_addClassAction.sqf @@ -27,6 +27,13 @@ EXPLODE_9_PVT(_this,_objectType,_typeNum,_fullPath,_displayName,_icon,_position,_statement,_condition,_distance); +// Ensure the config menu was compiled first +if (_typeNum == 0) then { + [_objectType] call FUNC(compileMenu); +} else { + [_objectType] call FUNC(compileMenuSelfAction); +}; + private ["_varName","_actions","_params","_entry", "_parentLevel", "_foundParentLevel", "_fnc_findFolder"]; _varName = format [[QGVAR(Act_%1), QGVAR(SelfAct_%1)] select _typeNum, _objectType]; diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index d509f5abc8..5ba4a1b5a7 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -3,7 +3,7 @@ * Compile the action menu from config for an object's class * * Argument: - * 0: Object + * 0: Object or class name or * * Return value: * None @@ -12,10 +12,13 @@ */ #include "script_component.hpp"; -EXPLODE_1_PVT(_this,_object); +EXPLODE_1_PVT(_this,_target); private ["_objectType","_actionsVarName"]; -_objectType = typeOf _object; +_objectType = _target; +if (typeName _target == "OBJECT") then { + _objectType = typeOf _target; +}; _actionsVarName = format [QGVAR(Act_%1), _objectType]; // Exit if the action menu is already compiled for this class diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index 42b76785f5..9407ce6dcd 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -3,7 +3,7 @@ * Compile the self action menu from config for an object's class * * Argument: - * 0: Object + * 0: Object or class name or * * Return value: * None @@ -12,10 +12,13 @@ */ #include "script_component.hpp"; -EXPLODE_1_PVT(_this,_object); +EXPLODE_1_PVT(_this,_target); private ["_objectType","_actionsVarName"]; -_objectType = typeOf _object; +_objectType = _target; +if (typeName _target == "OBJECT") then { + _objectType = typeOf _target; +}; _actionsVarName = format [QGVAR(SelfAct_%1), _objectType]; // Exit if the action menu is already compiled for this class