Refactor
[erdslangetjie.git] / erdslangetjie / __main__.py
index db6669e83ff966a75ef6bcb18cdbdd7e01404831..74a0c33a2509ac939988175ea4de3624d6a033f2 100644 (file)
@@ -1,21 +1,26 @@
-import pygame
-
-from erdslangetjie.constants import TILE_SIZE
+from erdslangetjie.constants import TILE_SIZE, LEFT, RIGHT, UP, DOWN
 
 from kivy.app import App
 from kivy.uix.widget import Widget
 from kivy.uix.relativelayout import RelativeLayout
 from kivy.uix.scrollview import ScrollView
 from kivy.uix.label import Label
+from kivy.uix.popup import Popup
 from kivy.graphics import Color, Rectangle
 from kivy.utils import platform
 from kivy.clock import Clock
+from kivy.config import Config
 
 from erdslangetjie.level import LevelList
 from erdslangetjie.data import load_image
 from erdslangetjie.player import ThePlayer, Nemesis
 
 
+if platform() != 'android':
+    Config.set('graphics', 'width', '1026')
+    Config.set('graphics', 'height', '760')
+
+
 class GameWindow(RelativeLayout):
 
     def __init__(self, level_list, app):
@@ -158,15 +163,15 @@ class GameWindow(RelativeLayout):
         self.keyboard.unbind(on_key_down=self._on_key_down)
 
     def _on_key_down(self, keyboard, keycode, text, modifiers):
-        # FIXME - likely portablity issues
         direction = None
-        if keycode[0] == pygame.K_UP:
+        letter = keycode[1].lower()
+        if letter in UP:
             direction = (0, 1)
-        elif keycode[0] == pygame.K_DOWN:
+        elif letter in DOWN:
             direction = (0, -1)
-        elif keycode[0] == pygame.K_LEFT:
+        elif letter in LEFT:
             direction = (-1, 0)
-        elif keycode[0] == pygame.K_RIGHT:
+        elif letter in RIGHT:
             direction = (1, 0)
         if direction:
             self.do_move(direction)
@@ -199,7 +204,8 @@ class GameWindow(RelativeLayout):
     def reset_level(self):
         Clock.unschedule(self.timed_move)
         self.timer_set = False
-        self.remove_widget(self.nemesis_tile)
+        if self.nemesis_tile:
+            self.remove_widget(self.nemesis_tile)
         self.nemesis.reset_pos()
         if self.level_obj:
             self.level_obj.load_tiles()
@@ -300,8 +306,8 @@ class GameApp(App):
     title = "Peter's thread snake"
 
     def __init__(self):
-        self.levels = LevelList()
         super(GameApp, self).__init__()
+        self.levels = LevelList()
 
     def build(self):
         root = ScrollView(size_hint=(None, None))
@@ -313,6 +319,12 @@ class GameApp(App):
         if platform() == 'android':
             window.fullscreen = True
         self.root.size = window.size
+        errors = self.levels.get_errors()
+        if errors:
+            popup = Popup(title='Levels excluded',
+                    content=Label(text='\n'.join(errors)),
+                    size_hint=(.5, .5))
+            popup.open()
         self.make_intro()
 
     def make_intro(self):