X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=8885aa0820fc2de63ab17e2ff0ae8cfa1ea42e7c;hb=74c0ec0247f058b977996f9e1e2d696f3d2d162b;hp=a13f771dd2f7821d9d895f837c8348375b30bf0b;hpb=74d69e502d300e3a9566304426bcd9960369545b;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index a13f771..8885aa0 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -116,7 +116,7 @@ class ThingSpawner(Thing): if t != self and t.position == self.position]: return self.game.add_thing(self.child_type, self.position) - self.game.changed = True + # self.game.changed = True handled by add_thing @@ -244,6 +244,8 @@ class Thing_HatRemixer(Thing): hat.design = new_design self.sound('HAT REMIXER', 'remixing a hat …') self.game.changed = True + # FIXME: pseudo-FOV-change actually + self.game.record_fov_change(self.thing.position) @@ -369,7 +371,7 @@ class Thing_BottleDeposit(Thing): elif choice == 'Hat': msg += 'pick it up and then use "(un-)wear" on it!' self.sound('BOTTLE DEPOSITOR', msg) - self.game.changed = True + # self.game.changed = True done by game.add_thing def accept(self): self.bottle_counter += 1 @@ -394,6 +396,7 @@ class ThingAnimate(Thing): self._fov = None self._visible_terrain = None self._visible_control = None + self._seen_things = None def set_next_task(self, task_name, args=()): task_class = self.game.tasks[task_name] @@ -414,7 +417,9 @@ class ThingAnimate(Thing): # TODO: refactor with self.send_msg self.game.io.send('DEFAULT_COLORS', c_id) self.game.io.send('CHAT "You sober up."', c_id) - self.invalidate_map_view() + #self.invalidate_map_view() + # FIXME: pseudo-FOV-change actually + self.game.record_fov_change(self.thing.position) break self.game.changed = True if self.task is None: @@ -485,6 +490,13 @@ class ThingAnimate(Thing): self._visible_control = self.fov_stencil_map('control') return self._visible_control + @property + def seen_things(self): + if self._seen_things is not None: + return self._seen_things + self._seen_things = [t for t in self.game.things + if self.fov_test(*t.position)] + return self._seen_things class Thing_Player(ThingAnimate):