- for t in [t for t in self.things
- if player.fov_stencil[t.position] == '.']:
- self.io.send('THING %s %s %s' % (t.position, t.type_, t.id_), c_id)
- if hasattr(t, 'nickname'):
- self.io.send('THING_NAME %s %s' % (t.id_,
- quote(t.nickname)), c_id)
- for yx in [yx for yx in self.portals
- if player.fov_stencil[yx] == '.']:
- self.io.send('PORTAL %s %s' % (yx, quote(self.portals[yx])), c_id)
+ for t in [t for t in self.things if player.fov_test(*t.position)]:
+ target_yx = player.fov_stencil.target_yx(*t.position)
+ self.io.send('THING %s %s %s' % (target_yx, t.type_, t.id_), c_id)
+ if hasattr(t, 'name'):
+ self.io.send('THING_NAME %s %s' % (t.id_, quote(t.name)), c_id)
+ if hasattr(t, 'player_char'):
+ self.io.send('THING_CHAR %s %s' % (t.id_,
+ quote(t.player_char)), c_id)
+ for big_yx in self.portals:
+ for little_yx in [little_yx for little_yx in self.portals[big_yx]
+ if player.fov_test(big_yx, little_yx)]:
+ target_yx = player.fov_stencil.target_yx(big_yx, little_yx)
+ portal = self.portals[big_yx][little_yx]
+ self.io.send('PORTAL %s %s' % (target_yx, quote(portal)), c_id)
+ for big_yx in self.annotations:
+ for little_yx in [little_yx for little_yx in self.annotations[big_yx]
+ if player.fov_test(big_yx, little_yx)]:
+ target_yx = player.fov_stencil.target_yx(big_yx, little_yx)
+ annotation = self.annotations[big_yx][little_yx]
+ self.io.send('ANNOTATION_HINT %s' % (target_yx,), c_id)