def __init__(self):
self.turn = 0
self.things = []
- self.map_geometry = MapGeometrySquare(YX(24, 40))
+ self.map_geometry = MapGeometrySquare(YX(32, 32))
self.commands = {}
def get_thing(self, id_):
class Game(GameBase):
def __init__(self, save_file, *args, **kwargs):
+ from plomrogue.misc import Terrain
super().__init__(*args, **kwargs)
self.changed = True
self.changed_tiles = []
self.last_send_gamestate = datetime.datetime.now() -\
self.send_gamestate_interval
self.terrains = {
- '.': 'floor',
- 'X': 'wall',
- '=': 'window',
- '#': 'bed',
- 'T': 'desk',
- '8': 'cupboard',
- '[': 'glass door',
- 'o': 'sink',
- 'O': 'toilet'
+ '.': Terrain('.', 'floor'),
+ 'X': Terrain('X', 'wall', blocks_light=True, blocks_sound=True,
+ blocks_movement=True),
+ '=': Terrain('=', 'glass', blocks_sound=True, blocks_movement=True),
+ 'T': Terrain('T', 'table', blocks_movement=True),
}
if os.path.exists(self.io.save_file):
if not os.path.isfile(self.io.save_file):
self.player_char_i = 0
return self.player_chars[self.player_char_i]
+ def get_foo_blockers(self, foo):
+ foo_blockers = ''
+ for t in self.terrains.values():
+ block_attr = getattr(t, 'blocks_' + foo)
+ if block_attr:
+ foo_blockers += t.character
+ return foo_blockers
+
+ def get_sound_blockers(self):
+ return self.get_foo_blockers('sound')
+
+ def get_light_blockers(self):
+ return self.get_foo_blockers('light')
+
+ def get_movement_blockers(self):
+ return self.get_foo_blockers('movement')
+
+ def get_flatland(self):
+ for t in self.terrains.values:
+ if not t.blocks_movement:
+ return t.character
+
def save(self):
def write(f, msg):
write(f, 'TURN %s' % self.turn)
map_geometry_shape = self.get_map_geometry_shape()
write(f, 'MAP %s %s' % (map_geometry_shape, self.map_geometry.size,))
+ for terrain in self.terrains.values():
+ write(f, 'TERRAIN %s %s %s %s %s' % (quote(terrain.character),
+ quote(terrain.description),
+ int(terrain.blocks_light),
+ int(terrain.blocks_sound),
+ int(terrain.blocks_movement)))
for big_yx in [yx for yx in self.maps if self.maps[yx].modified]:
for y, line in self.maps[big_yx].lines():
write(f, 'MAP_LINE %s %5s %s' % (big_yx, y, quote(line)))