This commit is contained in:
kevinz000
2020-04-24 23:31:34 -07:00
parent 07dedea81a
commit 62fd71c50e
5 changed files with 28 additions and 93 deletions
-17
View File
@@ -3,24 +3,7 @@
// Or we can have NPC's send actual keypresses and detect that by seeing no client
/mob/key_down(_key, client/user)
if(SSinput.typing_indicator_binds[_key])
var/macroset = winget(user, "mainwindow", "macro")
var/list/L = SSinput.macro_set_reverse_lookups[macroset]
var/valid = FALSE
for(var/the_verb in L)
if(the_verb in SSinput.typing_indicator_verbs)
var/list/keys = L[the_verb]
valid = TRUE
if(length(keys) > 1)
for(var/i in 2 to length(keys))
if(!client.keys_held[keys[i]])
valid = FALSE
break
if(valid)
display_typing_indicator()
switch(_key)
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)
to_chat(src, "<span class='notice'>You are not pulling anything.</span>")
+13 -25
View File
@@ -1,55 +1,43 @@
//Speech verbs.
// 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"
/mob/verb/say_typing_indicator()
set name = "SayWithIndicator"
set hidden = TRUE
set category = "IC"
display_typing_indicator()
var/message = input(usr, "", "Say") as text|null
// If they don't type anything just drop the message.
clear_typing_indicator() // clear it immediately!
if(!length(message))
return
return do_sayverb(message)
return say_verb(message)
/mob/verb/say_verb(message as text|null)
/mob/verb/say_verb(message as text)
set name = "Say"
set category = "IC"
display_typing_indicator()
if(!length(message))
// We don't use input because that can't be broken out of with ESC key.
winset(src, null, "command=\"say_keybind\"")
else
return do_sayverb(message)
/mob/proc/do_sayverb(message)
clear_typing_indicator() // clear it immediately!
if(!length(message))
return
if(GLOB.say_disabled) //This is here to try to identify lag problems
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
return
clear_typing_indicator() // clear it immediately!
say(message)
/mob/verb/me_keybind(message as message)
set name = "me_keybind"
/mob/verb/me_typing_indicator()
set name = "MeWithIndicator"
set hidden = TRUE
set category = "IC"
display_typing_indicator()
var/message = input(usr, "", "Me") as message|null
// If they don't type anything just drop the message.
clear_typing_indicator() // clear it immediately!
if(!length(message))
return
return do_meverb(message)
return me_verb(message)
/mob/verb/me_verb(message as message|null)
/mob/verb/me_verb(message as message)
set name = "Me"
set category = "IC"
display_typing_indicator()
if(!length(message))
// Do not use input because it can't be broken out of with ESC key.
winset(src, null, "command=\"me_keybind\"")
else
return do_meverb(message)
/mob/proc/do_meverb(message)
clear_typing_indicator() // clear it immediately!
if(!length(message))
return