Konami code.
authorJeremy Thurgood <firxen@gmail.com>
Fri, 16 May 2014 19:53:43 +0000 (21:53 +0200)
committerJeremy Thurgood <firxen@gmail.com>
Fri, 16 May 2014 19:53:43 +0000 (21:53 +0200)
naja/constants.py
naja/options.py
naja/scenes/menu.py

index 5442988373141ab227e144fae147d5fb7518bc39..bee1ac5177ed7b38a0c94fff19c60a95b3ce8bd5 100644 (file)
@@ -91,9 +91,23 @@ KEYS = AttrDict({
     'SELECT': (pgl.K_RETURN, pgl.K_KP_ENTER),
     'QUIT': (pgl.K_ESCAPE, pgl.K_q),
     'SWITCH': (pgl.K_TAB,),
+
+    'KONAMI': (
+        pgl.K_UP, pgl.K_DOWN, pgl.K_LEFT, pgl.K_RIGHT, pgl.K_a, pgl.K_b),
 })
 
-# PALETTE
+KONAMI_CODE = [
+    pgl.K_UP,
+    pgl.K_UP,
+    pgl.K_DOWN,
+    pgl.K_DOWN,
+    pgl.K_LEFT,
+    pgl.K_RIGHT,
+    pgl.K_LEFT,
+    pgl.K_RIGHT,
+    pgl.K_b,
+    pgl.K_a,
+]
 
 PALETTE = AttrDict({
     'BLACK': (0, 0, 0),
index e280b67773b9e0703cbf9f47fa6b7bfeb9cc60a3..4c5abea84372449ce6fe57f6390962fb32fbf4b6 100644 (file)
@@ -42,6 +42,7 @@ def parse_args(args):
         if getattr(opts, k, None) is not None:
             options[k] = getattr(opts, k)
     options['save_location'] = opts.save_location
+    options['cheat_enabled'] = False
 
 
 def _get_default_save_location():
index a10d9b3aa696e50423f343271c7e1baaff8e57dc..8d0126ad99ae60beb3fa48112b281481a476ac0b 100644 (file)
@@ -4,8 +4,9 @@ Main menu scene.
 
 import pygame.locals as pgl
 
-from naja.constants import KEYS, PALETTE
+from naja.constants import KEYS, PALETTE, KONAMI_CODE
 from naja.events import SceneChangeEvent, QuitGameEvent
+from naja.options import options
 from naja.scenes.scene import Scene
 from naja.scenes.credits import CreditsScene
 from naja.scenes.game import GameScene
@@ -65,9 +66,23 @@ class MenuScene(Scene):
         quit.add_callback('click', lambda event: QuitGameEvent.post())
         selector.add(quit)
 
+        self.konami = []
+
     def scene_callback(self, scene_class):
         return lambda event: SceneChangeEvent.post(scene_class)
 
+    def handle_event(self, ev):
+        if ev.type == pgl.KEYDOWN and self.konami is not None:
+            if ev.key in KEYS.KONAMI:
+                self.konami.append(ev.key)
+                if self.konami == KONAMI_CODE:
+                    options['cheat_enabled'] = True
+                    print "Cheats enabled."
+                    self.konami = None
+                elif self.konami != KONAMI_CODE[:len(self.konami)]:
+                    self.konami = None
+        return super(MenuScene, self).handle_event(ev)
+
     def handle_scene_event(self, ev):
         if ev.type == pgl.KEYDOWN:
             if ev.key in KEYS.QUIT: