X-Git-Url: https://plomlompom.com/repos/berlin_corona.txt?a=blobdiff_plain;f=plomrogue%2Fthings.py;h=8885aa0820fc2de63ab17e2ff0ae8cfa1ea42e7c;hb=74c0ec0247f058b977996f9e1e2d696f3d2d162b;hp=09cf7f0b8bac496e17c2e980494afd369ce09dcb;hpb=871008b21686f5e4b462568ff4520ea299dd496f;p=plomrogue2 diff --git a/plomrogue/things.py b/plomrogue/things.py index 09cf7f0..8885aa0 100644 --- a/plomrogue/things.py +++ b/plomrogue/things.py @@ -7,6 +7,7 @@ import random class ThingBase: type_ = '?' + carrying = False def __init__(self, game, id_=0, position=(YX(0, 0), YX(0, 0))): self.game = game @@ -24,7 +25,6 @@ class Thing(ThingBase): protection = '.' commandable = False carried = False - carrying = False def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -89,10 +89,15 @@ 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) @@ -111,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 @@ -239,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) @@ -364,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 @@ -389,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] @@ -409,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: @@ -480,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):