X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Flights.py;h=27365095fe1d745f0817f89406bc71f4f67bfc3e;hb=4b40709e4dcc9c9924a93f6c4b5cfd8217c4d2af;hp=d9f2b2b660fbfddb3cb52e8278f18d7e696e6a1e;hpb=6747f859deacf27259f4bc3fefdc8b851b183f75;p=tabakrolletjie.git diff --git a/tabakrolletjie/lights.py b/tabakrolletjie/lights.py index d9f2b2b..2736509 100644 --- a/tabakrolletjie/lights.py +++ b/tabakrolletjie/lights.py @@ -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): @@ -36,6 +48,7 @@ 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: @@ -46,7 +59,14 @@ class LightManager(object): 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() @@ -237,7 +257,10 @@ 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 def toggle(self): self.colour_pos += 1