From 5e70bf3d6b062ffc7c22a04f692ff750536fae48 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 24 Feb 2022 12:49:11 +0100 Subject: [PATCH] [MIRROR] Silicon airlock hotkey screen tips [MDB IGNORE] (#11706) * Silicon airlock hotkey screen tips (#64991) * Silicon airlock hotkey screen tips Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com> --- code/__DEFINES/screentips.dm | 6 ++++++ code/game/atoms.dm | 25 +++++++++++++++++++++++-- code/game/machinery/doors/airlock.dm | 17 +++++++++++++++++ code/game/machinery/doors/door.dm | 4 ++-- 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/screentips.dm b/code/__DEFINES/screentips.dm index 9d07a72c618..a7916fb78a1 100644 --- a/code/__DEFINES/screentips.dm +++ b/code/__DEFINES/screentips.dm @@ -4,12 +4,18 @@ /// Context applied to RMB actions #define SCREENTIP_CONTEXT_RMB "RMB" +/// Context applied to Shift-LMB actions +#define SCREENTIP_CONTEXT_SHIFT_LMB "Shift-LMB" + /// Context applied to Ctrl-LMB actions #define SCREENTIP_CONTEXT_CTRL_LMB "Ctrl-LMB" /// Context applied to Alt-LMB actions #define SCREENTIP_CONTEXT_ALT_LMB "Alt-LMB" +/// Context applied to Ctrl-Shift-LMB actions +#define SCREENTIP_CONTEXT_CTRL_SHIFT_LMB "Ctrl-Shift-LMB" + /// Screentips are always disabled #define SCREENTIP_PREFERENCE_DISABLED "Disabled" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 25a6ea39e6e..0fe5237cb56 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -2131,11 +2131,14 @@ if(screentips_enabled == SCREENTIP_PREFERENCE_DISABLED || (flags_1 & NO_SCREENTIPS_1)) active_hud.screentip_text.maptext = "" else + active_hud.screentip_text.maptext_y = 0 var/lmb_rmb_line = "" var/ctrl_lmb_alt_lmb_line = "" + var/shift_lmb_ctrl_shift_lmb_line = "" + var/extra_lines = 0 var/extra_context = "" - if (isliving(user) || isovermind(user)) + if (isliving(user) || isovermind(user) || isaicamera(user)) var/obj/item/held_item = user.get_active_held_item() if ((flags_1 & HAS_CONTEXTUAL_SCREENTIPS_1) || (held_item?.item_flags & ITEM_HAS_CONTEXTUAL_SCREENTIPS)) @@ -2160,6 +2163,7 @@ // Ctrl-LMB, Alt-LMB on one line... if (lmb_rmb_line != "") lmb_rmb_line += "
" + extra_lines++ if (SCREENTIP_CONTEXT_CTRL_LMB in context) ctrl_lmb_alt_lmb_line += "[SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB]]" if (SCREENTIP_CONTEXT_ALT_LMB in context) @@ -2167,7 +2171,24 @@ ctrl_lmb_alt_lmb_line += " | " ctrl_lmb_alt_lmb_line += "[SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB]]" - extra_context = "
[lmb_rmb_line][ctrl_lmb_alt_lmb_line]" + // Shift-LMB, Ctrl-Shift-LMB on one line... + if (ctrl_lmb_alt_lmb_line != "") + ctrl_lmb_alt_lmb_line += "
" + extra_lines++ + if (SCREENTIP_CONTEXT_SHIFT_LMB in context) + shift_lmb_ctrl_shift_lmb_line += "[SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB]]" + if (SCREENTIP_CONTEXT_CTRL_SHIFT_LMB in context) + if (shift_lmb_ctrl_shift_lmb_line != "") + shift_lmb_ctrl_shift_lmb_line += " | " + shift_lmb_ctrl_shift_lmb_line += "[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]]" + + if (shift_lmb_ctrl_shift_lmb_line != "") + extra_lines++ + + if(extra_lines) + extra_context = "
[lmb_rmb_line][ctrl_lmb_alt_lmb_line][shift_lmb_ctrl_shift_lmb_line]" + //first extra line pushes atom name line up 10px, subsequent lines push it up 9px, this offsets that and keeps the first line in the same place + active_hud.screentip_text.maptext_y = -10 + (extra_lines - 1) * -9 if (screentips_enabled == SCREENTIP_PREFERENCE_CONTEXT_ONLY && extra_context == "") active_hud.screentip_text.maptext = "" diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 54b5d459c78..337654b9bea 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -651,10 +651,27 @@ /obj/machinery/door/airlock/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() + if(isAI(user) || iscyborg(user)) + if(!(machine_stat & BROKEN)) + var/ui = SStgui.try_update_ui(user, src) + if(!ui && !held_item) + context[SCREENTIP_CONTEXT_LMB] = "Open UI" + context[SCREENTIP_CONTEXT_SHIFT_LMB] = density ? "Open" : "Close" + context[SCREENTIP_CONTEXT_CTRL_LMB] = locked ? "Unbolt" : "Bolt" + context[SCREENTIP_CONTEXT_ALT_LMB] = isElectrified() ? "Unelectrify" : "Electrify" + context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB] = emergency ? "Unset emergency access" : "Set emergency access" + . = CONTEXTUAL_SCREENTIP_SET + if(!isliving(user)) return . + if(!Adjacent(user)) + return . + switch (held_item?.tool_behaviour) + if (TOOL_SCREWDRIVER) + context[SCREENTIP_CONTEXT_LMB] = panel_open ? "Close panel" : "Open panel" + return CONTEXTUAL_SCREENTIP_SET if (TOOL_CROWBAR) if (panel_open) if (security_level == AIRLOCK_SECURITY_PLASTEEL_O_S || security_level == AIRLOCK_SECURITY_PLASTEEL_I_S) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 1884b0c9ebf..ef0f69e05d3 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -55,10 +55,10 @@ /obj/machinery/door/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() - if(!isliving(user)) + if(isaicamera(user) || issilicon(user)) return . - if (isnull(held_item)) + if (isnull(held_item) && Adjacent(user)) context[SCREENTIP_CONTEXT_LMB] = "Open" return CONTEXTUAL_SCREENTIP_SET