home · contact · privacy
Add mode line.
[plomrogue2-experiments] / new2 / rogue_chat_nocanvas_monochrome.html
index 14668eaa6c015e1b3e5c483c16600f007d53c63d..02d6d6b48bbff22345af283cac8bee71132707cb 100644 (file)
@@ -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);
         }
     }