X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=ee0d501be22258e69d287da986f8c1bf4d65e978;hb=cf8ab4843ff083bd174a30a5bb148ed3a9c531e2;hp=f066ae660f685a0a8ba05503b1c75e6b4eb25de4;hpb=34856a61dd6b52c506aafa2dfd7de9d1ab07ced7;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index f066ae6..ee0d501 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -32,6 +32,7 @@ class ThingAnimate(Thing): super().__init__(*args, **kwargs) self.next_tasks = [] self.set_task('WAIT') + self._fov = None def set_task(self, task_name, args=()): task_class = self.game.tasks[task_name] @@ -51,6 +52,7 @@ class ThingAnimate(Thing): return None def proceed(self): + self._fov = None if self.task is None: self.task = self.get_next_task() return @@ -67,6 +69,23 @@ class ThingAnimate(Thing): self.game.changed = True self.task = self.get_next_task() + @property + def fov_stencil(self): + 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) + return self._fov + + def fov_stencil_map(self, map): + visible_terrain = '' + for i in range(self.fov_stencil.size_i): + if self.fov_stencil.terrain[i] == '.': + visible_terrain += map.terrain[i] + else: + visible_terrain += ' ' + return visible_terrain + class ThingPlayer(ThingAnimate): @@ -75,4 +94,3 @@ class ThingPlayer(ThingAnimate): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.nickname = 'undefined' -