</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_pw_type': {
'short': 'change tiles control password',
- 'long': 'This mode is the first of two steps to change the password for a tile control character. First enter the tile control character for which you want to change the password!'
+ 'long': 'This mode is the first of two steps to change the password for a tile control character. First enter the tile control character for which you want to change the password.'
},
'control_pw_pw': {
'short': 'change tiles control password',
},
'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),
mode_study: new Mode('study', false, true),
mode_write: new Mode('write', false, false, false, true),
mode_edit: new Mode('edit'),
- mode_control_pw_type: new Mode('control_pw_type',
- false, false, false, true),
+ mode_control_pw_type: new Mode('control_pw_type', true),
mode_portal: new Mode('portal', true, true),
mode_password: new Mode('password', true),
mode_admin_enter: new Mode('admin_enter', true),
mode_admin: new Mode('admin'),
mode_control_pw_pw: new Mode('control_pw_pw', true),
- mode_control_tile_type: new Mode('control_tile_type',
- false, false, false, true),
+ mode_control_tile_type: new Mode('control_tile_type', true),
mode_control_tile_draw: new Mode('control_tile_draw'),
init: function() {
this.mode_play.available_modes = ["chat", "study", "edit", "admin_enter"]
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();
this.show_help = true;
} else if (this.mode.name == 'admin_enter') {
this.log_msg('@ enter admin password:')
+ } else if (this.mode.name == 'control_pw_type') {
+ this.log_msg('@ enter tile control character for which you want to change the password:')
+ } else if (this.mode.name == 'control_tile_type') {
+ this.log_msg('@ enter tile control character which you want to draw:')
} else if (this.mode.name == 'control_pw_pw') {
this.log_msg('@ enter tile control password for "' + this.tile_control_char + '":');
- } else if (this.mode.name == 'control_pw_pw') {
- this.log_msg('@ enter tile control password for "' + this.tile_control_char + '":');
+ } else if (this.mode.name == 'control_tile_draw') {
+ document.getElementById("toggle_tile_draw").disabled = false;
+ this.log_msg('@ can draw tile control character "' + this.tile_control_char + '", turn drawing on/off with [' + this.keys.toggle_tile_draw + '], finish with [' + this.keys.switch_to_admin_enter + '].')
}
this.full_refresh();
},
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 (tui.mode.name == 'write' && tui.inputEl.value.length > 0) {
server.send(["TASK:WRITE", tui.inputEl.value[0], tui.password]);
tui.switch_mode('edit');
- } else if (tui.mode.name == 'control_pw_type' && tui.inputEl.value.length > 0) {
- tui.tile_control_char = tui.inputEl.value[0];
- tui.switch_mode('control_pw_pw');
- } else if (tui.mode.name == 'control_tile_type' && tui.inputEl.value.length > 0) {
- tui.tile_control_char = tui.inputEl.value[0];
- tui.switch_mode('control_tile_draw');
}
tui.full_refresh();
}, false);
} else if (tui.mode.name == 'admin_enter' && event.key == 'Enter') {
server.send(['BECOME_ADMIN', tui.inputEl.value]);
tui.switch_mode('play');
+ } else if (tui.mode.name == 'control_pw_type' && event.key == 'Enter') {
+ if (tui.inputEl.value.length != 1) {
+ tui.log_msg('@ entered non-single-char, therefore aborted');
+ tui.switch_mode('admin');
+ } else {
+ tui.tile_control_char = tui.inputEl.value[0];
+ tui.switch_mode('control_pw_pw');
+ }
+ } else if (tui.mode.name == 'control_tile_type' && event.key == 'Enter') {
+ if (tui.inputEl.value.length != 1) {
+ tui.log_msg('@ entered non-single-char, therefore aborted');
+ tui.switch_mode('admin');
+ } else {
+ tui.tile_control_char = tui.inputEl.value[0];
+ tui.switch_mode('control_tile_draw');
+ }
} else if (tui.mode.name == 'chat' && event.key == 'Enter') {
let tokens = parser.tokenize(tui.inputEl.value);
if (tokens.length > 0 && tokens[0].length > 0) {
} 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.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() {