Merge branch 'master' of ctpug.org.za:tabakrolletjie
authorSimon Cross <hodgestar@gmail.com>
Sat, 10 Sep 2016 14:49:55 +0000 (16:49 +0200)
committerSimon Cross <hodgestar@gmail.com>
Sat, 10 Sep 2016 14:49:55 +0000 (16:49 +0200)
tabakrolletjie/battery.py [new file with mode: 0644]
tabakrolletjie/scenes/day.py

diff --git a/tabakrolletjie/battery.py b/tabakrolletjie/battery.py
new file mode 100644 (file)
index 0000000..c543698
--- /dev/null
@@ -0,0 +1,36 @@
+""" Keep 'em charged and they'll never let you down. """
+
+
+class BatteryManager(object):
+    """ Manages a battery. """
+
+    def __init__(self, gamestate):
+        self._state = gamestate.station["battery"]
+
+    @property
+    def current(self):
+        return self._state["current"]
+
+    @current.setter
+    def current(self, value):
+        self._state["current"] = min(max(0, value), self.max)
+
+    @property
+    def max(self):
+        return self._state["max"]
+
+    @max.setter
+    def max(self, value):
+        self._state["max"] = max(0, value)
+
+    @property
+    def recharge(self):
+        return self._state["recharge"]
+
+    @recharge.setter
+    def recharge(self, value):
+        self._state["recharge"] = max(0, value)
+
+    def apply_recharge(self):
+        self.current += self.recharge
+        print self.current
index 17690e254da011e93429cf9c213291a3f83bdf3b..017675432ce71828a012c7e015cd1f10c6125978 100644 (file)
@@ -10,6 +10,7 @@ import pymunk
 import pymunk.pygame_util
 
 from .base import BaseScene
+from ..battery import BatteryManager
 from ..lights import LightManager, light_fitting_by_type
 from ..obstacles import ObstacleManager
 from ..events import SceneChangeEvent
@@ -17,7 +18,7 @@ from ..utils import debug_timer, shadowed_text
 from ..loader import loader
 from ..transforms import Overlay, Alpha, ColourWedges
 
-from ..constants import SCREEN_SIZE, FONTS
+from ..constants import SCREEN_SIZE, FONTS, DEBUG
 from ..widgets import ImageButton
 from ..turnip import Turnip, TurnipInvalidPosition
 
@@ -31,6 +32,7 @@ class DayScene(BaseScene):
         self._toolbar_font = loader.load_font(FONTS['sans'], size=20)
         self._obstacles = ObstacleManager(self._space, gamestate)
         self._lights = LightManager(self._space, gamestate)
+        self._battery = BatteryManager(gamestate)
         self._turnips = []
         self._seeds = gamestate.seeds
         self._harvested = gamestate.harvested
@@ -81,7 +83,7 @@ class DayScene(BaseScene):
         tools = []
 
         x, y, step = 50, SCREEN_SIZE[1] - 40, 50
-        
+
         tools.append(ImageButton('32', 'seed.png', name='seed', pos=(x, y)))
         x += step
 
@@ -97,7 +99,8 @@ class DayScene(BaseScene):
             '32', 'default_cursor.png', name='reset tool', pos=(x, y)))
 
         tools.append(ImageButton(
-            '32', 'night.png', name='start night', pos=(SCREEN_SIZE[0] - 100, y)))
+            '32', 'night.png', name='start night',
+            pos=(SCREEN_SIZE[0] - 100, y)))
         tools.append(ImageButton(
             '32', 'exit.png', name='exit', pos=(SCREEN_SIZE[0] - 50, y)))
         return tools
@@ -109,6 +112,11 @@ class DayScene(BaseScene):
         turnip_data = [turnip.serialize() for turnip in self._turnips]
         gamestate.turnips = turnip_data
 
+    def end_day(self, gamestate):
+        self._battery.apply_recharge()
+        from .night import NightScene
+        SceneChangeEvent.post(scene=NightScene())
+
     @debug_timer("day.render")
     def render(self, surface, gamestate):
         surface.blit(self._soil, (0, 0))
@@ -203,8 +211,7 @@ class DayScene(BaseScene):
                 from .menu import MenuScene
                 SceneChangeEvent.post(scene=MenuScene())
             elif ev.key == pgl.K_e:
-                from .night import NightScene
-                SceneChangeEvent.post(scene=NightScene())
+                self.end_day(gamestate)
             elif ev.key == pgl.K_SPACE and DEBUG:
                 self._paused = not self._paused
         elif ev.type == pgl.MOUSEBUTTONDOWN:
@@ -218,8 +225,7 @@ class DayScene(BaseScene):
                             self._tool = None
                             self._clear_light_toolbar()
                         elif tool.name == 'start night':
-                            from .night import NightScene
-                            SceneChangeEvent.post(scene=NightScene())
+                            self.end_day(gamestate)
                         elif tool.name == 'exit':
                             from .menu import MenuScene
                             SceneChangeEvent.post(scene=MenuScene())