added exit button to load level screen
[tabakrolletjie.git] / tabakrolletjie / scenes / load_level.py
index 6c219a00338cf85c1c5f89b77220943c61c46afe..015a5f69bb6b8b378d2c52db1e0c104521f2c5b6 100644 (file)
@@ -5,8 +5,9 @@ import os
 import pygame.locals as pgl
 
 from .base import BaseScene
+from ..constants import SCREEN_SIZE
 from ..events import SceneChangeEvent
-from ..widgets import TextButton
+from ..widgets import TextButton, ImageButton
 from ..loader import loader
 
 
@@ -20,26 +21,38 @@ class LoadLevelScene(BaseScene):
 
     def enter(self, gamestate):
         """Construct list of stations"""
-        height = 50
-        width = 30
+        width = SCREEN_SIZE[0] / 2
+        self._title = TextButton(
+            'Select a planet:', (255, 255, 255), pos=(width, 75),
+            size=32, font='bold', centre=True)
+        height = 150
         self._buttons = []
         for station in self._list_stations():
             title = station["config"]["name"]
             pos = (width, height)
-            button = TextButton(title, (255, 255, 255), None, pos)
+            button = TextButton(title, (255, 255, 255), pos=pos, centre=True)
             button.station = station
-            if width < 400:
-                width += 350
-            else:
-                width = 30
-                height += button.get_height() + 20
+            height += button.get_height() + 20
             self._buttons.append(button)
 
+        self._tools = self.create_tools(gamestate)
+
+    def create_tools(self, gamestate):
+        tools = []
+        tools.append(ImageButton(
+            '32', 'exit.png', name='exit',
+            pos=(SCREEN_SIZE[0] - 50, SCREEN_SIZE[1] - 40)))
+        return tools
+
     def render(self, surface, gamestate):
         surface.fill((0, 128, 128))
+        self._title.render(surface)
         for button in self._buttons:
             button.render(surface)
 
+        for tool in self._tools:
+            tool.render(surface)
+
     def _get_pressed(self, ev):
         for button in self._buttons:
             if button.pressed(ev):
@@ -61,3 +74,10 @@ class LoadLevelScene(BaseScene):
             pressed = self._get_pressed(ev)
             if pressed:
                 self._do_load(pressed.station, gamestate)
+            else:
+                # Check tools
+                for tool in self._tools:
+                    if tool.pressed(ev):
+                        if tool.name == 'exit':
+                            from .menu import MenuScene
+                            SceneChangeEvent.post(scene=MenuScene())