#include "..\script_component.hpp" #include "\a3\ui_f\hpp\defineDIKCodes.inc" /* * Author: AmsteadRayle * Handles keyboard inputs in medical menu. * * Arguments: * 1: Args * - 0: Menu display * - 1: Key being pressed * - 2: Shift state * - 3: Ctrl state * - 4: Alt state * * Return Value: * None * * Example: * ["", [displayNull, 5, false, false, false]] call ace_medical_gui_fnc_onKeyDown * * Public: No */ // TODO: Is the airway category ever visible? Can the dynamic category stuff be removed? #define NUMBER_KEYS [DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6, DIK_7, DIK_8, DIK_9, DIK_0] #define ALL_CATEGORIES ["triage", "examine", "bandage", "medication", "airway", "advanced", "drag", "toggle"] params ["", "_args"]; _args params ["_display", "_keyPressed", "_shiftState", "_ctrlState", "_altState"]; private _return = true; // Override existing keybinds for keys used here private _visibleCategories = [ "bandage","medication","airway","advanced","drag" ] select { private _category = _x; (GVAR(actions) findIf {_category == _x select 1}) > -1 }; private _allCategories = ["triage", "examine"] + _visibleCategories + ["toggle"]; // Use hashmap as a shortcut to "zip" two arrays together // Use categories as keys in hashmap because there are fewer, // otherwise the hashmap is padded with nil private _keyCategoryPairs = _allCategories createHashMapFromArray NUMBER_KEYS; private _temp_category = ""; private _temp_idc = 0; switch (true) do { // Dynamically assign number keys to visible categories { _temp_category = _x; // _x does not exist inside case code _temp_idc = IDC_TRIAGE + (ALL_CATEGORIES find _temp_category) * 10; case (_keyPressed == _y && {GVAR(selectedCategory) != _temp_category}): { if (ctrlEnabled _temp_idc) then { if (_temp_category == "toggle") then { call FUNC(handleToggle); } else { GVAR(selectedCategory) = _temp_category; }; } else { _return = false; }; }; } forEach _keyCategoryPairs; // Select body part through similar keyboard layout: // w // a s d // z x case (_keyPressed == DIK_W && {GVAR(selectedBodyPart) != 0}): { GVAR(selectedBodyPart) = 0; }; case (_keyPressed == DIK_S && {GVAR(selectedBodyPart != 1)}): { GVAR(selectedBodyPart) = 1; }; case (_keyPressed == DIK_D && {GVAR(selectedBodyPart) != 2}): { GVAR(selectedBodyPart) = 2; }; case (_keyPressed == DIK_A && {GVAR(selectedBodyPart) != 3}): { GVAR(selectedBodyPart) = 3; }; case (_keyPressed == DIK_X && {GVAR(selectedBodyPart) != 4}): { GVAR(selectedBodyPart) = 4; }; case (_keyPressed == DIK_Z && {GVAR(selectedBodyPart) != 5}): { GVAR(selectedBodyPart) = 5; }; default { _return = false; // Do not override existing keybinds for keys not used here }; }; if (_return) then { playSound ["SoundClick", true] }; _return