X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fevents.py;h=1d7609f5937cc61d81b89de4a0c805e7398f72b0;hb=0cef06f581d48315a59a19ac06ca1d2be14cbb4c;hp=b2cdee1e5a748e614c604af3b5913ff167db1874;hpb=1436eedb964abfa4d1c3b06813b832133812c7a5;p=naja.git diff --git a/naja/events.py b/naja/events.py index b2cdee1..1d7609f 100644 --- a/naja/events.py +++ b/naja/events.py @@ -3,26 +3,46 @@ Custom Pygame events. """ import pygame.event as pge +import pygame.locals as pgl -class NajaEvent(pge.Event): +def finish_event(handled=True, skip_invalidate=False): + if not skip_invalidate: + InvalidateTheWorld.post() + return handled + +class NajaEvent(object): TYPE = "UNKNOWN" @classmethod def post(cls, **attributes): - event = pge.Event(pge.USEREVENT, naja_event_type=cls.TYPE, + event = pge.Event(pgl.USEREVENT, naja_event_type=cls.TYPE, **attributes) pge.post(event) @classmethod def matches(cls, ev): - return ev.type == pge.USEREVENT and ev.naja_event_type == cls.TYPE + return ev.type == pgl.USEREVENT and ev.naja_event_type == cls.TYPE 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"