X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=new2%2Frogue_chat_nocanvas_monochrome.html;h=02d6d6b48bbff22345af283cac8bee71132707cb;hb=7d730b5350cc53c3d43b12f14042b1b03a123297;hp=14668eaa6c015e1b3e5c483c16600f007d53c63d;hpb=8a8eb0967bcffcb934a37ecc5846f007268a0dc8;p=plomrogue2-experiments diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html index 14668ea..02d6d6b 100644 --- a/new2/rogue_chat_nocanvas_monochrome.html +++ b/new2/rogue_chat_nocanvas_monochrome.html @@ -152,26 +152,32 @@ let tui = { input_lines: [], window_width: terminal.cols / 2, height_turn_line: 1, + height_mode_line: 1, height_input: 1, init: function() { this.recalc_input_lines(); + this.height_header = this.height_turn_line + this.height_mode_line; }, switch_mode: function(mode_name, keep_pos=false) { if (mode_name == 'study' && !keep_pos) { explorer.position = game.things[game.player_id]; } this.mode = mode_name; + this.empty_input(); this.full_refresh(); }, + draw_mode_line: function() { + terminal.drawBox(1, this.window_width, this.height_mode_line, this.window_width); + terminal.write(1, this.window_width, 'MODE ' + this.mode); + }, draw_history: function() { - if (terminal.rows <= this.height_turn_line + this.height_input) { + if (terminal.rows <= this.height_header + this.height_input) { return; } - terminal.drawBox(this.height_turn_line, this.window_width, terminal.rows - this.height_turn_line - this.height_input, this.window_width); - console.log(this.log); - for (let y = terminal.rows - this.height_input - this.height_turn_line, + terminal.drawBox(this.height_header, this.window_width, terminal.rows - this.height_header - this.height_input, this.window_width); + for (let y = terminal.rows - 1 - this.height_input, i = this.log.length - 1; - y >= this.height_turn_line && i >= 0; + y >= this.height_header && i >= 0; y--, i--) { terminal.write(y, this.window_width, this.log[i]); } @@ -220,7 +226,11 @@ let tui = { }, empty_input: function(str) { this.input = ""; - this.recalc_input_lines(); + if (this.mode == 'annotate' || this.mode == 'chat') { + this.recalc_input_lines(); + } else { + this.height_input = 0; + } }, add_to_input: function(str) { if (this.input.length + str.length > this.window_width * terminal.rows) { @@ -234,10 +244,8 @@ let tui = { this.height_input = this.input_lines.length; }, shorten_input: function() { - if (this.input.length > 2) { - this.input = tui.input.slice(0, -1); - this.recalc_input_lines(); - } + this.input = tui.input.slice(0, -1); + this.recalc_input_lines(); }, draw_input: function() { terminal.drawBox(terminal.rows - this.height_input, this.window_width, this.height_input, this.window_width); @@ -264,7 +272,7 @@ let tui = { log_msg: function(msg) { let lines = this.msg_into_lines_of_width(msg, this.window_width); this.log = this.log.concat(lines); - while (this.log.length > terminal.rows - 2) { + while (this.log.length > terminal.rows) { this.log.shift(); }; this.draw_history(); @@ -298,15 +306,16 @@ let tui = { tui.log_msg(""); }, draw_info: function() { - terminal.drawBox(this.height_turn_line, this.window_width, terminal.rows - this.height_turn_line - this.height_input, this.window_width); + terminal.drawBox(this.height_header, this.window_width, terminal.rows - this.height_header - this.height_input, this.window_width); let lines = this.msg_into_lines_of_width(explorer.get_info(), this.window_width); - for (let y = this.height_turn_line, i = 0; y < terminal.rows && i < lines.length; y++, i++) { + for (let y = this.height_header, i = 0; y < terminal.rows && i < lines.length; y++, i++) { terminal.write(y, this.window_width, lines[i]); } }, full_refresh: function() { this.draw_map(); this.draw_turn_line(); + this.draw_mode_line(); if (this.mode == 'study' || this.mode == 'annotate') { this.draw_info(); } else { @@ -531,7 +540,6 @@ document.addEventListener('keydown', (event) => { tui.full_refresh(); } else if (event.key == 'Enter') { explorer.annotate(tui.input); - tui.empty_input(); tui.switch_mode('study', true); } }