From: Simon Cross <hodgestar@gmail.com>
Date: Sat, 10 Sep 2016 17:50:23 +0000 (+0200)
Subject: Lights off when battery dies.
X-Git-Tag: tabakrolletjie-v1.0.0~62
X-Git-Url: https://git.ctpug.org.za/?a=commitdiff_plain;h=686cf81109e5dad17af9526c34d82b3bb598c14f;p=tabakrolletjie.git

Lights off when battery dies.
---

diff --git a/tabakrolletjie/lights.py b/tabakrolletjie/lights.py
index d9f2b2b..bae4df3 100644
--- a/tabakrolletjie/lights.py
+++ b/tabakrolletjie/lights.py
@@ -36,6 +36,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 +47,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()
@@ -239,6 +247,9 @@ class BaseLight(object):
     def base_damage(self):
         return 5 * self.intensity
 
+    def off(self):
+        self.on = False
+
     def toggle(self):
         self.colour_pos += 1
         if self.colour_pos >= len(self.colour_cycle):
diff --git a/tabakrolletjie/scenes/night.py b/tabakrolletjie/scenes/night.py
index 692ecf1..115630a 100644
--- a/tabakrolletjie/scenes/night.py
+++ b/tabakrolletjie/scenes/night.py
@@ -29,6 +29,7 @@ class NightScene(BaseScene):
         self._obstacles = ObstacleManager(self._space, gamestate)
         self._lights = LightManager(self._space, gamestate)
         self._battery = BatteryManager(gamestate)
+        self.check_battery()
         self._infobar = InfoBar("day", battery=self._battery, scene=self)
         self._mould = Boyd(gamestate, self._space)
         self._turnips = []
@@ -147,6 +148,10 @@ class NightScene(BaseScene):
             (shadowed_text("Press any key to continue", FONTS["sans"], 24),
              (350, 240)))
 
+    def check_battery(self):
+        if self._battery.current == 0:
+            self._lights.battery_dead()
+
     @debug_timer("night.tick")
     def tick(self, gamestate):
         if self._do_ticks and not self._paused:
@@ -156,6 +161,7 @@ class NightScene(BaseScene):
                 if self._total_ticks % 60 == 0:
                     self._battery.current -= int(
                         self._lights.total_power_usage())
+                    self.check_battery()
                 self._total_ticks += 1
             else:
                 self._end_night()