Allow for centring text buttons and display levels centred.
authorSimon Cross <hodgestar@gmail.com>
Sat, 10 Sep 2016 21:26:03 +0000 (23:26 +0200)
committerSimon Cross <hodgestar@gmail.com>
Sat, 10 Sep 2016 21:26:03 +0000 (23:26 +0200)
tabakrolletjie/scenes/load_level.py
tabakrolletjie/widgets.py

index 6c219a00338cf85c1c5f89b77220943c61c46afe..7f3223fefd7139eac18053cdc720deb5c83f8e17 100644 (file)
@@ -5,6 +5,7 @@ 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 ..loader import loader
@@ -20,23 +21,23 @@ 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)
 
     def render(self, surface, gamestate):
         surface.fill((0, 128, 128))
+        self._title.render(surface)
         for button in self._buttons:
             button.render(surface)
 
index c1bbc941c38a924153af2875e9af59449b1b776f..043c22e3680d46e4b6438be954f22c2b19c94b22 100644 (file)
@@ -69,9 +69,14 @@ class SpacerButton(Button):
 
 class TextButton(Button):
 
-    def __init__(self, text, colour, name=None, pos=None, padding=10):
-        font = loader.load_font(FONTS['sans'], size=24)
+    def __init__(
+            self, text, colour, name=None, pos=None, padding=10, size=24,
+            font='sans', centre=False):
+        font = loader.load_font(FONTS[font], size=size)
         self._text = font.render(text, True, colour)
+        if centre:
+            w, h = self._text.get_size()
+            pos = pos[0] - (w / 2), pos[1] - (h / 2)
         self._disabled_text = self._text.copy()
         Multiply(colour=(80, 80, 80)).apply(self._disabled_text)
         super(TextButton, self).__init__(self._text.get_size(), name,