diff --git a/src/server/portal/websocket_client.py b/src/server/portal/websocket_client.py index d3a7bd553..d17702f47 100644 --- a/src/server/portal/websocket_client.py +++ b/src/server/portal/websocket_client.py @@ -122,6 +122,8 @@ class WebSocketClient(Protocol, Session): oobstruct = self.sessionhandler.oobstruct_parser(kwargs.pop("oob")) #print "oob data_out:", "OOB" + json.dumps(oobstruct) self.sendLine("OOB" + json.dumps(oobstruct)) + if "prompt" in kwargs: + self.sendLine("PROMPT" + kwargs["prompt"]) raw = kwargs.get("raw", False) nomarkup = kwargs.get("nomarkup", False) if raw: diff --git a/src/web/webclient/static/webclient/css/webclient.css b/src/web/webclient/static/webclient/css/webclient.css index 76397bc19..eeabf6881 100644 --- a/src/web/webclient/static/webclient/css/webclient.css +++ b/src/web/webclient/static/webclient/css/webclient.css @@ -45,6 +45,9 @@ div {margin:0px;} /* Error messages (red) */ .err { color: #f00 } +/* Prompt base (white) */ +.prompt {color: #fff } + /* Style specific classes corresponding to formatted, narative text. */ .red { color: red; } .maroon { color: maroon; } @@ -107,7 +110,6 @@ div {margin:0px;} float: left; width: 87%;} - #inputfield:focus { outline: 0 } @@ -126,6 +128,10 @@ div {margin:0px;} font-size: 1.1em; font-family: 'DejaVu Sans Mono', Consolas, Inconsolata, 'Lucida Console', monospace } +/* prompt area above input field */ +#prompt { + margin-top: .8em;} + /* No javascript warning */ #connecting { padding: .5em .9em } diff --git a/src/web/webclient/static/webclient/js/evennia_websocket_webclient.js b/src/web/webclient/static/webclient/js/evennia_websocket_webclient.js index c769feb4e..ac50691f0 100644 --- a/src/web/webclient/static/webclient/js/evennia_websocket_webclient.js +++ b/src/web/webclient/static/webclient/js/evennia_websocket_webclient.js @@ -75,7 +75,7 @@ function onOpen(evt) { doShow("sys", "Using websockets - connected to " + wsurl + ".") setTimeout(function () { - $("#playercount").fadeOut('slow', doSetSizes); + $("#numplayers").fadeOut('slow', doSetSizes); }, 10000); } @@ -106,6 +106,11 @@ function onMessage(evt) { } } } + else if (inmsg.length >= 6 && inmsg.substr(0, 6) == "PROMPT") { + // handle prompt + var game_prompt = inmsg.slice(6); + doPrompt("prompt", game_prompt); + } else { // normal message doShow('out', inmsg); } @@ -172,6 +177,11 @@ function doShow(type, msg){ $('#messagewindow').animate({scrollTop: $('#messagewindow')[0].scrollHeight}); } +function doPrompt(type, msg){ + // Display prompt + $('#prompt').replaceWith( + "