From 8ea39f9cf4c6a32567647dcde9ad714afae836a0 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Fri, 10 Feb 2023 00:39:04 -0300 Subject: [PATCH] helpers --- code/__HELPERS/screentips.dm | 31 +++++ code/game/atoms.dm | 136 ++----------------- code/game/objects/structures/tables_racks.dm | 2 +- tgstation.dme | 1 + 4 files changed, 41 insertions(+), 129 deletions(-) create mode 100644 code/__HELPERS/screentips.dm diff --git a/code/__HELPERS/screentips.dm b/code/__HELPERS/screentips.dm new file mode 100644 index 0000000000..967e1c3bb6 --- /dev/null +++ b/code/__HELPERS/screentips.dm @@ -0,0 +1,31 @@ +// 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)) + +/* + * # Builds context with each intent for this key + * Args: + * - context = list (REQUIRED) + * - key = string (REQUIRED) +*/ +/proc/build_context(list/context, key) + 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, "", " ", " ") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index deed93676e..911a91bea3 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1468,22 +1468,6 @@ var/extra_lines = 0 var/extra_context = "" - // Generate intent icons - var/static/image/intent_help - if(!intent_help) - intent_help = image('icons/emoji.dmi', icon_state = INTENT_HELP) - var/static/image/intent_disarm - if(!intent_disarm) - intent_disarm = image('icons/emoji.dmi', icon_state = INTENT_DISARM) - var/static/image/intent_grab - if(!intent_grab) - intent_grab = image('icons/emoji.dmi', icon_state = INTENT_GRAB) - var/static/image/intent_harm - if(!intent_harm) - intent_harm = image('icons/emoji.dmi', icon_state = INTENT_HARM) - // - - if (isliving(user) || isovermind(user) || isaicamera(user)) var/obj/item/held_item = user.get_active_held_item() @@ -1498,36 +1482,10 @@ // LMB and RMB on one line... var/lmb_text = "" if((SCREENTIP_CONTEXT_LMB in context) && (length(context[SCREENTIP_CONTEXT_LMB]) > 0)) - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_LMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_LMB]: [context[SCREENTIP_CONTEXT_LMB][intent]]") - lmb_text = english_list(to_add, "", " | ", " | ", " | ") + lmb_text = build_context(context, SCREENTIP_CONTEXT_LMB) var/rmb_text = "" if((SCREENTIP_CONTEXT_RMB in context) && (length(context[SCREENTIP_CONTEXT_RMB]) > 0)) - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_RMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_RMB]: [context[SCREENTIP_CONTEXT_RMB][intent]]") - rmb_text = english_list(to_add, "", " | ", " | ", " | ") + rmb_text = build_context(context, SCREENTIP_CONTEXT_RMB) if (lmb_text) lmb_rmb_line = lmb_text @@ -1541,115 +1499,37 @@ lmb_rmb_line += "
" extra_lines++ if((SCREENTIP_CONTEXT_CTRL_LMB in context) && (length(context[SCREENTIP_CONTEXT_CTRL_LMB]) > 0)) - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_CTRL_LMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_CTRL_LMB]: [context[SCREENTIP_CONTEXT_CTRL_LMB][intent]]") - ctrl_lmb_ctrl_rmb_line = english_list(to_add, "", " | ", " | ", " | ") + ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_LMB) 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]]" - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_CTRL_RMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_CTRL_RMB]: [context[SCREENTIP_CONTEXT_CTRL_RMB][intent]]") - ctrl_lmb_ctrl_rmb_line = english_list(to_add, "", " | ", " | ", " | ") + ctrl_lmb_ctrl_rmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_RMB) // 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)) - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_ALT_LMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_ALT_LMB]: [context[SCREENTIP_CONTEXT_ALT_LMB][intent]]") - alt_lmb_alt_rmb_line = english_list(to_add, "", " | ", " | ", " | ") + alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_LMB) 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 += " | " - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_ALT_RMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_ALT_RMB]: [context[SCREENTIP_CONTEXT_ALT_RMB][intent]]") - alt_lmb_alt_rmb_line = english_list(to_add, "", " | ", " | ", " | ") + alt_lmb_alt_rmb_line = build_context(context, SCREENTIP_CONTEXT_ALT_RMB) // 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)) - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_SHIFT_LMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_SHIFT_LMB][intent]]") - shift_lmb_ctrl_shift_lmb_line = english_list(to_add, "", " | ", " | ", " | ") + shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_SHIFT_LMB) 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]]" - var/list/to_add - for(var/intent in context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]) - switch(intent) - if(INTENT_HELP) - LAZYADD(to_add, "\icon[intent_help] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_HELP]]") - if(INTENT_DISARM) - LAZYADD(to_add, "\icon[intent_disarm] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_DISARM]]") - if(INTENT_GRAB) - LAZYADD(to_add, "\icon[intent_grab] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_GRAB]]") - if(INTENT_HARM) - LAZYADD(to_add, "\icon[intent_harm] [SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][INTENT_HARM]]") - else // If you're adding intent-less YOU BETTER ADD IT FIRST IN THE LIST - LAZYADD(to_add, "[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB]: [context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB][intent]]") - shift_lmb_ctrl_shift_lmb_line = english_list(to_add, "", " | ", " | ", " | ") + shift_lmb_ctrl_shift_lmb_line = build_context(context, SCREENTIP_CONTEXT_CTRL_SHIFT_LMB) if (shift_lmb_ctrl_shift_lmb_line != "") extra_lines++ diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 38b9737104..b7642f4658 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -41,7 +41,7 @@ . = ..() var/static/list/barehanded_interactions = list( - INTENT_HELP = "Slap", + INTENT_ANY = "Slap", INTENT_HARM = "Slam" ) diff --git a/tgstation.dme b/tgstation.dme index c958a86148..6c23e295ee 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -212,6 +212,7 @@ #include "code\__HELPERS\reagents.dm" #include "code\__HELPERS\roundend.dm" #include "code\__HELPERS\sanitize_values.dm" +#include "code\__HELPERS\screentips.dm" #include "code\__HELPERS\shell.dm" #include "code\__HELPERS\stat_tracking.dm" #include "code\__HELPERS\text.dm"