source: nagslang/events.py

Last change on this file was 520:3f79a77ef1e3, checked in by Stefano Rivera <stefano@…>, 8 years ago

Ephemeral messages

File size: 1.3 KB
Line 
1"""Events to post."""
2
3import pygame
4import pygame.locals
5
6
7class Event(object):
8 TYPE = None
9
10 @classmethod
11 def post(cls, **data):
12 ev = pygame.event.Event(cls.TYPE, **data)
13 pygame.event.post(ev)
14
15 @classmethod
16 def matches(cls, ev):
17 return ev.type == cls.TYPE
18
19
20class QuitEvent(Event):
21 TYPE = pygame.locals.QUIT
22
23
24class UserEvent(Event):
25 TYPE = pygame.locals.USEREVENT
26
27 @classmethod
28 def post(cls, **data):
29 super(UserEvent, cls).post(user_type=cls.__name__, **data)
30
31 @classmethod
32 def matches(cls, ev):
33 return (super(UserEvent, cls).matches(ev)
34 and ev.user_type == cls.__name__)
35
36
37class ScreenChange(UserEvent):
38 @classmethod
39 def post(cls, new_screen, player=None):
40 super(ScreenChange, cls).post(screen=new_screen)
41
42
43class DeathEvent(UserEvent):
44 @classmethod
45 def post(cls):
46 super(DeathEvent, cls).post()
47
48
49class DoorEvent(UserEvent):
50 @classmethod
51 def post(cls, destination, dest_pos):
52 super(DoorEvent, cls).post(destination=destination, dest_pos=dest_pos)
53
54
55class AddDrawableEvent(UserEvent):
56 '''When you are in a corner and can't return a Result'''
57 @classmethod
58 def post(cls, drawable):
59 super(AddDrawableEvent, cls).post(drawable=drawable)
Note: See TracBrowser for help on using the repository browser.