Make chess puzzle level (Kasparov to F3) winnable.
[naja.git] / naja / events.py
index ec1b33f154d3cec2491130cc7b623cab85f5dec7..dbf7a03711fa1a4dd87a9ef15544332e4eddb948 100644 (file)
@@ -6,8 +6,13 @@ import pygame.event as pge
 import pygame.locals as pgl
 
 
-class NajaEvent(object):
+def finish_event(handled=True, skip_invalidate=False):
+    if not skip_invalidate:
+        InvalidateTheWorld.post()
+    return handled
+
 
+class NajaEvent(object):
     TYPE = "UNKNOWN"
 
     @classmethod
@@ -25,5 +30,27 @@ class SceneChangeEvent(NajaEvent):
     TYPE = "SCENE_CHANGE"
 
     @classmethod
-    def post(cls, scene):
-        super(SceneChangeEvent, cls).post(scene=scene)
+    def post(cls, scene_cls):
+        super(SceneChangeEvent, cls).post(scene_cls=scene_cls)
+
+
+class QuitGameEvent(NajaEvent):
+    TYPE = "QUIT_GAME"
+
+
+class InvalidateTheWorld(NajaEvent):
+    # This is used to signal to all the widgets that the world has changed
+    # and cached state may need to be recreated
+    TYPE = "INVALIDATE"
+
+
+class SelectEvent(NajaEvent):
+    TYPE = "SELECT"
+
+
+class LoadGameEvent(NajaEvent):
+    TYPE = "LOAD_GAME"
+
+    @classmethod
+    def post(cls, state):
+        super(LoadGameEvent, cls).post(state=state)