let mode_study = new Mode('check map tiles for messages', false, true);
let mode_edit = new Mode('write ASCII char to map tile', false, false);
let mode_teleport = new Mode('teleport away?');
+let mode_portal = new Mode('add portal to map tile', true, true);
let tui = {
mode: mode_waiting_for_server,
if (mode == mode_annotate && explorer.position in explorer.info_db) {
let info = explorer.info_db[explorer.position];
if (info != "(none)") {
- this.inputEl.value = explorer.info_db[explorer.position];
+ this.inputEl.value = info;
this.recalc_input_lines();
}
+ }
+ if (mode == mode_portal && explorer.position in game.portals) {
+ let portal = game.portals[explorer.position]
+ this.inputEl.value = portal;
+ this.recalc_input_lines();
} else if (mode == mode_teleport) {
tui.log_msg("Type Y or y to affirm teleportation, any other key to abort.");
tui.log_msg("target: " + tui.teleport_target);
msg = " "; // triggers annotation deletion
}
server.send(["ANNOTATE", unparser.to_yx(explorer.position), msg]);
+ },
+ set_portal: function(msg) {
+ if (msg.length == 0) {
+ msg = " "; // triggers portal deletion
+ }
+ server.send(["PORTAL", unparser.to_yx(explorer.position), msg]);
}
}
if (tui.mode == mode_login && event.key == 'Enter') {
server.send(['LOGIN', tui.inputEl.value]);
tui.switch_mode(mode_login);
+ } else if (tui.mode == mode_portal && event.key == 'Enter') {
+ explorer.set_portal(tui.inputEl.value);
+ tui.switch_mode(mode_study, true);
} else if (tui.mode == mode_annotate && event.key == 'Enter') {
explorer.annotate(tui.inputEl.value);
tui.switch_mode(mode_study, true);
tui.switch_mode(mode_chat);
} else if (event.key == 'p') {
tui.switch_mode(mode_play);
+ } else if (event.key === 'P') {
+ event.preventDefault();
+ tui.switch_mode(mode_portal);
} else if (event.key === tui.key_left) {
explorer.move('left');
} else if (event.key === tui.key_right) {