X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fevents.py;h=dbf7a03711fa1a4dd87a9ef15544332e4eddb948;hb=a1c561e26fae79ce8a9570c9404975a8a0367d65;hp=01df79c162a34b5c652374847296f1623b082fa6;hpb=da7b5b8cfedca73f510a85275a5c9155b07c2cf9;p=naja.git diff --git a/naja/events.py b/naja/events.py index 01df79c..dbf7a03 100644 --- a/naja/events.py +++ b/naja/events.py @@ -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,13 +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): - super(QuitGameEvent, cls).post() + def post(cls, state): + super(LoadGameEvent, cls).post(state=state)