This commit is contained in:
kevinz000
2020-03-04 15:42:01 -07:00
parent 0d312b8dff
commit d1f161fe0f
6 changed files with 40 additions and 25 deletions
+1 -1
View File
@@ -19,7 +19,7 @@
if(valid)
display_typing_indicator()
switch(_key)
if("Escape")
if("Escape") //escape breaks out of clientside verb text input without executing at all, meaning we can't hook the verb to do this for us.
clear_typing_indicator()
if("Delete", "H")
if(!pulling)
@@ -2221,8 +2221,3 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
/datum/species/proc/start_wagging_tail(mob/living/carbon/human/H)
/datum/species/proc/stop_wagging_tail(mob/living/carbon/human/H)
/////// TYPING INDICATORS ///////
/datum/species/proc/get_typing_indicator_state()
return typing_indicator_state
@@ -1,2 +1,2 @@
/mob/living/carbon/human/get_typing_indicator_icon_state()
return dna?.species?.get_typing_indicator_state() || ..()
return dna?.species?.typing_indicator_state || ..()
+21 -2
View File
@@ -1,7 +1,17 @@
//Speech verbs.
/mob/verb/say_verb(message as text)
// the _keybind verbs uses "as text" versus "as text|null" to force a popup when pressed by a keybind.
/mob/verb/say_keybind(message as text)
set name = "say_keybind"
set hidden = TRUE
set category = "IC"
return say_verb(message)
/mob/verb/say_verb(message as text|null)
set name = "Say"
set category = "IC"
display_typing_indicator()
if(!length(message))
message = input(usr, "Say something!", "Say") as text|null
clear_typing_indicator() // clear it immediately!
if(!length(message))
return
@@ -32,9 +42,18 @@
/mob/proc/whisper(message, datum/language/language=null)
say(message, language) //only living mobs actually whisper, everything else just talks
/mob/verb/me_verb(message as message)
/mob/verb/me_keybind(message as message)
set name = "me_keybind"
set hidden = TRUE
set category = "IC"
return me_verb(message)
/mob/verb/me_verb(message as message|null)
set name = "Me"
set category = "IC"
display_typing_indicator()
if(!length(message))
message = input(usr, "What do you want to emote?" , "Emote") as message|null
clear_typing_indicator() // clear it immediately!
if(!length(message))
return
+12 -11
View File
@@ -15,24 +15,25 @@ GLOBAL_LIST_EMPTY(typing_indicator_overlays)
/mob/proc/get_typing_indicator_icon_state()
return typing_indicator_state
/*!
* Displays typing indicator.
* @param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout
* @param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state()
* @param force - shows even if src.typing_indcator_enabled is FALSE.
*/
/**
* Displays typing indicator.
* @param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout
* @param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state()
* @param force - shows even if src.typing_indcator_enabled is FALSE.
*/
/mob/proc/display_typing_indicator(timeout_override = typing_indicator_timeout, state_override = get_typing_indicator_icon_state(), force = FALSE)
if(!typing_indicator_enabled || force)
if(!typing_indicator_enabled && !force)
return
add_overlay(get_indicator_overlay(state_override))
addtimer(CALLBACK(src, .proc/clear_typing_indicator, state_override), timeout_override, TIMER_STOPPABLE)
/*!
* Removes typing indicator.
* @param state_override Sets the state that we will remove. Defaults to src.get_typing_indicator_icon_state()
*/
/**
* Removes typing indicator.
* @param state_override Sets the state that we will remove. Defaults to src.get_typing_indicator_icon_state()
*/
/mob/proc/clear_typing_indicator(state_override = get_typing_indicator_icon_state())
deltimer(typing_indicator_timerid)
typing_indicator_timerid = null
cut_overlay(get_indicator_overlay(state_override))
/// Default typing indicator