Add some useful forcing options
[naja.git] / naja / scenes / game.py
index 2b6bbf2481dd8065a0e0392df12bf1c8876fb075..82e08dbe3a7c6cabd332316a8c7fe0c689fbbdb6 100644 (file)
@@ -3,13 +3,18 @@ Gameboard scene.
 """
 
 import pygame.locals as pgl
+import random
 
-from naja.events import SceneChangeEvent
+from naja.constants import KEYS, TUNES
+from naja.events import SceneChangeEvent, finish_event
+from naja.options import options
 from naja.scenes.scene import Scene
+from naja.sound import sound
 from naja.widgets.board import BoardWidget
 from naja.widgets.player_bits import PlayerBitsWidget
 from naja.widgets.game_bits import GameBitsWidget
 from naja.widgets.info_area import InfoAreaWidget
+from naja.widgets.robot import RobotWidget
 
 
 class GameScene(Scene):
@@ -17,15 +22,44 @@ class GameScene(Scene):
     Gameboard scene.
     """
 
-    def __init__(self, state):
+    def __init__(self, state, play_sound=True):
         super(GameScene, self).__init__(state)
-        self.add(PlayerBitsWidget((0, 0)))
-        self.add(BoardWidget((0, 60), state))
-        self.add(GameBitsWidget((0, 540)))
-        self.add(InfoAreaWidget((480, 0)))
+        self.add(PlayerBitsWidget((0, 0), state))
+        info = InfoAreaWidget((480, 0), state)
+        self.board_widget = BoardWidget((0, 60), state, info)
+        self.add(self.board_widget)
+        self.add(GameBitsWidget((0, 540), state))
+        self.add(info)
+        self.add(RobotWidget(state))
+        if play_sound:
+            sound.play_sound('startup.ogg')
+            background_track = random.choice(TUNES)
+            sound.play_music(background_track, 0.25)
 
     def handle_scene_event(self, ev):
         from naja.scenes.menu import MenuScene
-        if ev.type == pgl.KEYUP and ev.key in (pgl.K_q, pgl.K_ESCAPE):
-            SceneChangeEvent.post(MenuScene)
-            return
+        if ev.type == pgl.KEYDOWN:
+            if ev.key in KEYS.QUIT:
+                sound.stop()
+                SceneChangeEvent.post(MenuScene)
+                return
+            if options.cheat_enabled:
+                if ev.key == pgl.K_0:
+                    self.state.player.bits.toggle_bit(0)
+                elif ev.key == pgl.K_1:
+                    self.state.player.bits.toggle_bit(1)
+                elif ev.key == pgl.K_2:
+                    self.state.player.bits.toggle_bit(2)
+                elif ev.key == pgl.K_3:
+                    self.state.player.bits.toggle_bit(3)
+                elif ev.key == pgl.K_4:
+                    self.state.player.bits.toggle_bit(4)
+                elif ev.key == pgl.K_5:
+                    self.state.player.bits.toggle_bit(5)
+                elif ev.key == pgl.K_6:
+                    self.state.player.bits.toggle_bit(6)
+                elif ev.key == pgl.K_7:
+                    self.state.player.bits.toggle_bit(7)
+                elif ev.key == pgl.K_EQUALS:
+                    self.state.gameboard.gain_health()
+                return finish_event()