diff --git a/addons/medical_gui/functions/fnc_onKeyDown.sqf b/addons/medical_gui/functions/fnc_onKeyDown.sqf index 27496e643b..6b9013f8be 100644 --- a/addons/medical_gui/functions/fnc_onKeyDown.sqf +++ b/addons/medical_gui/functions/fnc_onKeyDown.sqf @@ -5,20 +5,25 @@ * Handles keyboard inputs in medical menu. * * Arguments: - * 0: Menu display - * 1: Key being pressed - * 2: Shift state - * 3: Ctrl state - * 4: Alt state + * 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"]; @@ -40,16 +45,23 @@ private _allCategories = ["triage", "examine"] + _visibleCategories + ["toggle"] 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 - case (_keyPressed == _y): { - GVAR(selectedCategory) = _temp_category; - if (_temp_category == "toggle") then { - call FUNC(handleToggle); - } + _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; @@ -57,22 +69,22 @@ switch (true) do { // w // a s d // z x - case (_keyPressed == DIK_W): { + case (_keyPressed == DIK_W && {GVAR(selectedBodyPart) != 0}): { GVAR(selectedBodyPart) = 0; }; - case (_keyPressed == DIK_S): { + case (_keyPressed == DIK_S && {GVAR(selectedBodyPart != 1)}): { GVAR(selectedBodyPart) = 1; }; - case (_keyPressed == DIK_D): { + case (_keyPressed == DIK_D && {GVAR(selectedBodyPart) != 2}): { GVAR(selectedBodyPart) = 2; }; - case (_keyPressed == DIK_A): { + case (_keyPressed == DIK_A && {GVAR(selectedBodyPart) != 3}): { GVAR(selectedBodyPart) = 3; }; - case (_keyPressed == DIK_X): { + case (_keyPressed == DIK_X && {GVAR(selectedBodyPart) != 4}): { GVAR(selectedBodyPart) = 4; }; - case (_keyPressed == DIK_Z): { + case (_keyPressed == DIK_Z && {GVAR(selectedBodyPart) != 5}): { GVAR(selectedBodyPart) = 5; }; @@ -81,4 +93,8 @@ switch (true) do { }; }; +if (_return) then { + playSound ["SoundClick", true] +}; + _return