X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;ds=sidebyside;f=plomrogue%2Fthings.py;h=8885aa0820fc2de63ab17e2ff0ae8cfa1ea42e7c;hb=7fc75c298c5e54159bc86d5841ee9feab2fc64d0;hp=0195a623f88e2426f214d56b1ce80b5bad887ac4;hpb=01b6b1da2a94fe26d1ad44348afb133edcd2a273;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index 0195a62..8885aa0 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -89,13 +89,16 @@ class Thing(ThingBase): url_limits) lowered_nick = lower_msg_by_volume(name, volume, largest_audible_distance) + symbol = '' + if listener.fov_test(self.position[0], self.position[1]): + self.game.io.send('CHATFACE %s' % self.id_, c_id) + if self.type_ == 'Player' and hasattr(self, 'thing_char'): + symbol = '/@' + self.thing_char self.game.io.send('CHAT ' + - quote('(volume: %.2f) %s: %s' % (volume, - lowered_nick, - lowered_msg)), + quote('vol:%.f%s %s%s: %s' % (volume * 100, '%', + lowered_nick, symbol, + lowered_msg)), c_id) - if listener.fov_test(self.position[0], self.position[1]): - self.game.io.send('CHATFACE %s' % self.id_) @@ -113,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 @@ -241,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) @@ -366,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 @@ -391,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] @@ -411,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: @@ -482,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):