Clarify mapping from Evennia-outputfuncs to GMCP-style cmdnames
This commit is contained in:
parent
607741872c
commit
e23cfb5d67
1 changed files with 28 additions and 16 deletions
|
|
@ -229,24 +229,41 @@ class TelnetOOB(object):
|
||||||
IRE games use, supposedly, and what clients appear
|
IRE games use, supposedly, and what clients appear
|
||||||
to have adopted):
|
to have adopted):
|
||||||
|
|
||||||
[cmdname, [], {}] -> cmdname
|
[cmd.name, [], {}] -> Cmd.Name
|
||||||
[cmdname, [arg], {}] -> cmdname arg
|
[cmd.name, [arg], {}] -> Cmd.Name arg
|
||||||
[cmdname, [args],{}] -> cmdname [args]
|
[cmd.name, [args],{}] -> Cmd.Name [args]
|
||||||
[cmdname, [], {kwargs}] -> cmdname {kwargs}
|
[cmd.name, [], {kwargs}] -> Cmd.Name {kwargs}
|
||||||
[cmdname, [args, {kwargs}] -> cmdname [[args],{kwargs}]
|
[cmdname, [args, {kwargs}] -> Custom.Cmdname [[args],{kwargs}]
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
There are also a few default mappings between evennia outputcmds and
|
||||||
|
GMCP:
|
||||||
|
client_options -> Core.Supports.Get
|
||||||
|
get_inputfuncs -> Core.Commands.Get
|
||||||
|
get_value -> Char.Value.Get
|
||||||
|
repeat -> Char.Repeat.Update
|
||||||
|
monitor -> Char.Monitor.Update
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if cmdname in EVENNIA_TO_GMCP:
|
||||||
|
gmcp_cmdname = EVENNIA_TO_GMCP[cmdname]
|
||||||
|
elif "_" in cmdname:
|
||||||
|
gmcp_cmdname = ".".join(word.capitalize() for word in cmdname.split("_"))
|
||||||
|
else:
|
||||||
|
gmcp_cmdname = "Custom.%s" % cmdname.capitalize()
|
||||||
|
|
||||||
if not (args or kwargs):
|
if not (args or kwargs):
|
||||||
gmcp_string = cmdname
|
gmcp_string = gmcp_cmdname
|
||||||
elif args:
|
elif args:
|
||||||
if len(args) == 1:
|
if len(args) == 1:
|
||||||
args = args[0]
|
args = args[0]
|
||||||
if kwargs:
|
if kwargs:
|
||||||
gmcp_string = "%s %s" % (cmdname, json.dumps([args, kwargs]))
|
gmcp_string = "%s %s" % (gmcp_cmdname, json.dumps([args, kwargs]))
|
||||||
else:
|
else:
|
||||||
gmcp_string = "%s %s" % (cmdname, json.dumps(args))
|
gmcp_string = "%s %s" % (gmcp_cmdname, json.dumps(args))
|
||||||
else: # only kwargs
|
else: # only kwargs
|
||||||
gmcp_string = "%s %s" % (cmdname, json.dumps(kwargs))
|
gmcp_string = "%s %s" % (gmcp_cmdname, json.dumps(kwargs))
|
||||||
|
|
||||||
# print("gmcp string", gmcp_string) # DEBUG
|
# print("gmcp string", gmcp_string) # DEBUG
|
||||||
return gmcp_string
|
return gmcp_string
|
||||||
|
|
@ -398,14 +415,9 @@ class TelnetOOB(object):
|
||||||
kwargs.pop("options", None)
|
kwargs.pop("options", None)
|
||||||
|
|
||||||
if self.MSDP:
|
if self.MSDP:
|
||||||
msdp_cmdname = cmdname
|
encoded_oob = self.encode_msdp(cmdname, *args, **kwargs)
|
||||||
encoded_oob = self.encode_msdp(msdp_cmdname, *args, **kwargs)
|
|
||||||
self.protocol._write(IAC + SB + MSDP + encoded_oob + IAC + SE)
|
self.protocol._write(IAC + SB + MSDP + encoded_oob + IAC + SE)
|
||||||
|
|
||||||
if self.GMCP:
|
if self.GMCP:
|
||||||
if cmdname in EVENNIA_TO_GMCP:
|
encoded_oob = self.encode_gmcp(cmdname, *args, **kwargs)
|
||||||
gmcp_cmdname = EVENNIA_TO_GMCP[cmdname]
|
|
||||||
else:
|
|
||||||
gmcp_cmdname = "Custom.Cmd"
|
|
||||||
encoded_oob = self.encode_gmcp(gmcp_cmdname, *args, **kwargs)
|
|
||||||
self.protocol._write(IAC + SB + GMCP + encoded_oob + IAC + SE)
|
self.protocol._write(IAC + SB + GMCP + encoded_oob + IAC + SE)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue