'name_thing': {
'short': 'name thing',
'intro': '',
- 'long': 'Give name to/change name of thing here.'
+ 'long': 'Give name to/change name of carried thing.'
},
'command_thing': {
'short': 'command',
'admin_thing_protect': {
'short': 'change thing protection',
'intro': '@ enter thing protection character:',
- 'long': 'Change protection character for thing here.'
+ 'long': 'Change protection character for carried thing.'
},
'enter_face': {
'short': 'edit face',
game.thing_types[tokens[1]] = tokens[2]
} else if (tokens[0] === 'THING_CARRYING') {
let t = game.get_thing_temp(tokens[1]);
- t.carrying = game.get_thing(tokens[2], false);
+ t.carrying = game.get_thing_temp(tokens[2], false);
} else if (tokens[0] === 'THING_INSTALLED') {
let t = game.get_thing_temp(tokens[1]);
t.installed = true;
},
switch_mode: function(mode_name) {
- function fail(msg, return_mode) {
+ function fail(msg, return_mode='play') {
tui.log_msg('? ' + msg);
terminal.blink_screen();
tui.switch_mode(return_mode);
this.tile_draw = false;
if (mode_name == 'command_thing' && (!game.player.carrying
|| !game.player.carrying.commandable)) {
- return fail('not carrying anything commandable', 'play');
+ return fail('not carrying anything commandable');
+ } else if (mode_name == 'name_thing' && !game.player.carrying) {
+ return fail('not carrying anything to re-name');
+ } else if (mode_name == 'admin_thing_protect' && !game.player.carrying) {
+ return fail('not carrying anything to protect')
} else if (mode_name == 'take_thing' && game.player.carrying) {
- return fail('already carrying something', 'play');
+ return fail('already carrying something');
} else if (mode_name == 'drop_thing' && !game.player.carrying) {
- return fail('not carrying anything droppable', 'play');
+ return fail('not carrying anything droppable');
} else if (mode_name == 'enter_hat' && !game.player.hat) {
return fail('not wearing hat to edit', 'edit');
}
if (mode_name == 'admin_enter' && this.is_admin) {
mode_name = 'admin';
- } else if (['name_thing', 'admin_thing_protect'].includes(mode_name)) {
- let thing_id = null;
- for (let t_id in game.things) {
- if (t_id == game.player_id) {
- continue;
- }
- let t = game.things[t_id];
- if (game.player.position[0] == t.position[0]
- && game.player.position[1] == t.position[1]) {
- thing_id = t_id;
- break;
- }
- }
- if (!thing_id) {
- return fail('not standing over thing', 'fail');
- } else {
- this.selected_thing_id = thing_id;
- }
};
this.mode = this['mode_' + mode_name];
if (["control_tile_draw", "control_tile_type", "control_pw_type"].includes(this.mode.name)) {
this.log_msg("Portable things in reach for pick-up:");
const y = game.player.position[0]
const x = game.player.position[1]
- let select_range = [y.toString() + ':' + x.toString(),
- (y + 0).toString() + ':' + (x - 1).toString(),
- (y + 0).toString() + ':' + (x + 1).toString(),
- (y - 1).toString() + ':' + (x).toString(),
- (y + 1).toString() + ':' + (x).toString()];
- if (game.map_geometry == 'Hex') {
+ let directed_moves = {
+ 'HERE': [0, 0], 'LEFT': [0, -1], 'RIGHT': [0, 1]
+ }
+ if (game.map_geometry == 'Square') {
+ directed_moves['UP'] = [-1, 0];
+ directed_moves['DOWN'] = [1, 0];
+ } else if (game.map_geometry == 'Hex') {
if (y % 2) {
- select_range.push((y - 1).toString() + ':' + (x + 1).toString());
- select_range.push((y + 1).toString() + ':' + (x + 1).toString());
+ directed_moves['UPLEFT'] = [-1, 0];
+ directed_moves['UPRIGHT'] = [-1, 1];
+ directed_moves['DOWNLEFT'] = [1, 0];
+ directed_moves['DOWNRIGHT'] = [1, 1];
} else {
- select_range.push((y - 1).toString() + ':' + (x - 1).toString());
- select_range.push((y + 1).toString() + ':' + (x - 1).toString());
+ directed_moves['UPLEFT'] = [-1, -1];
+ directed_moves['UPRIGHT'] = [-1, 0];
+ directed_moves['DOWNLEFT'] = [1, -1];
+ directed_moves['DOWNRIGHT'] = [1, 0];
}
- };
+ }
+ console.log(directed_moves);
+ let select_range = {};
+ for (const direction in directed_moves) {
+ const move = directed_moves[direction];
+ select_range[direction] = [y + move[0], x + move[1]];
+ }
this.selectables = [];
- for (const t_id in game.things) {
- const t = game.things[t_id];
- if (select_range.includes(t.position[0].toString()
- + ':' + t.position[1].toString())
- && t.portable) {
- this.selectables.push(t_id);
+ let directions = [];
+ for (const direction in select_range) {
+ for (const t_id in game.things) {
+ const t = game.things[t_id];
+ const position = select_range[direction];
+ if (t.portable
+ && t.position[0] == position[0]
+ && t.position[1] == position[1]) {
+ this.selectables.push(t_id);
+ directions.push(direction);
+ }
}
- };
+ }
if (this.selectables.length == 0) {
this.log_msg('none');
terminal.blink_screen();
} else {
for (let [i, t_id] of this.selectables.entries()) {
const t = game.things[t_id];
- this.log_msg(i + ': ' + explorer.get_thing_info(t));
+ const direction = directions[i];
+ this.log_msg(i + ' ' + direction + ': ' + explorer.get_thing_info(t));
}
}
} else if (this.mode.name == 'drop_thing') {
} else if (this.mode.name == 'password') {
this.inputEl.value = this.password;
} else if (this.mode.name == 'name_thing') {
- let t = game.get_thing(this.selected_thing_id);
- if (t && t.name_) {
- this.inputEl.value = t.name_;
+ if (game.player.carrying && game.player.carrying.name_) {
+ this.inputEl.value = game.player.carrying.name_;
}
} else if (this.mode.name == 'admin_thing_protect') {
- let t = game.get_thing(this.selected_thing_id);
- if (t && t.protection) {
- this.inputEl.value = t.protection;
+ if (game.player.carrying && game.player.carrying.protection) {
+ this.inputEl.value = game.player.carrying.protection;
}
} else if (['enter_face', 'enter_hat'].includes(this.mode.name)) {
const start = this.ascii_draw_stage * 6;
if (tui.inputEl.value.length == 0) {
tui.inputEl.value = " ";
}
- server.send(["THING_NAME", tui.selected_thing_id, tui.inputEl.value,
- tui.password]);
+ server.send(["THING_NAME", tui.inputEl.value, tui.password]);
tui.switch_mode('edit');
} else if (tui.mode.name == 'annotate' && event.key == 'Enter') {
explorer.annotate(tui.inputEl.value);
if (tui.inputEl.value.length != 1) {
tui.log_msg('@ entered non-single-char, therefore aborted');
} else {
- server.send(['THING_PROTECTION', tui.selected_thing_id, tui.inputEl.value])
+ server.send(['THING_PROTECTION', tui.inputEl.value])
tui.log_msg('@ sent new protection character for thing');
}
tui.switch_mode('admin');
}, 1000);
window.setInterval(function() {
if (document.activeElement.tagName.toLowerCase() != 'input') {
- const scroll_x = window.scrollX;
- const scroll_y = window.scrollY;
tui.inputEl.focus();
- window.scrollTo(scroll_x, scroll_y);
};
}, 100);
document.getElementById("help").onclick = function() {