return ray_polys
+class LightManager(object):
+ """ Manages a set of lights. """
+
+ def __init__(self, space, gamestate):
+ self._space = space
+ self._lights = [
+ BaseLight.load(cfg) for cfg in gamestate.station["lights"]]
+ for light in self._lights:
+ light.add(self._space)
+
+ def render_light(self, surface):
+ for light in self._lights:
+ light.render_light(surface)
+
+ def render_fittings(self, surface):
+ for light in self._lights:
+ light.render_fitting(surface)
+
+
class BaseLight(object):
""" Common light functionality. """
subsurface.set_alpha(50)
surface.blit(subsurface, (0, 0), None)
- def render_fittings(self, surface):
+ def render_fitting(self, surface):
pygame.draw.circle(
surface, (255, 255, 0),
pymunk.pygame_util.to_pygame(self.fitting.offset, surface),
from .base import BaseScene
from ..constants import FITTINGS_CATEGORY
-from ..lights import BaseLight
+from ..lights import LightManager
from ..obstacles import BaseObstacle
from ..events import SceneChangeEvent
from ..utils import debug_timer
self._space = pymunk.Space()
self._obstacles = [
BaseObstacle.load(cfg) for cfg in gamestate.station["obstacles"]]
- self._lights = [
- BaseLight.load(cfg) for cfg in gamestate.station["lights"]]
for obs in self._obstacles:
obs.add(self._space)
- for light in self._lights:
- light.add(self._space)
+ self._lights = LightManager(self._space, gamestate)
@debug_timer("day.render")
def render(self, surface, gamestate):
surface.fill((0, 0, 155))
- for light in self._lights:
- light.render_light(surface)
+ self._lights.render_light(surface)
for obs in self._obstacles:
obs.render(surface)
- for light in self._lights:
- light.render_fittings(surface)
+ self._lights.render_fittings(surface)
def left_click(self, surfpos):
pos = pymunk.pygame_util.from_pygame(