X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=0edf8fbed42a83363ad43d0012a4a1f74cd37685;hb=7385c037c0acb54c06fc7919b5b85548c09f8d65;hp=da5cf7771c5698c0ce5c487737dc1ea26902362c;hpb=3795deac19be4816d54829ed2e728e78f57f86de;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index da5cf77..0edf8fb 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -6,7 +6,7 @@ from plomrogue.mapping import YX class ThingBase: type_ = '?' - def __init__(self, game, id_=0, position=(YX(0,0))): + def __init__(self, game, id_=0, position=(YX(0, 0), YX(0, 0))): self.game = game if id_ == 0: self.id_ = self.game.new_thing_id() @@ -40,11 +40,6 @@ class Thing_Item(Thing): -class Thing_Furniture(Thing): - symbol_hint = 'h' - - - class ThingAnimate(Thing): blocking = True @@ -81,8 +76,7 @@ class ThingAnimate(Thing): self.task.check() except GameError as e: self.task = None - raise GameError - return + raise e self.task.todo -= 1 if self.task.todo <= 0: self._last_task_result = self.task.do() @@ -94,22 +88,24 @@ class ThingAnimate(Thing): if self._fov: return self._fov fov_map_class = self.game.map_geometry.fov_map_class - self._fov = fov_map_class(self.game.map, self.position) + self._fov = fov_map_class(self.game.maps, self.position, 12, + self.game.get_map) return self._fov - def fov_test(self, yx): - test_position = yx - self.fov_stencil.offset + def fov_test(self, big_yx, little_yx): + test_position = self.fov_stencil.target_yx(big_yx, little_yx) if self.fov_stencil.inside(test_position): if self.fov_stencil[test_position] == '.': return True return False - def fov_stencil_map(self, map): + def fov_stencil_map(self, map_type='normal'): visible_terrain = '' for yx in self.fov_stencil: if self.fov_stencil[yx] == '.': - corrected_yx = yx + self.fov_stencil.offset - visible_terrain += map[corrected_yx] + big_yx, little_yx = self.fov_stencil.source_yxyx(yx) + map_ = self.game.get_map(big_yx, map_type) + visible_terrain += map_[little_yx] else: visible_terrain += ' ' return visible_terrain