mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
04269831e8
The hacky keybind detection method should consider modifier keys also to prevent keybinds on the same key with different modifiers from firing
107 lines
4.1 KiB
Plaintext
107 lines
4.1 KiB
Plaintext
//XEH_clientInit.sqf
|
|
#include "script_component.hpp"
|
|
|
|
if (!hasInterface) exitWith {};
|
|
|
|
GVAR(cachedBuildingTypes) = [];
|
|
GVAR(cachedBuildingActionPairs) = [];
|
|
|
|
GVAR(ParsedTextCached) = [];
|
|
|
|
//Setup text/shadow/size/color settings matrix
|
|
[] call FUNC(setupTextColors);
|
|
["SettingChanged", {
|
|
PARAMS_1(_name);
|
|
if (_name in [QGVAR(colorTextMax), QGVAR(colorTextMin), QGVAR(colorShadowMax), QGVAR(colorShadowMin), QGVAR(textSize), QGVAR(shadowSetting)]) then {
|
|
[] call FUNC(setupTextColors);
|
|
};
|
|
}] call EFUNC(common,addEventhandler);
|
|
|
|
// Install the render EH on the main display
|
|
addMissionEventHandler ["Draw3D", DFUNC(render)];
|
|
|
|
//Add Actions to Houses:
|
|
["interactMenuOpened", {_this call FUNC(userActions_addHouseActions)}] call EFUNC(common,addEventHandler);
|
|
|
|
// This spawn is probably worth keeping, as pfh don't work natively on the briefing screen and IDK how reliable the hack we implemented for them is.
|
|
// The thread dies as soon as the mission start, so it's not really compiting for scheduler space.
|
|
[] spawn {
|
|
// Wait until the map display is detected
|
|
waitUntil {(!isNull findDisplay 12)};
|
|
|
|
// Install the render EH on the map screen
|
|
((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", DFUNC(render)];
|
|
};
|
|
|
|
|
|
["ACE3 Common", QGVAR(InteractKey), (localize LSTRING(InteractKey)),
|
|
{
|
|
// Statement
|
|
[0] call FUNC(keyDown)
|
|
},{[0,false] call FUNC(keyUp)},
|
|
[219, [false, false, false]], false] call cba_fnc_addKeybind; //Left Windows Key
|
|
|
|
["ACE3 Common", QGVAR(SelfInteractKey), (localize LSTRING(SelfInteractKey)),
|
|
{
|
|
// Statement
|
|
[1] call FUNC(keyDown)
|
|
},{[1,false] call FUNC(keyUp)},
|
|
[219, [false, true, false]], false] call cba_fnc_addKeybind; //Left Windows Key + Ctrl/Strg
|
|
|
|
|
|
// Listens for the falling unconscious event, just in case the menu needs to be closed
|
|
["medical_onUnconscious", {
|
|
// If no menu is open just quit
|
|
if (GVAR(openedMenuType) < 0) exitWith {};
|
|
|
|
EXPLODE_2_PVT(_this,_unit,_isUnconscious);
|
|
|
|
if (_unit != ACE_player || !_isUnconscious) exitWith {};
|
|
|
|
GVAR(actionSelected) = false;
|
|
[GVAR(openedMenuType), false] call FUNC(keyUp);
|
|
}] call EFUNC(common,addEventhandler);
|
|
|
|
// disable firing while the interact menu is is is opened
|
|
["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventHandler);
|
|
|
|
// background options
|
|
["interactMenuOpened", {
|
|
if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), true] call EFUNC(common,blurScreen);};
|
|
if (GVAR(menuBackground)==2) then {0 cutRsc[QGVAR(menuBackground), "PLAIN", 1, false];};
|
|
}] call EFUNC(common,addEventHandler);
|
|
["interactMenuClosed", {
|
|
if (GVAR(menuBackground)==1) then {[QGVAR(menuBackground), false] call EFUNC(common,blurScreen);};
|
|
if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;};
|
|
}] call EFUNC(common,addEventHandler);
|
|
|
|
// Let key work with zeus open (not perfect, contains workaround to prevent other CBA keybindings)
|
|
["zeusDisplayChanged",{
|
|
if (_this select 1) then {
|
|
(finddisplay 312) displayAddEventHandler ["KeyUp", {
|
|
_key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind;
|
|
_key = _key select 5;
|
|
_dik = _key select 0;
|
|
_mods = _key select 1;
|
|
|
|
if ((_this select 1) == _dik) then {
|
|
if ((_this select [2,3]) isEqualTo _mods) then {
|
|
[_this,'keyup'] call CBA_events_fnc_keyHandler
|
|
};
|
|
};
|
|
}];
|
|
(finddisplay 312) displayAddEventHandler ["KeyDown", {
|
|
_key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind;
|
|
_key = _key select 5;
|
|
_dik = _key select 0;
|
|
_mods = _key select 1;
|
|
|
|
if ((_this select 1) == _dik) then {
|
|
if ((_this select [2,3]) isEqualTo _mods) then {
|
|
[_this,'keydown'] call CBA_events_fnc_keyHandler
|
|
};
|
|
};
|
|
}];
|
|
};
|
|
}] call EFUNC(common,addEventHandler);
|