From: Christian Heller Date: Sun, 25 Oct 2020 00:12:47 +0000 (+0200) Subject: Improve rogue chat interface. X-Git-Url: https://plomlompom.com/repos/%7B%7Bdb.prefix%7D%7D/%7B%7B%20web_path%20%7D%7D/%7Broute%7D?a=commitdiff_plain;h=cb106b4dc08acf7b26df00af98cd829a8c6a43a5;p=plomrogue2-experiments Improve rogue chat interface. --- diff --git a/new2/rogue_chat.html b/new2/rogue_chat.html index 6fec908..dde77be 100644 --- a/new2/rogue_chat.html +++ b/new2/rogue_chat.html @@ -88,12 +88,8 @@ let parser = { } let tui = { - log_msg: function(msg) { - chat.history.unshift(msg); - if (chat.history.length > terminal.rows - 2) { - chat.history.pop(); - } - terminal.drawBox(1, terminal.cols / 2, terminal.rows - 2, terminal.cols); + draw_history: function() { + terminal.drawBox(1, terminal.cols / 2, terminal.rows - 2, terminal.cols, 'black'); let i = 0; for (let line of chat.history) { terminal.write(terminal.rows - 2 - i, terminal.cols / 2, line); @@ -110,12 +106,19 @@ let tui = { } }, draw_tick_line: function(n) { - terminal.drawBox(0, 0, terminal.rows, terminal.cols / 2); + terminal.drawBox(0, terminal.cols / 2, 1, terminal.cols / 2, 'black'); terminal.write(0, terminal.cols / 2, 'tick: ' + game.tick); }, draw_input_line: function() { terminal.drawBox(terminal.rows - 1, terminal.cols / 2, 1, terminal.cols / 2, 'black'); terminal.write(terminal.rows - 1, terminal.cols / 2, chat.input_line); + }, + log_msg: function(msg) { + chat.history.unshift(msg); + if (chat.history.length > terminal.rows - 2) { + chat.history.pop(); + }; + this.draw_history(); } } @@ -125,12 +128,21 @@ let game = { } let chat = { - input_line: "", - history: [] + input_line:"", + history: ["contain whitespace, escape them with \\.", + "Use double quotes for strings that", + "Use arrow keys to move your avatar.", + " QUERY USER TEXT - send TEXT to USER", + " ALL TEXT - send TEXT to all users", + " LOGIN USER - register as USER", + "commands:"] } terminal.initialize() -terminal.drawBox(terminal.rows - 1, terminal.cols / 2, 1, terminal.cols, 'black'); +tui.draw_map(); +tui.draw_tick_line(); +tui.draw_history(); +tui.draw_input_line(); document.addEventListener('keydown', (event) => { if (chat.input_line === '') { @@ -165,13 +177,16 @@ websocket.onmessage = function (event) { game.things = {} game.tick = parseInt(tokens[1]); tui.draw_tick_line(); + tui.draw_map(); } else if (tokens[0] === 'THING_POS') { game.things[tokens[1]] = parser.parse_position(tokens[2]); tui.draw_map(); } else if (tokens[0] === 'LOG') { tui.log_msg(' ' + tokens[1]); - } else if (tokens[0] === 'ARGUMENT_ERROR') { - tui.log_msg('syntax error: ' + tokens[1]); + } else if (tokens[0] === 'UNHANDLED_INPUT') { + tui.log_msg('unknown command'); + } else if (tokens[0] === 'GAME_ERROR') { + tui.log_msg('game error: ' + tokens[1]); } else if (tokens[0] === 'GAME_ERROR') { tui.log_msg('game error: ' + tokens[1]); } else {