From: Christian Heller Date: Mon, 26 Oct 2020 22:50:59 +0000 (+0100) Subject: Add scrolling to monochrome client. X-Git-Url: https://plomlompom.com/repos/todos?a=commitdiff_plain;h=61c63e6df3cc5bbd22fdbf3036481ade88112ca4;p=plomrogue2-experiments Add scrolling to monochrome client. --- diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html index 0ca95ed..97c0f08 100644 --- a/new2/rogue_chat_nocanvas_monochrome.html +++ b/new2/rogue_chat_nocanvas_monochrome.html @@ -27,7 +27,6 @@ let terminal = { } line.push(' '); } - console.log(this.content); }, refresh: function() { let pre_string = ''; @@ -38,7 +37,7 @@ let terminal = { this.pre_el.textContent = pre_string; }, write: function(start_y, start_x, msg) { - for (let x = start_x, i = 0; x < this.cols, i < msg.length; x++, i++) { + for (let x = start_x, i = 0; x < this.cols && i < msg.length; x++, i++) { this.content[start_y][x] = msg[i]; } }, @@ -109,22 +108,33 @@ let tui = { } }, draw_map: function() { + terminal.drawBox(0, 0, terminal.rows, terminal.cols / 2); let map_lines = []; - let line = ''; + let line = []; for (let i = 0, j = 0; i < game.map.length; i++, j++) { if (j == game.map_size[1]) { map_lines.push(line); - line = ''; + line = []; j = 0; }; - line += game.map[i]; + line.push(game.map[i]); }; map_lines.push(line); - for (let y = 0; y < game.map_size[0]; y++) { - terminal.write(y, 0, map_lines[y]); + let player_position = [0,0]; + for (const thing_id in game.things) { + let t = game.things[thing_id]; + map_lines[t[0]][t[1]] = '@'; + player_position = t; } - for (const t in game.things) { - terminal.write(game.things[t][0], game.things[t][1], '@'); + let offset = [(terminal.rows / 2) - player_position[0], + terminal.cols / 4 - player_position[1]]; + for (let term_y = offset[0], map_y = 0; + term_y < terminal.rows && map_y < game.map_size[0]; + term_y++, map_y++) { + if (term_y >= 0) { + let to_draw = map_lines[map_y].join('').slice(0, terminal.cols / 2 - offset[1]); + terminal.write(term_y, offset[1], to_draw); + } } }, draw_turn_line: function(n) {