Hook up some basic sound support
[erdslangetjie.git] / erdslangetjie / __main__.py
index 93b39f531918045ee60bc0e75a2d3ba8386d0ab0..362bded7dd84ffe240d2982c8e2ce918f839d0cd 100644 (file)
@@ -12,7 +12,7 @@ from kivy.clock import Clock
 from kivy.config import Config
 
 from erdslangetjie.level import LevelList
-from erdslangetjie.data import load_image
+from erdslangetjie.data import load_image, load_sound
 from erdslangetjie.player import ThePlayer, Nemesis
 
 
@@ -42,8 +42,10 @@ class GameWindow(RelativeLayout):
 
         self.mouse_move = False
 
+        self.caught = load_sound('sounds/caught.ogg')
+
         self.player = ThePlayer()
-        self.nemesis = Nemesis()
+        self.nemesis = Nemesis(self.app.config)
         if not self.level_obj.enter_pos:
             raise RuntimeError('No entry point')
         self.player_tile = None
@@ -248,6 +250,8 @@ class GameWindow(RelativeLayout):
             return
         elif self.check_caught():
             # Caught
+            if self.app.config.getdefault('bane', 'sound', '0') != '0':
+                self.caught.play()
             self.reset_level()
             app = self.app
             self.app = None
@@ -343,8 +347,40 @@ class GameApp(App):
         self.levels = LevelList()
         self.game = None
 
+    def build_config(self, config):
+        config.setdefaults('bane', {
+            'start_level': 'levels/level1.txt',
+            'sound': 'True'
+            })
+
+    def build_settings(self, settings):
+        config_json = """[
+            { "type": "title",
+              "title": "Bane's Befuddlement"
+            },
+
+            { "type": "options",
+              "title": "Start Level",
+              "desc": "Level to start at",
+              "section": "bane",
+              "key": "start_level",
+              "options": ["%s"] },
+
+            { "type": "bool",
+              "title": "Sound",
+              "desc": "Enable sound",
+              "section": "bane",
+              "key": "sound"
+             }
+             ]""" % '", "'.join(self.levels.get_level_names())
+        settings.add_json_panel("Bane's Befuddlement",
+                self.config, data=config_json)
+
     def build(self):
         root = ScrollView(size_hint=(None, None))
+        level_name = self.config.getdefault('bane', 'start_level', None)
+        if level_name:
+            self.levels.set_level_to(level_name)
         return root
 
     def on_start(self):