Don't allow placing lights on turnips, obstacles or other lights.
[tabakrolletjie.git] / tabakrolletjie / lights.py
index bae4df333482aac86024710984bda873fcbc5231..27365095fe1d745f0817f89406bc71f4f67bfc3e 100644 (file)
@@ -11,7 +11,9 @@ import pygame.locals as pgl
 import pygame.rect
 import pygame.transform
 
-from .constants import LIGHT_CATEGORY, FITTINGS_CATEGORY, COLOURS
+from .constants import (
+    LIGHT_CATEGORY, FITTINGS_CATEGORY, OBSTACLE_CATEGORY, TURNIP_CATEGORY,
+    COLOURS)
 from .rays import RayPolyManager
 from .utils import DetailedTimer
 from .loader import loader
@@ -29,6 +31,16 @@ FITTINGS_FILTER = pymunk.ShapeFilter(
 
 # Just match lights, nothing else
 LIT_BY_FILTER = pymunk.ShapeFilter(mask=LIGHT_CATEGORY)
+SPACE_FOR_LIGHT_FILTER = pymunk.ShapeFilter(
+    mask=FITTINGS_CATEGORY | OBSTACLE_CATEGORY | TURNIP_CATEGORY)
+
+
+def check_space_for_light(space, pos, max_distance):
+    point_info = space.point_query_nearest(
+        pos, max_distance, SPACE_FOR_LIGHT_FILTER)
+    if point_info is not None:
+        return True
+    return False
 
 
 class LightManager(object):
@@ -245,7 +257,7 @@ class BaseLight(object):
         return 5 * area * self.intensity / 6400  # 80x80 unit area
 
     def base_damage(self):
-        return 5 * self.intensity
+        return 10 * self.intensity
 
     def off(self):
         self.on = False