From 585345e5141b2334c756c8b8589caaf1b4937934 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 16 Mar 2022 01:02:21 -0500 Subject: [PATCH 01/34] hmm --- code/__HELPERS/game.dm | 3 ++- icons/mob/talk.dmi | Bin 5663 -> 5984 bytes yogstation/code/modules/mob/say.dm | 28 +++++++++++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index a9ca78b21d2a..140262203042 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -401,7 +401,8 @@ /proc/flick_overlay(image/I, list/show_to, duration) for(var/client/C in show_to) C.images += I - addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) + if(duration) + addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) /proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom var/list/viewing = list() diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 7d4845f16a4513ce85115862b85344a086ca9938..58278e50ff64c3afbfed31160bd556607862ef22 100644 GIT binary patch literal 5984 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 literal 5663 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 TIW7bE@C&+PX=71y(L42TS%<8_ diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index b29357823e73..88b39ca6c471 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -1,3 +1,29 @@ /mob/proc/get_say() + create_typing_indicator() var/msg = input(src, null, "say \"text\"") as text|null - say_verb(msg) \ No newline at end of file + remove_typing_indicator() + say_verb(msg) + +/mob + var/image/typing_overlay + var/list/speech_bubble_recipients + +/mob/proc/create_typing_indicator() + if(typing_overlay) return + var/list/listening = get_hearers_in_view(6, src) //we do a little bit of hardcoding + speech_bubble_recipients = list() + for(var/mob/M in listening) + if(M.client) + speech_bubble_recipients.Add(M.client) + typing_overlay = image('icons/mob/talk.dmi', src, "default_t", FLY_LAYER) + typing_overlay.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA + INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) + + return + +/mob/proc/remove_typing_indicator() + if(!typing_overlay) return + INVOKE_ASYNC(GLOBAL_PROC, /proc/remove_images_from_clients, typing_overlay, speech_bubble_recipients) + typing_overlay = null + speech_bubble_recipients = list() + return From ceb08c020496182c70abaee9a213100cbd64cff4 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 16 Mar 2022 01:12:24 -0500 Subject: [PATCH 02/34] use nmajask's stuff --- icons/mob/talk.dmi | Bin 5984 -> 9159 bytes yogstation/code/modules/mob/say.dm | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 58278e50ff64c3afbfed31160bd556607862ef22..6ee13c41f0626677b00eb8b787f6a4e5affe057b 100644 GIT binary patch literal 9159 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 literal 5984 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 diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 88b39ca6c471..1ac18ffa92bd 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -15,7 +15,7 @@ for(var/mob/M in listening) if(M.client) speech_bubble_recipients.Add(M.client) - typing_overlay = image('icons/mob/talk.dmi', src, "default_t", FLY_LAYER) + typing_overlay = image('icons/mob/talk.dmi', src, "default_talking", FLY_LAYER) typing_overlay.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) From 1eef169c750751aa40bdc2703d49d820b297462f Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 16 Mar 2022 18:39:13 -0500 Subject: [PATCH 03/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 1ac18ffa92bd..27e809fe259f 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -1,3 +1,5 @@ +#define TYPING_INDICATOR_RANGE 7 + /mob/proc/get_say() create_typing_indicator() var/msg = input(src, null, "say \"text\"") as text|null @@ -9,8 +11,9 @@ var/list/speech_bubble_recipients /mob/proc/create_typing_indicator() - if(typing_overlay) return - var/list/listening = get_hearers_in_view(6, src) //we do a little bit of hardcoding + if(typing_overlay) + return + var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) if(M.client) @@ -22,8 +25,10 @@ return /mob/proc/remove_typing_indicator() - if(!typing_overlay) return + if(!typing_overlay) + return INVOKE_ASYNC(GLOBAL_PROC, /proc/remove_images_from_clients, typing_overlay, speech_bubble_recipients) typing_overlay = null speech_bubble_recipients = list() - return + +#undef TYPING_INDICATOR_RANGE From 35c16f302d6cfe6fa0b58f3dfb76706544b44351 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 16 Mar 2022 18:40:19 -0500 Subject: [PATCH 04/34] Update talk.dmi --- icons/mob/talk.dmi | Bin 9159 -> 14392 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 6ee13c41f0626677b00eb8b787f6a4e5affe057b..6ac9eaa0dbd7de105b88530e75d2140c18c332d1 100644 GIT binary patch literal 14392 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 OXT9J4hupmXE% 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 From 4909d6c2db9ad1c72022b56efae9482747893d35 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 16 Mar 2022 18:56:53 -0500 Subject: [PATCH 05/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 27e809fe259f..e3d0f9039646 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -18,7 +18,11 @@ for(var/mob/M in listening) if(M.client) speech_bubble_recipients.Add(M.client) - typing_overlay = image('icons/mob/talk.dmi', src, "default_talking", FLY_LAYER) + var/bubble = "default" + if(isliving(src)) + var/mob/living/L = src + bubble = L.bubble_icon + typing_overlay = image('icons/mob/talk.dmi', src, "[bubble]_talking", FLY_LAYER) typing_overlay.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) From bc1f33be2c282d95ef859c38fff621c953ee8b26 Mon Sep 17 00:00:00 2001 From: nmajask Date: Thu, 17 Mar 2022 14:50:46 -0400 Subject: [PATCH 06/34] Update yogstation/code/modules/mob/say.dm --- yogstation/code/modules/mob/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index e3d0f9039646..477125ebd153 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -16,7 +16,7 @@ var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) - if(M.client) + if(M.client && !(isobserver(src) && !isobserver(M))) speech_bubble_recipients.Add(M.client) var/bubble = "default" if(isliving(src)) From 4879c4e4e21501c36b2bc410eccd9c4b98dff8d8 Mon Sep 17 00:00:00 2001 From: Byemoh Date: Fri, 18 Mar 2022 03:10:04 -0500 Subject: [PATCH 07/34] Update yogstation/code/modules/mob/say.dm Co-authored-by: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com> --- yogstation/code/modules/mob/say.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 477125ebd153..e8e464ad0ce2 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -26,7 +26,6 @@ typing_overlay.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) - return /mob/proc/remove_typing_indicator() if(!typing_overlay) From b7dc7b50c147534520e1d9ba07059479d0433928 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Mon, 28 Mar 2022 03:26:43 -0500 Subject: [PATCH 08/34] thanks jamie! --- code/modules/mob/living/life.dm | 4 ++++ yogstation/code/modules/mob/say.dm | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 0319db88ff57..0d695e9b190e 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -76,6 +76,10 @@ if(machine) machine.check_eye(src) + // yogs start -- typing indicators, look in yogstation specific folder for proc + handle_typing_indicator() + //yogs end + if(stat != DEAD) return 1 diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index e8e464ad0ce2..ae382b633e97 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -9,6 +9,24 @@ /mob var/image/typing_overlay var/list/speech_bubble_recipients + var/last_typed + var/last_typed_time + +/mob/proc/handle_typing_indicator() + if(client) + var/temp = winget(client, "input", "text") + if(temp != last_typed) + last_typed = temp + last_typed_time = world.time + if(world.time > last_typed_time + 10 SECONDS) + remove_typing_indicator() + return + if(length(temp) > 5 && findtext(temp, "Say \"", 1, 7)) + create_typing_indicator() + else if(length(temp) > 3 && findtext(temp, "Me ", 1, 5)) + //set_typing_indicator(1) + else + remove_typing_indicator() /mob/proc/create_typing_indicator() if(typing_overlay) From 9195cc7fdf6047be7541d6ef53c0905583336151 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Mon, 28 Mar 2022 18:09:37 -0500 Subject: [PATCH 09/34] preferences --- code/__DEFINES/preferences.dm | 5 +++-- code/modules/client/preferences.dm | 3 +++ yogstation/code/modules/mob/say.dm | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 8827eb49a526..04a12c340cc7 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -40,9 +40,10 @@ #define CHAT_GHOSTWHISPER (1<<7) #define CHAT_GHOSTPDA (1<<8) #define CHAT_GHOSTRADIO (1<<9) -#define CHAT_BANKCARD (1<<10) +#define CHAT_BANKCARD (1<<10) +#define CHAT_TYPING_INDICATOR (1<<11) -#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD) +#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD|CHAT_TYPING_INDICATOR) #define PARALLAX_INSANE -1 //for show offs #define PARALLAX_HIGH 0 //default. diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8a087a3639da..d2fd3e63107f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -625,6 +625,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Runechat message char limit: [max_chat_length]
" dat += "See Runechat for non-mobs: [see_chat_non_mob ? "Enabled" : "Disabled"]
" dat += "See Runechat emotes: [see_rc_emotes ? "Enabled" : "Disabled"]
" + dat += "See Typing Indicators: [(chat_toggles & CHAT_TYPING_INDICATOR) ? "Enabled" : "Disabled"]
" dat += "
" dat += "Action Buttons: [(buttons_locked) ? "Locked In Place" : "Unlocked"]
" //dat += "Keybindings: [(hotkeys) ? "Hotkeys" : "Default"]
" // yogs - Custom keybindings @@ -1857,6 +1858,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) see_chat_non_mob = !see_chat_non_mob if("see_rc_emotes") see_rc_emotes = !see_rc_emotes + if("see_typing_indicators") + chat_toggles ^= CHAT_TYPING_INDICATOR if("action_buttons") buttons_locked = !buttons_locked if("tgui_fancy") diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index ae382b633e97..78945e66d715 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -34,7 +34,7 @@ var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) - if(M.client && !(isobserver(src) && !isobserver(M))) + if(M.client && !(isobserver(src) && !isobserver(M)) && M.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) speech_bubble_recipients.Add(M.client) var/bubble = "default" if(isliving(src)) From e2f87e12306a4fe766dd043ac284ed64558ee2d0 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Mon, 28 Mar 2022 18:30:31 -0500 Subject: [PATCH 10/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 78945e66d715..f2d30b51f170 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -31,6 +31,8 @@ /mob/proc/create_typing_indicator() if(typing_overlay) return + if(stat) + return var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) From 591f19d7d64c371adfbce5bd658817bec8045c53 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Mon, 28 Mar 2022 21:50:53 -0500 Subject: [PATCH 11/34] fix fix if x --- code/__DEFINES/{yogs_defines}/preferences.dm | 2 +- code/_globalvars/configuration.dm | 1 + yogstation/code/modules/mob/say.dm | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/{yogs_defines}/preferences.dm b/code/__DEFINES/{yogs_defines}/preferences.dm index a3ddf6772244..18ec00432718 100644 --- a/code/__DEFINES/{yogs_defines}/preferences.dm +++ b/code/__DEFINES/{yogs_defines}/preferences.dm @@ -4,7 +4,7 @@ #define CHAT_LOOC (1<<10) #undef TOGGLES_DEFAULT_CHAT -#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC) +#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC|CHAT_TYPING_INDICATOR) #define GHOST_CKEY (1<<11) diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index 959bb5296efa..e3047064b499 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -14,6 +14,7 @@ GLOBAL_VAR_INIT(enter_allowed, TRUE) GLOBAL_VAR_INIT(shuttle_frozen, FALSE) GLOBAL_VAR_INIT(shuttle_left, FALSE) GLOBAL_VAR_INIT(tinted_weldhelh, TRUE) +GLOBAL_VAR_INIT(typing_indicators,TRUE) // Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked. diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index f2d30b51f170..efb23aab6cef 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -13,6 +13,8 @@ var/last_typed_time /mob/proc/handle_typing_indicator() + if(!GLOB.typing_indicators) + return if(client) var/temp = winget(client, "input", "text") if(temp != last_typed) From ebf58b172bbda29758d02e811a9c2550a128d80a Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Tue, 29 Mar 2022 15:58:45 -0500 Subject: [PATCH 12/34] stupid --- code/modules/client/preferences.dm | 5 +++-- yogstation/code/modules/mob/say.dm | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d2fd3e63107f..1d46a3a679eb 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -130,6 +130,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/chat_on_map = TRUE var/max_chat_length = CHAT_MESSAGE_MAX_LENGTH var/see_chat_non_mob = TRUE + var/see_typing_indicators = TRUE /// If we have persistent scars enabled var/persistent_scars = TRUE @@ -625,7 +626,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Runechat message char limit: [max_chat_length]
" dat += "See Runechat for non-mobs: [see_chat_non_mob ? "Enabled" : "Disabled"]
" dat += "See Runechat emotes: [see_rc_emotes ? "Enabled" : "Disabled"]
" - dat += "See Typing Indicators: [(chat_toggles & CHAT_TYPING_INDICATOR) ? "Enabled" : "Disabled"]
" + dat += "See Typing Indicators: [see_typing_indicators ? "Enabled" : "Disabled"]
" dat += "
" dat += "Action Buttons: [(buttons_locked) ? "Locked In Place" : "Unlocked"]
" //dat += "Keybindings: [(hotkeys) ? "Hotkeys" : "Default"]
" // yogs - Custom keybindings @@ -1859,7 +1860,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("see_rc_emotes") see_rc_emotes = !see_rc_emotes if("see_typing_indicators") - chat_toggles ^= CHAT_TYPING_INDICATOR + see_typing_indicators != see_typing_indicators if("action_buttons") buttons_locked = !buttons_locked if("tgui_fancy") diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index efb23aab6cef..46614884a57f 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -38,7 +38,7 @@ var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) - if(M.client && !(isobserver(src) && !isobserver(M)) && M.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) + if(M.client && !(isobserver(src) && !isobserver(M)) && client.prefs.see_typing_indicators) speech_bubble_recipients.Add(M.client) var/bubble = "default" if(isliving(src)) From f1a019511588280a83a058160443fbf33d180a84 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Tue, 29 Mar 2022 16:01:30 -0500 Subject: [PATCH 13/34] Revert "stupid" This reverts commit ebf58b172bbda29758d02e811a9c2550a128d80a. --- code/modules/client/preferences.dm | 5 ++--- yogstation/code/modules/mob/say.dm | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 1d46a3a679eb..d2fd3e63107f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -130,7 +130,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/chat_on_map = TRUE var/max_chat_length = CHAT_MESSAGE_MAX_LENGTH var/see_chat_non_mob = TRUE - var/see_typing_indicators = TRUE /// If we have persistent scars enabled var/persistent_scars = TRUE @@ -626,7 +625,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Runechat message char limit: [max_chat_length]
" dat += "See Runechat for non-mobs: [see_chat_non_mob ? "Enabled" : "Disabled"]
" dat += "See Runechat emotes: [see_rc_emotes ? "Enabled" : "Disabled"]
" - dat += "See Typing Indicators: [see_typing_indicators ? "Enabled" : "Disabled"]
" + dat += "See Typing Indicators: [(chat_toggles & CHAT_TYPING_INDICATOR) ? "Enabled" : "Disabled"]
" dat += "
" dat += "Action Buttons: [(buttons_locked) ? "Locked In Place" : "Unlocked"]
" //dat += "Keybindings: [(hotkeys) ? "Hotkeys" : "Default"]
" // yogs - Custom keybindings @@ -1860,7 +1859,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("see_rc_emotes") see_rc_emotes = !see_rc_emotes if("see_typing_indicators") - see_typing_indicators != see_typing_indicators + chat_toggles ^= CHAT_TYPING_INDICATOR if("action_buttons") buttons_locked = !buttons_locked if("tgui_fancy") diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 46614884a57f..efb23aab6cef 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -38,7 +38,7 @@ var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) - if(M.client && !(isobserver(src) && !isobserver(M)) && client.prefs.see_typing_indicators) + if(M.client && !(isobserver(src) && !isobserver(M)) && M.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) speech_bubble_recipients.Add(M.client) var/bubble = "default" if(isliving(src)) From df9e10c5513fe537a13139b54bd34424b25430e4 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Tue, 29 Mar 2022 16:17:06 -0500 Subject: [PATCH 14/34] Update preferences_savefile.dm --- code/modules/client/preferences_savefile.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index bd7c84bad362..0a50b08be290 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 35 +#define SAVEFILE_VERSION_MAX 36 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,6 +49,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car be_special += "Ragin Mages" if (current_version < 35) toggles |= SOUND_ALT + if (current_version < 36) + chat_toggles |= CHAT_TYPING_INDICATOR return /datum/preferences/proc/update_character(current_version, savefile/S) From fa9d5dabfb2b607db6614c6716308ccc67097e63 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 30 Mar 2022 01:36:25 -0500 Subject: [PATCH 15/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index efb23aab6cef..896f8d217d40 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -2,8 +2,10 @@ /mob/proc/get_say() create_typing_indicator() + window_typing = TRUE var/msg = input(src, null, "say \"text\"") as text|null remove_typing_indicator() + window_typing = FALSE say_verb(msg) /mob @@ -11,6 +13,8 @@ var/list/speech_bubble_recipients var/last_typed var/last_typed_time + var/window_typing = FALSE + var/bar_typing = FALSE /mob/proc/handle_typing_indicator() if(!GLOB.typing_indicators) @@ -22,13 +26,16 @@ last_typed_time = world.time if(world.time > last_typed_time + 10 SECONDS) remove_typing_indicator() + bar_typing = FALSE return if(length(temp) > 5 && findtext(temp, "Say \"", 1, 7)) create_typing_indicator() + bar_typing = TRUE else if(length(temp) > 3 && findtext(temp, "Me ", 1, 5)) //set_typing_indicator(1) else remove_typing_indicator() + bar_typing = FALSE /mob/proc/create_typing_indicator() if(typing_overlay) @@ -52,6 +59,8 @@ /mob/proc/remove_typing_indicator() if(!typing_overlay) return + if(window_typing || bar_typing) + return INVOKE_ASYNC(GLOBAL_PROC, /proc/remove_images_from_clients, typing_overlay, speech_bubble_recipients) typing_overlay = null speech_bubble_recipients = list() From a6b811dbd64d8fa91d6001a3d40680c9d9e366cd Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Wed, 30 Mar 2022 02:38:45 -0500 Subject: [PATCH 16/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 896f8d217d40..6aa98799a75d 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -4,8 +4,8 @@ create_typing_indicator() window_typing = TRUE var/msg = input(src, null, "say \"text\"") as text|null - remove_typing_indicator() window_typing = FALSE + remove_typing_indicator() say_verb(msg) /mob @@ -25,8 +25,8 @@ last_typed = temp last_typed_time = world.time if(world.time > last_typed_time + 10 SECONDS) - remove_typing_indicator() bar_typing = FALSE + remove_typing_indicator() return if(length(temp) > 5 && findtext(temp, "Say \"", 1, 7)) create_typing_indicator() @@ -34,8 +34,9 @@ else if(length(temp) > 3 && findtext(temp, "Me ", 1, 5)) //set_typing_indicator(1) else - remove_typing_indicator() bar_typing = FALSE + remove_typing_indicator() + /mob/proc/create_typing_indicator() if(typing_overlay) From 6d0a2d1b578689677973658be93d590148ab2451 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Thu, 7 Apr 2022 00:19:23 -0500 Subject: [PATCH 17/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 6aa98799a75d..19202279bfcd 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -54,7 +54,9 @@ bubble = L.bubble_icon typing_overlay = image('icons/mob/talk.dmi', src, "[bubble]_talking", FLY_LAYER) typing_overlay.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) + typing_overlay.invisibility = invisibility + add_overlay(typing_overlay) + //INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) /mob/proc/remove_typing_indicator() @@ -62,7 +64,8 @@ return if(window_typing || bar_typing) return - INVOKE_ASYNC(GLOBAL_PROC, /proc/remove_images_from_clients, typing_overlay, speech_bubble_recipients) + //INVOKE_ASYNC(GLOBAL_PROC, /proc/remove_images_from_clients, typing_overlay, speech_bubble_recipients) + cut_overlay(typing_overlay) typing_overlay = null speech_bubble_recipients = list() From 5bf4506b65de8cfc5b579226d7532a4d89eb0d14 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Thu, 7 Apr 2022 01:45:02 -0500 Subject: [PATCH 18/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 19202279bfcd..01cfcb3f0cc1 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -53,10 +53,11 @@ var/mob/living/L = src bubble = L.bubble_icon typing_overlay = image('icons/mob/talk.dmi', src, "[bubble]_talking", FLY_LAYER) - typing_overlay.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA + typing_overlay.appearance_flags = APPEARANCE_UI typing_overlay.invisibility = invisibility - add_overlay(typing_overlay) - //INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, typing_overlay, speech_bubble_recipients) + typing_overlay.alpha = alpha + for(var/client/C in speech_bubble_recipients) + C.images += typing_overlay; /mob/proc/remove_typing_indicator() @@ -64,8 +65,8 @@ return if(window_typing || bar_typing) return - //INVOKE_ASYNC(GLOBAL_PROC, /proc/remove_images_from_clients, typing_overlay, speech_bubble_recipients) - cut_overlay(typing_overlay) + for(var/client/C in speech_bubble_recipients) + C.images -= typing_overlay; typing_overlay = null speech_bubble_recipients = list() From 5d284e28a35400a028cc2617f4fe58cae21658bf Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Sat, 9 Apr 2022 14:41:50 -0500 Subject: [PATCH 19/34] Update say.dm --- yogstation/code/modules/mob/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 01cfcb3f0cc1..65f810d406bd 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -46,7 +46,7 @@ var/list/listening = get_hearers_in_view(TYPING_INDICATOR_RANGE, src) speech_bubble_recipients = list() for(var/mob/M in listening) - if(M.client && !(isobserver(src) && !isobserver(M)) && M.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) + if(M.client && M.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) speech_bubble_recipients.Add(M.client) var/bubble = "default" if(isliving(src)) From 94653a1c5cddd0a79a5ef75f6c80dcc3056a3469 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Sat, 9 Apr 2022 15:06:42 -0500 Subject: [PATCH 20/34] holy fark --- yogstation/code/modules/mob/say.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 65f810d406bd..4c32596ebb04 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -57,7 +57,7 @@ typing_overlay.invisibility = invisibility typing_overlay.alpha = alpha for(var/client/C in speech_bubble_recipients) - C.images += typing_overlay; + C.images += typing_overlay /mob/proc/remove_typing_indicator() @@ -66,7 +66,7 @@ if(window_typing || bar_typing) return for(var/client/C in speech_bubble_recipients) - C.images -= typing_overlay; + C.images -= typing_overlay typing_overlay = null speech_bubble_recipients = list() From e0ae8730ad88f548d9ed9fb32fc3f84201b2bbe7 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:45:42 -0500 Subject: [PATCH 21/34] Update life.dm --- code/modules/mob/living/life.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 0d695e9b190e..66adf7201f83 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -76,9 +76,6 @@ if(machine) machine.check_eye(src) - // yogs start -- typing indicators, look in yogstation specific folder for proc - handle_typing_indicator() - //yogs end if(stat != DEAD) return 1 From b6faa9fe738be1fa2903297c44a260c736022797 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:46:13 -0500 Subject: [PATCH 22/34] Update life.dm --- code/modules/mob/living/life.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 66adf7201f83..0319db88ff57 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -76,7 +76,6 @@ if(machine) machine.check_eye(src) - if(stat != DEAD) return 1 From 99de25c8ee58b24195d1c47323686bbc2281d07a Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:48:29 -0500 Subject: [PATCH 23/34] Update life.dm --- code/modules/mob/living/carbon/life.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 3192416d9e14..4fb85927f9ab 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -18,6 +18,10 @@ if (QDELETED(src)) return + // yogs start -- typing indicators, look in yogstation specific folder for proc + handle_typing_indicator() + //yogs end + if(.) //not dead handle_blood() From 992dac34aa16599faf73c8b4b2364efdec1f728d Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:51:26 -0500 Subject: [PATCH 24/34] modularization --- code/_globalvars/configuration.dm | 1 - yogstation/code/_globalvars/configuration.dm | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index e3047064b499..959bb5296efa 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -14,7 +14,6 @@ GLOBAL_VAR_INIT(enter_allowed, TRUE) GLOBAL_VAR_INIT(shuttle_frozen, FALSE) GLOBAL_VAR_INIT(shuttle_left, FALSE) GLOBAL_VAR_INIT(tinted_weldhelh, TRUE) -GLOBAL_VAR_INIT(typing_indicators,TRUE) // Debug is used exactly once (in living.dm) but is commented out in a lot of places. It is not set anywhere and only checked. diff --git a/yogstation/code/_globalvars/configuration.dm b/yogstation/code/_globalvars/configuration.dm index 82c8522c5265..925e933b52ea 100644 --- a/yogstation/code/_globalvars/configuration.dm +++ b/yogstation/code/_globalvars/configuration.dm @@ -1,2 +1,3 @@ GLOBAL_VAR_INIT(looc_allowed, TRUE) -GLOBAL_VAR_INIT(dlooc_allowed, FALSE) \ No newline at end of file +GLOBAL_VAR_INIT(dlooc_allowed, FALSE) +GLOBAL_VAR_INIT(typing_indicators,TRUE) From 64f76423c1b91bf4bbb3d1f645cfb70ab2a60da4 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:55:04 -0500 Subject: [PATCH 25/34] on jod --- code/__DEFINES/preferences.dm | 3 +-- code/__DEFINES/{yogs_defines}/preferences.dm | 9 +++++---- code/__HELPERS/game.dm | 3 +-- yogstation/code/modules/mob/say.dm | 3 +++ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 04a12c340cc7..4b72fa0e8a03 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -41,9 +41,8 @@ #define CHAT_GHOSTPDA (1<<8) #define CHAT_GHOSTRADIO (1<<9) #define CHAT_BANKCARD (1<<10) -#define CHAT_TYPING_INDICATOR (1<<11) -#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD|CHAT_TYPING_INDICATOR) +#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD) #define PARALLAX_INSANE -1 //for show offs #define PARALLAX_HIGH 0 //default. diff --git a/code/__DEFINES/{yogs_defines}/preferences.dm b/code/__DEFINES/{yogs_defines}/preferences.dm index 18ec00432718..4d2b74a12002 100644 --- a/code/__DEFINES/{yogs_defines}/preferences.dm +++ b/code/__DEFINES/{yogs_defines}/preferences.dm @@ -1,12 +1,13 @@ #define DONOR_CHARACTER_SLOTS 6 -#define CHAT_LOOC (1<<10) - +#define CHAT_LOOC (1<<11) +#define GHOST_CKEY (1<<12) +#define CHAT_TYPING_INDICATOR (1<<13) #undef TOGGLES_DEFAULT_CHAT -#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_LOOC|CHAT_TYPING_INDICATOR) +#define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD|CHAT_LOOC|GHOST_CKEY|CHAT_TYPING_INDICATOR) + -#define GHOST_CKEY (1<<11) //YOGS pref.yogstoggles enum's diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 140262203042..a9ca78b21d2a 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -401,8 +401,7 @@ /proc/flick_overlay(image/I, list/show_to, duration) for(var/client/C in show_to) C.images += I - if(duration) - addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) + addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) /proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom var/list/viewing = list() diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index 4c32596ebb04..ba4236393e63 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -17,6 +17,9 @@ var/bar_typing = FALSE /mob/proc/handle_typing_indicator() + INVOKE_ASYNC(src,.proc/typing_indicator_process) + +/mob/proc/typing_indicator_process() if(!GLOB.typing_indicators) return if(client) From 97a44896283f0a83439c0ef976088e7d0effb1bd Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:55:29 -0500 Subject: [PATCH 26/34] Update preferences.dm --- code/__DEFINES/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 4b72fa0e8a03..ad88e4b5bc53 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -40,7 +40,7 @@ #define CHAT_GHOSTWHISPER (1<<7) #define CHAT_GHOSTPDA (1<<8) #define CHAT_GHOSTRADIO (1<<9) -#define CHAT_BANKCARD (1<<10) +#define CHAT_BANKCARD (1<<10) #define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD) From 1cb9611aa6f41bd0f5b45e74c8b804bdce21aafd Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:55:43 -0500 Subject: [PATCH 27/34] Update preferences.dm --- code/__DEFINES/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index ad88e4b5bc53..8827eb49a526 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -40,7 +40,7 @@ #define CHAT_GHOSTWHISPER (1<<7) #define CHAT_GHOSTPDA (1<<8) #define CHAT_GHOSTRADIO (1<<9) -#define CHAT_BANKCARD (1<<10) +#define CHAT_BANKCARD (1<<10) #define TOGGLES_DEFAULT_CHAT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_PULLR|CHAT_GHOSTWHISPER|CHAT_GHOSTPDA|CHAT_GHOSTRADIO|CHAT_BANKCARD) From 2f49a41d1b229b66559e3dcc2367df8365b691a3 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:58:15 -0500 Subject: [PATCH 28/34] preferences --- code/modules/client/preferences.dm | 3 --- yogstation/code/modules/client/preferences_toggles.dm | 8 ++++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d2fd3e63107f..8a087a3639da 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -625,7 +625,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Runechat message char limit: [max_chat_length]
" dat += "See Runechat for non-mobs: [see_chat_non_mob ? "Enabled" : "Disabled"]
" dat += "See Runechat emotes: [see_rc_emotes ? "Enabled" : "Disabled"]
" - dat += "See Typing Indicators: [(chat_toggles & CHAT_TYPING_INDICATOR) ? "Enabled" : "Disabled"]
" dat += "
" dat += "Action Buttons: [(buttons_locked) ? "Locked In Place" : "Unlocked"]
" //dat += "Keybindings: [(hotkeys) ? "Hotkeys" : "Default"]
" // yogs - Custom keybindings @@ -1858,8 +1857,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) see_chat_non_mob = !see_chat_non_mob if("see_rc_emotes") see_rc_emotes = !see_rc_emotes - if("see_typing_indicators") - chat_toggles ^= CHAT_TYPING_INDICATOR if("action_buttons") buttons_locked = !buttons_locked if("tgui_fancy") diff --git a/yogstation/code/modules/client/preferences_toggles.dm b/yogstation/code/modules/client/preferences_toggles.dm index b1024b6e6635..002f6c27734f 100644 --- a/yogstation/code/modules/client/preferences_toggles.dm +++ b/yogstation/code/modules/client/preferences_toggles.dm @@ -16,3 +16,11 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, ghost_ckey)() usr.client.prefs.chat_toggles ^= GHOST_CKEY usr.client.prefs.save_preferences() to_chat(usr, "Your ckey is [(usr.client.prefs.chat_toggles & GHOST_CKEY) ? "no longer" : "now"] visible in deadchat.") + +TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, typing_indicators)() + set name = "Show/Hide typing indicators" + set category = "Preferences" + set desc = "Toggle typing indicators" + usr.client.prefs.chat_toggles ^= CHAT_TYPING_INDICATOR + usr.client.prefs.save_preferences() + to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) ? "no longer" : "now"] see typing indicators.") From c1dc34b062dafd0f4629983eaedbc76a20261940 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 17:58:47 -0500 Subject: [PATCH 29/34] Update preferences_savefile.dm --- code/modules/client/preferences_savefile.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 0a50b08be290..bd7c84bad362 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 36 +#define SAVEFILE_VERSION_MAX 35 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,8 +49,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car be_special += "Ragin Mages" if (current_version < 35) toggles |= SOUND_ALT - if (current_version < 36) - chat_toggles |= CHAT_TYPING_INDICATOR return /datum/preferences/proc/update_character(current_version, savefile/S) From 34405f2f96a7065781a3f5484c91eb9b1163097f Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Fri, 15 Apr 2022 18:14:02 -0500 Subject: [PATCH 30/34] modular --- icons/mob/talk.dmi | Bin 14392 -> 5663 bytes yogstation/code/modules/mob/say.dm | 2 +- yogstation/icons/mob/talk.dmi | Bin 0 -> 11840 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 yogstation/icons/mob/talk.dmi diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 6ac9eaa0dbd7de105b88530e75d2140c18c332d1..7d4845f16a4513ce85115862b85344a086ca9938 100644 GIT binary patch literal 5663 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 TIW7bE@C&+PX=71y(L42TS%<8_ literal 14392 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 OXT9J4hupm)A_NHJ#8S(3091;| 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 Date: Fri, 15 Apr 2022 18:28:15 -0500 Subject: [PATCH 31/34] THIS should work --- icons/mob/talk.dmi | Bin 5663 -> 8475 bytes yogstation/icons/mob/talk.dmi | Bin 11840 -> 8987 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 7d4845f16a4513ce85115862b85344a086ca9938..772d4bc6f930fd29227fb4c56393d1fd5ee0d261 100644 GIT binary patch literal 8475 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 TIW7bE@C&+PX=71y(L42TS%<8_ diff --git a/yogstation/icons/mob/talk.dmi b/yogstation/icons/mob/talk.dmi index 8135896151e2c2dc7fd821b0ae3a933eb927cc36..9411d2a998269ba5746f88608a7e63ea9e0dc4f0 100644 GIT binary patch literal 8987 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 Date: Sat, 16 Apr 2022 02:05:17 -0500 Subject: [PATCH 32/34] Update preferences_toggles.dm --- yogstation/code/modules/client/preferences_toggles.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yogstation/code/modules/client/preferences_toggles.dm b/yogstation/code/modules/client/preferences_toggles.dm index 002f6c27734f..0d877e4fd6d3 100644 --- a/yogstation/code/modules/client/preferences_toggles.dm +++ b/yogstation/code/modules/client/preferences_toggles.dm @@ -23,4 +23,4 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings, typing_indicators)() set desc = "Toggle typing indicators" usr.client.prefs.chat_toggles ^= CHAT_TYPING_INDICATOR usr.client.prefs.save_preferences() - to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) ? "no longer" : "now"] see typing indicators.") + to_chat(usr, "You will [(usr.client.prefs.chat_toggles & CHAT_TYPING_INDICATOR) ? "now" : "no longer"] see typing indicators.") From b4f3cd865130e2cfd2d2a589b11db4678291bbe1 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Sat, 16 Apr 2022 02:34:54 -0500 Subject: [PATCH 33/34] fuckin uhhhhhhhh --- code/modules/client/preferences_savefile.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index bd7c84bad362..0a50b08be290 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 35 +#define SAVEFILE_VERSION_MAX 36 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,6 +49,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car be_special += "Ragin Mages" if (current_version < 35) toggles |= SOUND_ALT + if (current_version < 36) + chat_toggles |= CHAT_TYPING_INDICATOR return /datum/preferences/proc/update_character(current_version, savefile/S) From 8fbbd7b2fd7363e658b346d2dca98ac93fff7dd1 Mon Sep 17 00:00:00 2001 From: ToasterBiome Date: Mon, 18 Apr 2022 14:36:01 -0500 Subject: [PATCH 34/34] fixes yeah whatever shit --- code/modules/client/preferences_savefile.dm | 4 ++-- yogstation/code/modules/mob/say.dm | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 0a50b08be290..2dad63f25675 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 36 +#define SAVEFILE_VERSION_MAX 37 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -49,7 +49,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car be_special += "Ragin Mages" if (current_version < 35) toggles |= SOUND_ALT - if (current_version < 36) + if (current_version < 37) chat_toggles |= CHAT_TYPING_INDICATOR return diff --git a/yogstation/code/modules/mob/say.dm b/yogstation/code/modules/mob/say.dm index c75de5d7b821..04b0b0b674ac 100644 --- a/yogstation/code/modules/mob/say.dm +++ b/yogstation/code/modules/mob/say.dm @@ -73,4 +73,14 @@ typing_overlay = null speech_bubble_recipients = list() +/mob/camera/handle_typing_indicator() //RIP in piece camera mobs + return + +/mob/camera/create_typing_indicator() + return + +/mob/camera/remove_typing_indicator() + return + + #undef TYPING_INDICATOR_RANGE