X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/copy_structured?a=blobdiff_plain;f=server_%2Fgame.py;h=4f31dc1fb5ff397665fa3b71143f4961d92085cb;hb=827134a13175939231b85fbc159c013e0f024e78;hp=af6c97030c1096395f742e71daae002ae5987186;hpb=59cd3d03e10e86125daed00e8d1b5576575ead1c;p=plomrogue2-experiments diff --git a/server_/game.py b/server_/game.py index af6c970..4f31dc1 100644 --- a/server_/game.py +++ b/server_/game.py @@ -19,11 +19,19 @@ def move_pos(direction, pos_yx): pos_yx[1] -= 1 +class Map(game_common.Map): + + def get_line(self, y): + width = self.size[1] + return self.terrain[y * width:(y + 1) * width] + + class World(game_common.World): def __init__(self): super().__init__() self.Thing = Thing # use local Thing class instead of game_common's + self.map_ = Map() # use extended child class self.player_id = 0 def proceed_to_next_player_turn(self): @@ -72,11 +80,11 @@ class Task: test_pos = self.thing.position[:] move_pos(direction, test_pos) if test_pos[0] < 0 or test_pos[1] < 0 or \ - test_pos[0] >= self.thing.world.map_size[0] or \ - test_pos[1] >= self.thing.world.map_size[1]: + test_pos[0] >= self.thing.world.map_.size[0] or \ + test_pos[1] >= self.thing.world.map_.size[1]: raise GameError('would move outside map bounds') - pos_i = test_pos[0] * self.thing.world.map_size[1] + test_pos[1] - map_tile = self.thing.world.terrain_map[pos_i] + pos_i = test_pos[0] * self.thing.world.map_.size[1] + test_pos[1] + map_tile = self.thing.world.map_.terrain[pos_i] if map_tile != '.': raise GameError('would move into illegal terrain') for t in self.thing.world.things: @@ -136,6 +144,9 @@ class Thing(game_common.Thing): if is_AI and self.task is None: self.decide_task() + def get_visible_map(self): + return Map(self.world.map_.size, self.world.map_.terrain) + class Commander(): @@ -166,3 +177,7 @@ class Commander(): """Send msg to all clients.""" self.send(msg) cmd_ALL.argtypes = 'string' + + def cmd_TERRAIN_LINE(self, y, terrain_line): + self.world.map_.set_line(y, terrain_line) + cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'