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]);
}
},
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) {
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);
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();
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 {
tui.full_refresh();
} else if (event.key == 'Enter') {
explorer.annotate(tui.input);
- tui.empty_input();
tui.switch_mode('study', true);
}
}