X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=plomrogue%2Fgame.py;h=78598143628df6057efc41e4e216af0f211de4d6;hb=abdf5480bbe91b559dbf213b162cd23d25de033f;hp=e1c92cf21cd477080ccff2b3cffba660a200b7dc;hpb=74c0ec0247f058b977996f9e1e2d696f3d2d162b;p=plomrogue2 diff --git a/plomrogue/game.py b/plomrogue/game.py index e1c92cf..7859814 100755 --- a/plomrogue/game.py +++ b/plomrogue/game.py @@ -12,7 +12,7 @@ class GameBase: 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_): @@ -115,6 +115,7 @@ import os 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 = [] @@ -137,15 +138,11 @@ class Game(GameBase): 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): @@ -431,6 +428,28 @@ class Game(GameBase): 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): @@ -440,6 +459,12 @@ class Game(GameBase): 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)))