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
# 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):
def __init__(self, space, gamestate):
self._space = space
+ self._battery_dead = False
self._lights = [
BaseLight.load(cfg) for cfg in gamestate.station["lights"]]
for light in self._lights:
self._lights.append(light)
light.add(self._space)
+ def battery_dead(self):
+ self._battery_dead = True
+ for light in self._lights:
+ light.off()
+
def toggle_nearest(self, *args, **kw):
+ if self._battery_dead:
+ return
light = self.nearest(*args, **kw)
if light:
light.toggle()
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
def toggle(self):
self.colour_pos += 1