</tr>
<tr>
<td><button id="switch_to_study">study mode</button></td>
- <td><button id="toggle_map_mode">toggle terrain/annotations/control view</button>
+ <td><button id="toggle_map_mode">toggle everything/terrain/annotations view</button>
</tr>
<tr>
<td><button id="switch_to_play">play mode</button></td>
<td>
<button id="switch_to_control_pw_type">change tile control password</button>
<button id="switch_to_control_tile_type">change tiles control</button>
+ <button id="toggle_tile_draw">toggle tiles control drawing</button>
</td>
<tr>
</tr>
<li><input id="key_switch_to_control_tile_type" type="text" value="Q" />
<li><input id="key_switch_to_annotate" type="text" value="M" />
<li><input id="key_switch_to_portal" type="text" value="T" />
-<li>toggle terrain/annotations/control view: <input id="key_toggle_map_mode" type="text" value="M" />
+<li>toggle everything/terrain/annotations view: <input id="key_toggle_map_mode" type="text" value="M" />
+<li>toggle everything/terrain/annotations view: <input id="key_toggle_tile_draw" type="text" value="m" />
</ul>
</div>
<script>
},
'control_tile_draw': {
'short': 'change tiles control',
- 'long': 'This mode is the second of two steps to change tile control areas on the map. Move cursor around the map to draw selected tile control character'
+ 'long': 'This mode is the second of two steps to change tile control areas on the map. Toggle tile control drawing on, then move cursor around the map to draw selected tile control character.'
},
'annotate': {
'short': 'annotate tile',
password: 'foo',
show_help: false,
is_admin: false,
+ tile_draw: false,
mode_waiting_for_server: new Mode('waiting_for_server',
false, false, true),
mode_login: new Mode('login', true, false, true),
this.mode_admin.available_modes = ["control_pw_type",
"control_tile_type", "chat",
"study", "play", "edit"]
- this.mode_control_tile_draw.available_modes = ["admin"]
+ this.mode_control_tile_draw.available_modes = ["admin_enter"]
this.mode_edit.available_modes = ["write", "annotate", "portal",
"password", "chat", "study", "play",
"admin_enter"]
},
switch_mode: function(mode_name) {
this.inputEl.focus();
- this.map_mode = 'terrain';
+ this.map_mode = 'all';
+ this.tile_draw = false;
if (mode_name == 'admin_enter' && this.is_admin) {
mode_name = 'admin';
};
if (game.player_id in game.things && (this.mode.shows_info || this.mode.name == 'control_tile_draw')) {
explorer.position = game.things[game.player_id].position;
if (this.mode.shows_info) {
- explorer.query_info();
- } else if (this.mode.name == 'control_tile_draw') {
- explorer.send_tile_control_command();
- this.map_mode = 'control';
+ explorer.query_info();
}
}
this.empty_input();
} else if (this.mode.name == 'admin') {
document.getElementById("switch_to_control_pw_type").disabled = false;
document.getElementById("switch_to_control_tile_type").disabled = false;
+ } else if (this.mode.name == 'control_tile_draw') {
+ document.getElementById("toggle_tile_draw").disabled = false;
} else if (this.mode.name == 'study') {
document.getElementById("toggle_map_mode").disabled = false;
} else if (this.mode.is_single_char_entry) {
draw_map: function() {
let map_lines_split = [];
let line = [];
- let map_content = game.map;
- if (this.map_mode == 'control') {
- map_content = game.map_control;
- }
for (let i = 0, j = 0; i < game.map.length; i++, j++) {
if (j == game.map_size[1]) {
map_lines_split.push(line);
line = [];
j = 0;
};
- line.push(map_content[i] + ' ');
+ if (['edit', 'write', 'control_tile_draw',
+ 'control_tile_type'].includes(this.mode.name)) {
+ line.push(game.map[i] + game.map_control[i]);
+ } else {
+ line.push(game.map[i] + ' ');
+ }
};
map_lines_split.push(line);
if (this.map_mode == 'annotations') {
for (const coordinate of explorer.info_hints) {
map_lines_split[coordinate[0]][coordinate[1]] = 'A ';
}
- } else if (this.map_mode == 'terrain') {
+ } else if (this.map_mode == 'all') {
for (const p in game.portals) {
let coordinate = p.split(',')
- map_lines_split[coordinate[0]][coordinate[1]] = 'P ';
+ let original = map_lines_split[coordinate[0]][coordinate[1]];
+ map_lines_split[coordinate[0]][coordinate[1]] = original[0] + 'P';
}
let used_positions = [];
for (const thing_id in game.things) {
content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n";
}
content += '\n';
+ } else if (this.mode.name == 'control_tile_draw') {
+ content += "Available actions:\n";
+ content += "[" + tui.keys.toggle_tile_draw + "] – toggle tile control drawing\n";
+ content += '\n';
} else if (this.mode.name == 'chat') {
content += '/nick NAME – re-name yourself to NAME\n';
content += '/' + this.keys.switch_to_play + ' or /play – switch to play mode\n';
terminal.write(y, start_x, lines[i]);
}
},
+ toggle_tile_draw: function() {
+ if (tui.tile_draw) {
+ tui.tile_draw = false;
+ } else {
+ tui.tile_draw = true;
+ }
+ },
+ toggle_map_mode: function() {
+ if (tui.map_mode == 'terrain') {
+ tui.map_mode = 'annotations';
+ } else if (tui.map_mode == 'annotations') {
+ tui.map_mode = 'all';
+ } else {
+ tui.map_mode = 'terrain';
+ }
+ },
full_refresh: function() {
this.links = {};
terminal.drawBox(0, 0, terminal.rows, terminal.cols);
this.position = target
if (tui.mode.shows_info) {
this.query_info();
- } else if (tui.mode.name == 'control_tile_draw') {
+ } else if (tui.tile_draw) {
this.send_tile_control_command();
}
} else {
} else if (event.key in tui.movement_keys) {
explorer.move(tui.movement_keys[event.key]);
} else if (event.key == tui.keys.toggle_map_mode) {
- if (tui.map_mode == 'terrain') {
- tui.map_mode = 'annotations';
- } else if (tui.map_mode == 'annotations') {
- tui.map_mode = 'control';
- } else {
- tui.map_mode = 'terrain';
- }
+ tui.toggle_map_mode();
};
} else if (tui.mode.name == 'control_tile_draw') {
if (tui.mode.mode_switch_on_key(event)) {
null;
} else if (event.key in tui.movement_keys) {
explorer.move(tui.movement_keys[event.key]);
+ } else if (event.key === tui.keys.toggle_tile_draw) {
+ tui.toggle_tile_draw();
};
} else if (tui.mode.name == 'admin') {
if (tui.mode.mode_switch_on_key(event)) {
tui.show_help = true;
tui.full_refresh();
};
-document.getElementById("switch_to_play").onclick = function() {
- tui.switch_mode('play');
- tui.full_refresh();
-};
-document.getElementById("switch_to_study").onclick = function() {
- tui.switch_mode('study');
- tui.full_refresh();
-};
-document.getElementById("switch_to_chat").onclick = function() {
- tui.switch_mode('chat');
- tui.full_refresh();
-};
-document.getElementById("switch_to_password").onclick = function() {
- tui.switch_mode('password');
- tui.full_refresh();
-};
-document.getElementById("switch_to_edit").onclick = function() {
- tui.switch_mode('edit');
- tui.full_refresh();
-};
-document.getElementById("switch_to_write").onclick = function() {
- tui.switch_mode('write');
- tui.full_refresh();
-};
-document.getElementById("switch_to_annotate").onclick = function() {
- tui.switch_mode('annotate');
- tui.full_refresh();
-};
-document.getElementById("switch_to_portal").onclick = function() {
- tui.switch_mode('portal');
- tui.full_refresh();
-};
-document.getElementById("switch_to_admin_enter").onclick = function() {
- tui.switch_mode('admin');
- tui.full_refresh();
-};
-document.getElementById("switch_to_control_pw_type").onclick = function() {
- tui.switch_mode('control_pw_type');
- tui.full_refresh();
-};
-document.getElementById("switch_to_control_tile_type").onclick = function() {
- tui.switch_mode('control_tile_type');
- tui.full_refresh();
+for (const switchEl of document.querySelectorAll('[id^="switch_to_"]')) {
+ const mode = switchEl.id.slice("switch_to_".length);
+ switchEl.onclick = function() {
+ tui.switch_mode(mode);
+ tui.full_refresh();
+ }
};
+document.getElementById("toggle_tile_draw").onclick = function() {
+ tui.toggle_tile_draw();
+}
document.getElementById("toggle_map_mode").onclick = function() {
- if (tui.map_mode == 'terrain') {
- tui.map_mode = 'annotations';
- } else if (tui.map_mode == 'annotations') {
- tui.map_mode = 'control';
- } else {
- tui.map_mode = 'terrain';
- }
+ tui.toggle_map_mode();
tui.full_refresh();
};
document.getElementById("take_thing").onclick = function() {