ACE3/addons/common/functions/fnc_disableUserInput.sqf

112 lines
4.3 KiB
Plaintext
Raw Normal View History

/*
* Author: commy2
* Disables key input. ESC can still be pressed to open the menu.
*
2015-04-11 17:52:30 +00:00
* Arguments:
* 0: True to disable key inputs, false to re-enable them <BOOL>
*
* Return value:
* Nothing
2015-04-11 17:52:30 +00:00
*
* Public: Yes
*/
2015-04-11 17:52:30 +00:00
2015-01-13 19:56:02 +00:00
#include "script_component.hpp"
2015-05-14 18:06:06 +00:00
private ["_dlg"];
2015-05-14 18:06:06 +00:00
PARAMS_1(_state);
if (_state) then {
2015-04-11 17:52:30 +00:00
disableSerialization;
2015-04-11 17:52:30 +00:00
if (!isNull (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull])) exitWith {};
if ("ACE_DisableUserInput" in ([BIS_stackedEventHandlers_onEachFrame, {_this select 0}] call FUNC(map))) exitWith {};
2015-04-11 17:52:30 +00:00
// end TFAR and ACRE2 radio transmissions
call FUNC(endRadioTransmission);
2015-04-11 17:52:30 +00:00
// Close map
if (visibleMap && {!(player getVariable ["ACE_canSwitchUnits", false])}) then {
openMap false;
};
2015-04-11 17:52:30 +00:00
closeDialog 0;
createDialog QGVAR(DisableMouse_Dialog);
2015-04-11 17:52:30 +00:00
_dlg = uiNamespace getVariable QGVAR(dlgDisableMouse);
2015-04-11 17:52:30 +00:00
_dlg displayAddEventHandler ["KeyDown", {
2015-05-14 22:12:40 +00:00
private ["_key", "_dlg", "_ctrl", "_config", "_acc", "_index"];
_key = _this select 1;
2015-04-11 17:52:30 +00:00
if (_key == 1 && {alive player}) then {
createDialog (["RscDisplayInterrupt", "RscDisplayMPInterrupt"] select isMultiplayer);
disableSerialization;
_dlg = finddisplay 49;
_dlg displayAddEventHandler ["KeyDown", {
_key = _this select 1;
!(_key == 1)
}];
for "_index" from 100 to 2000 do {
(_dlg displayCtrl _index) ctrlEnable false;
};
_ctrl = _dlg displayctrl 103;
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput);)];
_ctrl ctrlEnable true;
_ctrl ctrlSetText "ABORT";
_ctrl ctrlSetTooltip "Abort.";
_ctrl = _dlg displayctrl ([104, 1010] select isMultiplayer);
_ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)];
_ctrl ctrlEnable (call {_config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}});
_ctrl ctrlSetText "RESPAWN";
_ctrl ctrlSetTooltip "Respawn.";
};
if (_key in actionKeys "TeamSwitch" && {teamSwitchEnabled}) then {
2015-04-11 18:05:22 +00:00
(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
_acc = accTime;
teamSwitch;
setAccTime _acc;
};
2015-04-11 17:52:30 +00:00
if (_key in actionKeys "CuratorInterface" && {getAssignedCuratorLogic player in allCurators}) then {
2015-04-11 18:05:22 +00:00
(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
openCuratorInterface;
2015-04-11 17:52:30 +00:00
};
if (_key in actionKeys "ShowMap" && {player getVariable ["ACE_canSwitchUnits", false]}) then {
2015-04-11 18:05:22 +00:00
(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
openMap true;
2015-04-11 17:52:30 +00:00
};
if (isServer || {serverCommandAvailable "#kick"} || {player getVariable ["ACE_isUnconscious", false] && {(call FUNC(player)) getVariable [QEGVAR(medical,AllowChatWhileUnconscious), missionNamespace getVariable [QEGVAR(medical,AllowChatWhileUnconscious), false]]}}) then {
2015-04-11 17:52:30 +00:00
if (!(_key in (actionKeys "DefaultAction" + actionKeys "Throw")) && {_key in (actionKeys "Chat" + actionKeys "PrevChannel" + actionKeys "NextChannel")}) then {
_key = 0;
};
};
_key > 0
}];
_dlg displayAddEventHandler ["KeyUp", {true}];
["ACE_DisableUserInput", "onEachFrame", {
if (isNull (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) && {!visibleMap && isNull findDisplay 49 && isNull findDisplay 312 && isNull findDisplay 632}) then {
["ACE_DisableUserInput", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
[true] call FUNC(disableUserInput);
};
}] call BIS_fnc_addStackedEventHandler;
} else {
2015-04-11 17:52:30 +00:00
if ("ACE_DisableUserInput" in ([BIS_stackedEventHandlers_onEachFrame, {_this select 0}] call FUNC(map))) then {
["ACE_DisableUserInput", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
};
2015-04-11 17:52:30 +00:00
(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
};