view nagslang/events.py @ 59:b412704a6737

Start of game object stuff.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 01 Sep 2013 18:48:55 +0200
parents 347667c941de
children 026297a03963
line wrap: on
line source

"""Events to post."""

import pygame


class Event(object):
    TYPE = None

    @classmethod
    def post(cls, **data):
        ev = pygame.event.Event(cls.TYPE, **data)
        pygame.event.post(ev)

    @classmethod
    def matches(cls, ev):
        return ev.type == cls.TYPE


class QuitEvent(Event):
    TYPE = pygame.locals.QUIT


class UserEvent(Event):
    TYPE = pygame.locals.USEREVENT

    @classmethod
    def post(cls, **data):
        super(UserEvent, cls).post(user_type=cls.__name__, **data)

    @classmethod
    def matches(cls, ev):
        return (super(UserEvent, cls).matches(ev)
                and ev.user_type == cls.__name__)


class ScreenChange(UserEvent):
    @classmethod
    def post(cls, new_screen):
        super(ScreenChange, cls).post(screen=new_screen)