Force main app to respect the configured window size
[erdslangetjie.git] / erdslangetjie / __main__.py
index 148236b4315c31961da160fdc27143eec42de68d..95fdf1be5d3423a6e41fc20c63dd412af89e7d16 100644 (file)
@@ -5,8 +5,8 @@ import pygame
 kivy.require('1.6.0')
 
 from kivy.app import App
-from kivy.core.window import Window
 from kivy.uix.widget import Widget
+from kivy.logger import Logger, LoggerHistory
 from kivy.uix.relativelayout import RelativeLayout
 from kivy.uix.scrollview import ScrollView
 from kivy.graphics import Color, Rectangle
@@ -14,8 +14,7 @@ from kivy.utils import platform
 
 from erdslangetjie.level import LevelList
 from erdslangetjie.player import ThePlayer, Nemesis
-
-TILE_SIZE = 48
+from erdslangetjie.constants import TILE_SIZE, QUIET
 
 
 class GameWindow(RelativeLayout):
@@ -48,6 +47,9 @@ class GameWindow(RelativeLayout):
         self.player.pos = self.level_obj.enter_pos
         if platform() != 'android':
             # Very hack'ish
+            # We need to delay this import until after the window creation by
+            # the app, else our size config doesn't work
+            from kivy.core.window import Window
             self.keyboard = Window.request_keyboard(self._closed, self)
             self.keyboard.bind(on_key_down=self._on_key_down)
 
@@ -224,24 +226,37 @@ class GameWindow(RelativeLayout):
 
 class GameApp(App):
 
+    title = "Peter's thread snake"
+
     def __init__(self):
         self.levels = LevelList()
         super(GameApp, self).__init__()
 
     def build(self):
-        root = ScrollView(size=(960, 640), size_hint=(None, None))
-        game = GameWindow(self.levels, root)
+        root = ScrollView(size_hint=(None, None))
+        return root
+
+    def on_start(self):
+        from kivy.base import EventLoop
+        window = EventLoop.window
+        if platform() == 'android':
+            window.fullscreen = True
+        self.root.size = window.size
+        game = GameWindow(self.levels, self.root)
         game.build()
-        root.add_widget(game)
+        self.root.add_widget(game)
         # Ensure the player is visible
-        root.scroll_x = 0
-        root.scroll_y = 0
+        self.root.scroll_x = 0
+        self.root.scroll_y = 0
         game.draw_player()
         game.draw_nemesis()
-        return root
 
 
 def main():
     """ Erdslangetjie, a maze game of eluding nemesis
     """
+    if QUIET:
+        for hdlr in Logger.handlers[:]:
+            if not isinstance(hdlr, LoggerHistory):
+                Logger.removeHandler(hdlr)
     GameApp().run()