mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Add interaction action on demand (#4079)
* Only use addActionEventHandler when needed -Only install addActionEventHandler when the interaction menu is actually open -Less SQF running each frame, -it should help with issue #4066 * Cleanup debug
This commit is contained in:
parent
dc7ac4c42c
commit
919c8469de
@ -9,7 +9,6 @@ PREP(collectActiveActionTree);
|
||||
PREP(createAction);
|
||||
PREP(ctrlSetParsedTextCached);
|
||||
PREP(findActionNode);
|
||||
PREP(handlePlayerChanged);
|
||||
PREP(isSubPath);
|
||||
PREP(keyDown);
|
||||
PREP(keyUp);
|
||||
|
@ -3,6 +3,8 @@
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(blockDefaultActions) = [];
|
||||
|
||||
GVAR(cachedBuildingTypes) = [];
|
||||
GVAR(cachedBuildingActionPairs) = [];
|
||||
|
||||
@ -53,9 +55,6 @@ GVAR(ParsedTextCached) = [];
|
||||
[GVAR(openedMenuType), false] call FUNC(keyUp);
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
// disable firing while the interact menu is is is opened
|
||||
["unit", FUNC(handlePlayerChanged)] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
// background options
|
||||
["ace_interactMenuOpened", {
|
||||
if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), true] call EFUNC(common,blurScreen);};
|
||||
|
@ -1,30 +0,0 @@
|
||||
/*
|
||||
* Author: commy2
|
||||
* Disables firing while the menu is opened. Called from playerChanged eh.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: New unit to add the addAction eh <OBJECT>
|
||||
* 1: Old unit to remove the addAction eh <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_newUnit", "_oldUnit"];
|
||||
|
||||
// add to new unit
|
||||
private _ehid = [_newUnit, "DefaultAction", {GVAR(openedMenuType) >= 0}, {
|
||||
if (!GVAR(actionOnKeyRelease) && GVAR(actionSelected)) then {
|
||||
[GVAR(openedMenuType),true] call FUNC(keyUp);
|
||||
};
|
||||
}] call EFUNC(common,addActionEventHandler);
|
||||
|
||||
_newUnit setVariable [QGVAR(AAEHID), _ehid];
|
||||
|
||||
// remove from old unit
|
||||
_ehid = _oldUnit getVariable [QGVAR(AAEHID), -1];
|
||||
|
||||
[_oldUnit, "DefaultAction", _ehid] call EFUNC(common,removeActionEventHandler);
|
||||
|
||||
_oldUnit setVariable [QGVAR(AAEHID), -1];
|
@ -104,4 +104,22 @@ if (GVAR(openedMenuType) == 0) then {
|
||||
|
||||
["ace_interactMenuOpened", [_menuType]] call CBA_fnc_localEvent;
|
||||
|
||||
//Remove the old "DefaultAction" action event handler if it already exists
|
||||
GVAR(blockDefaultActions) params [["_player", objNull], ["_ehid", -1]];
|
||||
TRACE_2("blockDefaultActions",_player,_ehid);
|
||||
if (!isNull _player) then {
|
||||
[_player, "DefaultAction", _ehid] call EFUNC(common,removeActionEventHandler);
|
||||
GVAR(blockDefaultActions) = [];
|
||||
};
|
||||
//Add the "DefaultAction" action event handler
|
||||
if (alive ACE_player) then {
|
||||
private _ehid = [ACE_player, "DefaultAction", {GVAR(openedMenuType) >= 0}, {
|
||||
if (!GVAR(actionOnKeyRelease) && GVAR(actionSelected)) then {
|
||||
[GVAR(openedMenuType),true] call FUNC(keyUp);
|
||||
};
|
||||
}] call EFUNC(common,addActionEventHandler);
|
||||
TRACE_2("Added",ACE_player,_ehid);
|
||||
GVAR(blockDefaultActions) = [ACE_player, _ehid];
|
||||
};
|
||||
|
||||
true
|
||||
|
@ -46,6 +46,14 @@ if(GVAR(actionSelected)) then {
|
||||
|
||||
["ace_interactMenuClosed", [GVAR(openedMenuType)]] call CBA_fnc_localEvent;
|
||||
|
||||
//Remove the "DefaultAction" action event handler
|
||||
GVAR(blockDefaultActions) params [["_player", objNull], ["_ehid", -1]];
|
||||
TRACE_2("blockDefaultActions",_player,_ehid);
|
||||
if (!isNull _player) then {
|
||||
[_player, "DefaultAction", _ehid] call EFUNC(common,removeActionEventHandler);
|
||||
GVAR(blockDefaultActions) = [];
|
||||
};
|
||||
|
||||
GVAR(keyDown) = false;
|
||||
GVAR(keyDownSelfAction) = false;
|
||||
GVAR(openedMenuType) = -1;
|
||||
|
Loading…
Reference in New Issue
Block a user