From 09ebd0fddf04f25f4508775e5f1e92aa222247b9 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Sun, 19 Feb 2023 03:46:36 -0300 Subject: [PATCH] lizard content --- code/__DEFINES/screentips.dm | 2 +- code/__HELPERS/screentips.dm | 41 +++++++++--------- code/game/atoms.dm | 17 ++++---- code/modules/client/preferences.dm | 6 +++ code/modules/client/preferences_savefile.dm | 2 + icons/UI_Icons/screentips/cursor_hints.dmi | Bin 0 -> 468 bytes .../screentips/cursor_hints_outline.dmi | Bin 0 -> 490 bytes 7 files changed, 38 insertions(+), 30 deletions(-) create mode 100644 icons/UI_Icons/screentips/cursor_hints.dmi create mode 100644 icons/UI_Icons/screentips/cursor_hints_outline.dmi diff --git a/code/__DEFINES/screentips.dm b/code/__DEFINES/screentips.dm index a3b1018352..4918db85ce 100644 --- a/code/__DEFINES/screentips.dm +++ b/code/__DEFINES/screentips.dm @@ -32,4 +32,4 @@ #define SCREENTIP_PREFERENCE_CONTEXT_ONLY "Only with tips" /// Regardless of intent -#define INTENT_ANY "intent_any" +#define INTENT_ANY "any" diff --git a/code/__HELPERS/screentips.dm b/code/__HELPERS/screentips.dm index 967e1c3bb6..fc6673a006 100644 --- a/code/__HELPERS/screentips.dm +++ b/code/__HELPERS/screentips.dm @@ -1,31 +1,30 @@ +#define HINT_ICON_FILE 'icons/UI_Icons/screentips/cursor_hints.dmi' + // Generate intent icons -/// Help intent icon for screentip context -GLOBAL_DATUM_INIT(icon_intent_help, /image, image('icons/emoji.dmi', icon_state = INTENT_HELP)) -/// Disarm intent icon for screentip context -GLOBAL_DATUM_INIT(icon_intent_disarm, /image, image('icons/emoji.dmi', icon_state = INTENT_DISARM)) -/// Grab intent icon for screentip context -GLOBAL_DATUM_INIT(icon_intent_grab, /image, image('icons/emoji.dmi', icon_state = INTENT_GRAB)) -/// Harm intent icon for screentip context -GLOBAL_DATUM_INIT(icon_intent_harm, /image, image('icons/emoji.dmi', icon_state = INTENT_HARM)) +GLOBAL_LIST_INIT_TYPED(screentip_context_icons, /image, prepare_screentip_context_icons()) + +/proc/prepare_screentip_context_icons() + . = list() + for(var/state in icon_states(HINT_ICON_FILE)) + .[state] = image(HINT_ICON_FILE, icon_state = state) /* * # Builds context with each intent for this key * Args: * - context = list (REQUIRED) * - key = string (REQUIRED) + * - allow_image = boolean (not required) */ -/proc/build_context(list/context, key) +/proc/build_context(list/context, key, allow_image) var/list/to_add for(var/intent in context[key]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[GLOB.icon_intent_help] [key]: [context[key][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[GLOB.icon_intent_disarm] [key]: [context[key][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[GLOB.icon_intent_grab] [key]: [context[key][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[GLOB.icon_intent_harm] [key]: [context[key][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[key]: [context[key][intent]]") - return english_list(to_add, "", " ", " ") + var/key_help = "[length(key) > 3 ? copytext(key, 1, -3) : ""]" + var/icon = "[copytext(key, -3)]-[intent]" + if(allow_image) + icon = "\icon[GLOB.screentip_context_icons[icon]]" + LAZYADD(to_add, "[key_help][icon]: [context[key][intent]]") + + var/separator = "[allow_image ? " " : " | "]" + return english_list(to_add, "", separator, separator) + +#undef HINT_ICON_FILE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 911a91bea3..ba2d6ad56c 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1470,6 +1470,7 @@ if (isliving(user) || isovermind(user) || isaicamera(user)) var/obj/item/held_item = user.get_active_held_item() + var/allow_images = user.client.prefs.screentip_allow_images if (flags_1 & HAS_CONTEXTUAL_SCREENTIPS_1 || held_item?.item_flags & ITEM_HAS_CONTEXTUAL_SCREENTIPS) var/list/context = list() @@ -1482,10 +1483,10 @@ // LMB and RMB on one line... var/lmb_text = "" if((SCREENTIP_CONTEXT_LMB in context) && (length(context[SCREENTIP_CONTEXT_LMB]) > 0)) - lmb_text = build_context(context, SCREENTIP_CONTEXT_LMB) + lmb_text = build_context(context, SCREENTIP_CONTEXT_LMB, allow_images) var/rmb_text = "" if((SCREENTIP_CONTEXT_RMB in context) && (length(context[SCREENTIP_CONTEXT_RMB]) > 0)) - rmb_text = build_context(context, SCREENTIP_CONTEXT_RMB) + rmb_text = build_context(context, SCREENTIP_CONTEXT_RMB, allow_images) if (lmb_text) lmb_rmb_line = lmb_text @@ -1499,37 +1500,37 @@ lmb_rmb_line += "
" extra_lines++ if((SCREENTIP_CONTEXT_CTRL_LMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_LMB]) > 0)) - ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_LMB) + ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_LMB, allow_images) if((SCREENTIP_CONTEXT_CTRL_RMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_RMB]) > 0)) if (ctrl_lmb_ctrl_rmb_line != "") ctrl_lmb_ctrl_rmb_line += " | " ctrl_lmb_ctrl_rmb_line += "[SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB]]" - ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_RMB) + ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_RMB, allow_images) // Alt-LMB, Alt-RMB on one line... if (ctrl_lmb_ctrl_rmb_line != "") ctrl_lmb_ctrl_rmb_line += "
" extra_lines++ if((SCREENTIP_CONTEXT_ALT_LMB in context) && (length(context[SCREENTIP_CONTEXT_ALT_LMB]) > 0)) - alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_LMB) + alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_LMB, allow_images) if((SCREENTIP_CONTEXT_ALT_RMB in context) && (length(context[SCREENTIP_CONTEXT_ALT_RMB]) > 0)) if (alt_lmb_alt_rmb_line != "") alt_lmb_alt_rmb_line += " | " - alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_RMB) + alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_RMB, allow_images) // Shift-LMB, Ctrl-Shift-LMB on one line... if (alt_lmb_alt_rmb_line != "") alt_lmb_alt_rmb_line += "
" extra_lines++ if((SCREENTIP_CONTEXT_SHIFT_LMB in context) && (length(context[SCREENTIP_CONTEXT_SHIFT_LMB]) > 0)) - shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_SHIFT_LMB) + shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_SHIFT_LMB, allow_images) if((SCREENTIP_CONTEXT_CTRL_SHIFT_LMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]) > 0)) 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]]" - shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_SHIFT_LMB) + shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_SHIFT_LMB, allow_images) if (shift_lmb_ctrl_shift_lmb_line != "") extra_lines++ diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1e83285139..744ab254ae 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -64,6 +64,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/outline_color = COLOR_THEME_MIDNIGHT var/screentip_pref = SCREENTIP_PREFERENCE_ENABLED var/screentip_color = "#ffd391" + var/screentip_allow_images = FALSE var/buttons_locked = FALSE var/hotkeys = FALSE @@ -829,6 +830,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Outline Color: [outline_color ? "" : "Theme-based (null)"]    Change
" dat += "Screentip: [screentip_pref]
" dat += "Screentip Color:     Change
" + dat += "\ + Screentip context with images: [screentip_allow_images ? "Allowed" : "Disallowed"]
" dat += "tgui Monitors: [(tgui_lock) ? "Primary" : "All"]
" dat += "tgui Style: [(tgui_fancy) ? "Fancy" : "No Frills"]
" dat += "Show Runechat Chat Bubbles: [chat_on_map ? "Enabled" : "Disabled"]
" @@ -2925,6 +2929,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/pickedScreentipColor = input(user, "Choose your screentip color.", "General Preference", screentip_color) as color|null if(pickedScreentipColor) screentip_color = pickedScreentipColor + if("screentip_allow_images") + screentip_allow_images = !screentip_allow_images if("tgui_lock") tgui_lock = !tgui_lock if("winflash") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index c0386e8f45..cbd35a290c 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -423,6 +423,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["outline_enabled"] >> outline_enabled S["screentip_pref"] >> screentip_pref S["screentip_color"] >> screentip_color + S["screentip_allow_images"] >> screentip_allow_images S["hotkeys"] >> hotkeys S["chat_on_map"] >> chat_on_map S["max_chat_length"] >> max_chat_length @@ -611,6 +612,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["outline_color"], outline_color) WRITE_FILE(S["screentip_pref"], screentip_pref) WRITE_FILE(S["screentip_color"], screentip_color) + WRITE_FILE(S["screentip_allow_images"], screentip_allow_images) WRITE_FILE(S["hotkeys"], hotkeys) WRITE_FILE(S["chat_on_map"], chat_on_map) WRITE_FILE(S["max_chat_length"], max_chat_length) diff --git a/icons/UI_Icons/screentips/cursor_hints.dmi b/icons/UI_Icons/screentips/cursor_hints.dmi new file mode 100644 index 0000000000000000000000000000000000000000..01c1dfe33e96128ebf7cbe621a45bdd6b8748567 GIT binary patch literal 468 zcmV;_0W1EAP)h(O0RI30z`($Zm&CdN0004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#atzJ5I5Sc+ z(=$pSoZ^zil2jm5DJds0FI$O=GbOXA7$n8TnO2mTn+jpWRr&Zj=_ck?5~VI9HK%|m zg(;cEiAA|YDNQd*Od`&5VoVGo(l(7DOswt%}53PoCVnjG2!x)RO^XhMLstYbx}DV(z3;In^&PoeHJ z7X6=UoO^&VEalqSymksZGFucLjgFfIp(t?3s_uvM@AT@T=fF`;C0000< KMNUMnLSTZN<-%D2 literal 0 HcmV?d00001 diff --git a/icons/UI_Icons/screentips/cursor_hints_outline.dmi b/icons/UI_Icons/screentips/cursor_hints_outline.dmi new file mode 100644 index 0000000000000000000000000000000000000000..32e0b8f67cd949ff155bd2e4d8d91e387b57e1d3 GIT binary patch literal 490 zcmVh(O0RI30z`($+MRoW90004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#atzJ5I5Sc+ z(=$pSoZ^zil2jm5DJds0FI$O=GbOXA7$n8TnO2mTn+jpWRr&Zj=_ck?5~VI9HK%|m zg(;cEiAA|YDNQd*Od`&5VoVGo(lKiix