home · contact · privacy
Fix line wrapping on terminal resizing.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 29 Oct 2020 04:20:52 +0000 (05:20 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 29 Oct 2020 04:20:52 +0000 (05:20 +0100)
new2/rogue_chat_nocanvas_monochrome.html

index fc5e24c2a397e2f1dc9bdd16201313930eed7698..6aa17ee6511089f64f538d0d8aca57b20e292dc9 100644 (file)
@@ -267,9 +267,8 @@ let tui = {
     return lines;
   },
   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) {
+      this.log.push(msg);
+      while (this.log.length > terminal.rows * 4) {
         this.log.shift();
       };
       this.full_refresh();
@@ -337,14 +336,15 @@ let tui = {
     terminal.write(1, this.window_width, 'TURN: ' + game.turn);
   },
   draw_history: function() {
-    if (terminal.rows <= this.height_header + this.height_input) {
-        return;
-    }
+      let log_display_lines = [];
+      for (let line of this.log) {
+          log_display_lines = log_display_lines.concat(this.msg_into_lines_of_width(line, this.window_width));
+      };
       for (let y = terminal.rows - 1 - this.height_input,
-               i = this.log.length - 1;
+               i = log_display_lines.length - 1;
            y >= this.height_header && i >= 0;
            y--, i--) {
-          terminal.write(y, this.window_width, this.log[i]);
+          terminal.write(y, this.window_width, log_display_lines[i]);
       }
   },
   draw_info: function() {