from plomrogue.io import GameIO
from plomrogue.misc import quote
from plomrogue.things import Thing, ThingPlayer
-from plomrogue.mapping import YX, MapGeometrySquare
+from plomrogue.mapping import YX, MapGeometrySquare, Map
self.thing_type = Thing
self.thing_types = {'player': ThingPlayer}
self.sessions = {}
+ self.map = Map(self.map_geometry.size)
def get_string_options(self, string_option_type):
if string_option_type == 'direction':
self.io.send('TURN ' + str(self.turn))
for t in self.things:
send_thing(t)
+ self.io.send('MAP %s %s' % (self.map_geometry.size, quote(self.map.terrain)))
self.io.send('GAME_STATE_COMPLETE')
def run_tick(self):
def move_DOWN(self, start_pos):
return YX(start_pos.y + 1, start_pos.x)
+
+
+
+class Map():
+
+ def __init__(self, map_size):
+ self.size = map_size
+ self.terrain = '.' * self.size_i
+
+ @property
+ def size_i(self):
+ return self.size.y * self.size.x
}
return tokens;
},
- parse_position(position_string) {
+ parse_yx(position_string) {
let coordinate_strings = position_string.split(',')
let position = [0, 0];
position[0] = coordinate_strings[0].slice(2);
},
draw_map: function() {
terminal.drawBox(0, 0, terminal.rows, terminal.cols / 2);
+ let map_line = "";
+ let y = 0;
+ for (let i = 0, x = 0; i < game.map.length; i++, x++) {
+ if (x >= game.map_size[1]) {
+ terminal.write(y, 0, map_line);
+ map_line = "";
+ x = 0;
+ y += 1;
+ };
+ map_line += game.map[i];
+ }
+ terminal.write(y, 0, map_line);
for (const t in game.things) {
terminal.write(game.things[t][0], game.things[t][1], '@');
}
let game = {
things: {},
- tick: 0
+ tick: 0,
+ map: "",
+ map_size: [1,1]
}
let chat = {
game.things = {}
game.tick = parseInt(tokens[1]);
} else if (tokens[0] === 'THING_POS') {
- game.things[tokens[1]] = parser.parse_position(tokens[2]);
+ game.things[tokens[1]] = parser.parse_yx(tokens[2]);
+ } else if (tokens[0] === 'MAP') {
+ game.map_size = parser.parse_yx(tokens[1]);
+ game.map = tokens[2]
} else if (tokens[0] === 'GAME_STATE_COMPLETE') {
tui.draw_tick_line();
tui.draw_map();