X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;ds=sidebyside;f=new2%2Frogue_chat_nocanvas_monochrome.html;h=db7e3037eaeab97c3a0085d70d0d4451411ea31b;hb=47e43a5b4f32159302be343648e0027f2e01ca5a;hp=863de8c5b09cbaa9c93774cfa80c43941dccd862;hpb=beebfdb7dac8e7630643c44e9ae8d3c79d5d39d8;p=plomrogue2-experiments diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html index 863de8c..db7e303 100644 --- a/new2/rogue_chat_nocanvas_monochrome.html +++ b/new2/rogue_chat_nocanvas_monochrome.html @@ -153,14 +153,15 @@ let tui = { }; map_lines.push(line); let player_position = [0,0]; + let center_pos = [Math.floor(game.map_size[0] / 2), + Math.floor(game.map_size[1] / 2)]; for (const thing_id in game.things) { let t = game.things[thing_id]; map_lines[t[0]][t[1]] = '@'; if (game.player_id == thing_id) { - player_position = t; + center_pos = t; } }; - let center_pos = player_position; if (tui.mode == 'study' || tui.mode == 'annotate') { map_lines[explorer.position[0]][explorer.position[1]] = '?'; center_pos = explorer.position; @@ -186,18 +187,24 @@ let tui = { terminal.write(terminal.rows - 1, terminal.cols / 2, '> ' + this.input_line); } }, - log_msg: function(msg) { - let line_length = (terminal.cols / 2); + msg_into_lines_of_width: function(msg, width) { let chunk = ""; + let lines = []; for (let i = 0, x = 0; i < msg.length; i++, x++) { - if (x >= line_length) { - this.log.unshift(chunk); + if (x >= width) { + lines.unshift(chunk); chunk = ""; x = 0; }; chunk += msg[i]; } - this.log.unshift(chunk); + lines.unshift(chunk); + return lines; + }, + log_msg: function(msg) { + let line_length = (terminal.cols / 2); + let chunk = ""; + this.log = this.msg_into_lines_of_width(msg, terminal.cols / 2).concat(this.log); while (this.log.length > terminal.rows - 2) { this.log.pop(); }; @@ -209,21 +216,22 @@ let tui = { log_help: function() { tui.log_msg(""); tui.log_msg("HELP"); - tui.log_msg("chat mode commands:"); tui.log_msg(""); + tui.log_msg("chat mode commands:"); tui.log_msg("/login USER - register as USER"); tui.log_msg("/msg USER TEXT - send TEXT to USER"); tui.log_msg("/help - show this help"); - tui.log_msg("/play - switch to play mode"); + tui.log_msg("/play or /p - switch to play mode"); + tui.log_msg("/study or /s - switch to study mode"); tui.log_msg(""); tui.log_msg("play mode commands:"); tui.log_msg("w, a, s, d - move avatar"); tui.log_msg("f - flatten surroundings"); tui.log_msg("e - write following ASCII character"); tui.log_msg("c - switch to chat mode"); - tui.log_msg("? - switch to investigation mode"); + tui.log_msg("? - switch to study mode"); tui.log_msg(""); - tui.log_msg("investigation mode commands:"); + tui.log_msg("study mode commands:"); tui.log_msg("w, a, s, d - move question mark"); tui.log_msg("A - annotate terrain"); tui.log_msg("c - switch to chat mode"); @@ -232,7 +240,8 @@ let tui = { }, draw_info: function() { terminal.drawBox(1, terminal.cols / 2, terminal.rows - 2, terminal.cols / 2); - let lines = explorer.get_info(); + let lines = this.msg_into_lines_of_width(explorer.get_info(), terminal.cols / 2); + lines.reverse(); for (let y = 1, i = 0; y < terminal.rows && i < lines.length; y++, i++) { terminal.write(y, terminal.cols / 2, lines[i]); } @@ -263,6 +272,10 @@ tui.log_help(); tui.full_refresh(); let websocket = new WebSocket(websocket_location); +websocket.onopen = function (event) { + window.setInterval(function() { websocket.send('PING') }, 30000); + websocket.send('GET_GAMESTATE'); +} websocket.onmessage = function (event) { let tokens = parser.tokenize(event.data)[0]; if (tokens[0] === 'TURN') { @@ -355,9 +368,9 @@ let explorer = { }, get_info: function() { if (this.position in this.info_db) { - return [this.info_db[this.position]]; + return this.info_db[this.position]; } else { - return ['waiting …']; + return 'waiting …'; } }, annotate: function(msg) { @@ -382,9 +395,9 @@ document.addEventListener('keydown', (event) => { let [tokens, token_starts] = parser.tokenize(tui.input_line); if (tokens.length > 0 && tokens[0].length > 0) { if (tokens[0][0] == '/') { - if (tokens[0] == '/play') { + if (tokens[0] == '/play' || tokens[0] == '/p') { tui.switch_mode('play'); - } else if (tokens[0] == '/study') { + } else if (tokens[0] == '/study' || tokens[0] == '/s') { tui.switch_mode('study'); } else if (tokens[0] == '/help') { tui.log_help(); @@ -473,7 +486,5 @@ document.addEventListener('keydown', (event) => { } } }, false); - -window.setInterval(function() { websocket.send('PING') }, 30000);