home · contact · privacy
Use circle-out passes for DijkstraMap, refactor with FovMap code.
[plomrogue2] / plomrogue / things.py
index a3d622a0d1f73a99be1ea29dbb95370ac1c6fe4a..950a777f0bc951defb35f0f32cefe912f1008e25 100644 (file)
@@ -1,5 +1,5 @@
 from plomrogue.errors import GameError, PlayError
-from plomrogue.mapping import YX
+from plomrogue.mapping import YX, FovMap
 from plomrogue.misc import quote
 import random
 
@@ -210,12 +210,11 @@ class Thing_Bottle(Thing):
         all_players = [t for t in self.game.things if t.type_ == 'Player']
         # TODO: refactor with ThingPlayer.prepare_multiprocessible_fov_stencil
         # and ThingPlayer.fov_test
-        fov_map_class = self.game.map_geometry.fov_map_class
         fov_radius = 12
         light_blockers = self.game.get_light_blockers()
         obstacles = [t.position for t in self.game.things if t.blocks_light]
-        fov = fov_map_class(light_blockers, obstacles, self.game.maps,
-                            self.position, fov_radius, self.game.get_map)
+        fov = FovMap(light_blockers, obstacles, self.game.maps,
+                     self.position, fov_radius, self.game.get_map)
         fov.init_terrain()
         visible_players = []
         for p in all_players:
@@ -480,12 +479,11 @@ class ThingAnimate(Thing):
             self.task = self.get_next_task()
 
     def prepare_multiprocessible_fov_stencil(self):
-        fov_map_class = self.game.map_geometry.fov_map_class
         fov_radius = 3 if self.drunk > 0 else 12
         light_blockers = self.game.get_light_blockers()
         obstacles = [t.position for t in self.game.things if t.blocks_light]
-        self._fov = fov_map_class(light_blockers, obstacles, self.game.maps,
-                                  self.position, fov_radius, self.game.get_map)
+        self._fov = FovMap(light_blockers, obstacles, self.game.maps,
+                           self.position, fov_radius, self.game.get_map)
 
     def multiprocessible_fov_stencil(self):
         self._fov.init_terrain()