Change back to using a point query for damage. Add constant for mould size
authorNeil <neil@dip.sun.ac.za>
Sat, 10 Sep 2016 17:46:24 +0000 (19:46 +0200)
committerNeil <neil@dip.sun.ac.za>
Sat, 10 Sep 2016 17:46:24 +0000 (19:46 +0200)
tabakrolletjie/enemies.py

index 9524617ffeef3037cab592d9bdc02885e2091af6..8294f4d426502fe149c5078fc9626c93c7995594 100644 (file)
@@ -35,6 +35,8 @@ HEAL_FACTOR = 1
 
 MOULD_STAGES = [15, 25]
 
+MOULD_RADIUS = 16
+
 
 def calc_colour_transform(resistances):
     fr = fg = fb = 0
@@ -65,7 +67,7 @@ class Mould(pymunk.Body):
     def __init__(self, gamestate, space, pos, resistances, transform):
         super(Mould, self).__init__(0, 0, pymunk.Body.STATIC)
         self.position = pos
-        self._shape = pymunk.Circle(self, 16)
+        self._shape = pymunk.Circle(self, MOULD_RADIUS)
         space.add(self, self._shape)
         self._shape.filter = MOULD_FILTER
         self._age = 0
@@ -81,7 +83,8 @@ class Mould(pymunk.Body):
            our position is the centre of the image."""
         # The odd sign combination is because of the pymunk / pygame
         # transform, but we do it this way to exploit Vec2d math magic
-        return pymunk.pygame_util.to_pygame(self.position + (-16, 16), surface)
+        return pymunk.pygame_util.to_pygame(
+            self.position + (-MOULD_RADIUS, MOULD_RADIUS), surface)
 
     def get_image(self):
         if not self._img:
@@ -163,7 +166,8 @@ class Mould(pymunk.Body):
         else:
             # Check for turnips we can eat
             # Note that we can only eat a tick after we spawn
-            query = space.point_query(self.position, 16, EAT_TURNIP_FILTER)
+            query = space.point_query(self.position, MOULD_RADIUS,
+                                      EAT_TURNIP_FILTER)
             if query:
                 query[0].shape.body.turnip.eaten = True
         return refresh
@@ -217,7 +221,7 @@ class Boyd(object):
             if mould.tick(gamestate, space, self._moulds):
                 redraw = True
             # Check for damage
-            lit_by = lights.light_query(mould._shape)
+            lit_by = lights.lit_by(mould.position, MOULD_RADIUS)
             for light in lit_by:
                 self._seen_colours.add(light.colour)
                 if mould.damage(light, space, self._moulds):