ACE3/addons/xm157/functions/fnc_keyPress.sqf
PabstMirror cc3bad3c56
XM157 (NGSW-FC Smart Scope) Framework (#8897)
* XM157 (NGSW-FC Smart Scope)

* Update addons/common/functions/fnc_rscObjectHelper.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Update addons/xm157/functions/fnc_weaponInfo_draw.sqf

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>

* Headers

* Handle prone-deploy weapon bank

* Disable Reticle picker for now

* some localizations

* Change font

looks like CUP modifies EtelkaMonospaceProBold for some reason??

* Create xm157-framework.md

* Formating

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
2022-09-01 13:44:19 -05:00

68 lines
2.1 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: PabstMirror
* Handles key presses
*
* Arguments:
* 0: Type <STRING>
* 1: IsKeyDown <BOOL>
*
* Return Value:
* Handled <BOOL>
*
* Example:
* ["range", true] call ace_xm157_fnc_keyPress
*
* Public: No
*/
params ["_func", "_keyDown"];
if (!GVAR(shown)) exitWith { false }; // fast exit if not shown
if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith { false };
if (!(ACE_player call CBA_fnc_canUseWeapon)) exitWith { false };
private _display = uinamespace getVariable [QGVAR(display), displayNull];
if (isNull _display) exitWith { ERROR("keyPress-no display"); false };
if (_keyDown) then { playSound QGVAR(click); };
GVAR(data) set ["lastInputTime", CBA_missionTime];
call {
if (_func == "range") exitWith {
if (_keyDown) then {
GVAR(data) set ["range_keyDownStart", CBA_missionTime];
} else {
private _holdTime = CBA_missionTime - (GVAR(data) getOrDefault ["range_keyDownStart", 0]);
private _range = 0;
if (_holdTime < 0.5) then {
private _distance = round parseNumber ctrlText (_display displayCtrl 151);
if (_distance > 10 && {_distance < RANGEFINDER_MAX}) then {
_range = _distance;
} else {
_range = -1; // bad return
};
};
TRACE_1("Updating range",_range);
GVAR(data) set ["range", _range];
};
};
if (!_keyDown) exitWith {};
GVAR(data) set ["menu_updated", true];
private _index = GVAR(data) getOrDefault ["menu_index", 0];
if (_func in ["left", "right"]) exitWith {
_index = (_index + ([-1, 1] select (_func == "right")) + count GVAR(menu)) % count GVAR(menu);
GVAR(data) set ["menu_index", _index];
};
(GVAR(menu) # _index) params ["", "_var", "_thing", ["_upAction", {}], ["_downAction", {}]];
if (_func == "up") exitWith {
[_index, _var, _thing] call _upAction;
};
if (_func == "down") exitWith {
[_index, _var, _thing] call _downAction;
};
};
true