},
}
+class Thing {
+ constructor(yx) {
+ this.position = yx;
+ }
+}
+
let server = {
init: function(url) {
this.url = url;
game.portals = {};
game.turn = parseInt(tokens[1]);
} else if (tokens[0] === 'THING_POS') {
- game.things[tokens[1]] = parser.parse_yx(tokens[2]);
+ game.get_thing(tokens[1], true).position = parser.parse_yx(tokens[2]);
+ } else if (tokens[0] === 'THING_NAME') {
+ game.get_thing(tokens[1], true).name_ = tokens[2];
} else if (tokens[0] === 'MAP') {
game.map_size = parser.parse_yx(tokens[1]);
game.map = tokens[2]
if (tui.mode == mode_study) {
explorer.query_info();
}
- let player_position = [0,0];
- for (const thing_id in game.things) {
- if (game.player_id == thing_id) {
- let t = game.things[thing_id];
- player_position = t;
- }
- }
- if (player_position in game.portals) {
- tui.teleport_target = game.portals[player_position];
+ let t = game.get_thing(game.player_id);
+ if (t.position in game.portals) {
+ tui.teleport_target = game.portals[t.position];
tui.switch_mode(mode_teleport);
return;
}
},
switch_mode: function(mode, keep_pos=false) {
if (mode == mode_study && !keep_pos) {
- explorer.position = game.things[game.player_id];
+ explorer.position = game.things[game.player_id].position;
}
this.mode = mode;
this.empty_input();
Math.floor(game.map_size[1] / 2)];
for (const thing_id in game.things) {
let t = game.things[thing_id];
- map_lines[t[0]][t[1]] = '@';
+ map_lines[t.position[0]][t.position[1]] = '@';
if (game.player_id == thing_id) {
- center_pos = t;
+ center_pos = t.position;
}
};
if (tui.mode.shows_info) {
this.player_id = -1;
this.portals = {};
},
+ get_thing: function(id_, create_if_not_found=false) {
+ if (id_ in game.things) {
+ return game.things[id_];
+ } else if (create_if_not_found) {
+ let t = new Thing([0,0]);
+ game.things[id_] = t;
+ return t;
+ };
+ }
}
game.init();
},
get_info: function() {
let info = "";
+ for (let t_id in game.things) {
+ let t = game.things[t_id];
+ if (t.position[0] == this.position[0] && t.position[1] == this.position[1]) {
+ info += "PLAYER";
+ if (t.name_) {
+ info += " " + t.name_;
+ }
+ info += "\n";
+ }
+ }
if (this.position in game.portals) {
info += "PORTAL: " + game.portals[this.position] + "\n";
}