annotate nagslang/events.py @ 666:59d28ed05f7c

pygame.mixer.Sound is too clever by half and should be shot repeatedly
author Neil Muller <drnlmuller@gmail.com>
date Sun, 08 Sep 2013 12:35:33 +0200
parents 3f79a77ef1e3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
1 """Events to post."""
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
2
20
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
3 import pygame
186
d63c19003aec Some refactoring and fixing, start of better collision handling.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
4 import pygame.locals
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
5
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
6
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7 class Event(object):
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8 TYPE = None
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
9
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
10 @classmethod
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
11 def post(cls, **data):
20
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
12 ev = pygame.event.Event(cls.TYPE, **data)
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
13 pygame.event.post(ev)
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
14
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
15 @classmethod
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
16 def matches(cls, ev):
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
17 return ev.type == cls.TYPE
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
18
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
19
9ecb1d222ee0 Screens.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
20 class QuitEvent(Event):
20
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
21 TYPE = pygame.locals.QUIT
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
22
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
23
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
24 class UserEvent(Event):
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
25 TYPE = pygame.locals.USEREVENT
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
26
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
27 @classmethod
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
28 def post(cls, **data):
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
29 super(UserEvent, cls).post(user_type=cls.__name__, **data)
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
30
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
31 @classmethod
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
32 def matches(cls, ev):
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
33 return (super(UserEvent, cls).matches(ev)
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
34 and ev.user_type == cls.__name__)
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
35
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
36
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
37 class ScreenChange(UserEvent):
347667c941de Hook up area.
Simon Cross <hodgestar@gmail.com>
parents: 18
diff changeset
38 @classmethod
180
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
39 def post(cls, new_screen, player=None):
276
3153196517fc Move protagonist to the world
Neil Muller <drnlmuller@gmail.com>
parents: 261
diff changeset
40 super(ScreenChange, cls).post(screen=new_screen)
180
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
41
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
42
440
9eee96966d88 Add Death event to reduce death code duplication
Stefano Rivera <stefano@rivera.za.net>
parents: 406
diff changeset
43 class DeathEvent(UserEvent):
9eee96966d88 Add Death event to reduce death code duplication
Stefano Rivera <stefano@rivera.za.net>
parents: 406
diff changeset
44 @classmethod
9eee96966d88 Add Death event to reduce death code duplication
Stefano Rivera <stefano@rivera.za.net>
parents: 406
diff changeset
45 def post(cls):
9eee96966d88 Add Death event to reduce death code duplication
Stefano Rivera <stefano@rivera.za.net>
parents: 406
diff changeset
46 super(DeathEvent, cls).post()
9eee96966d88 Add Death event to reduce death code duplication
Stefano Rivera <stefano@rivera.za.net>
parents: 406
diff changeset
47
9eee96966d88 Add Death event to reduce death code duplication
Stefano Rivera <stefano@rivera.za.net>
parents: 406
diff changeset
48
180
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
49 class DoorEvent(UserEvent):
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
50 @classmethod
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
51 def post(cls, destination, dest_pos):
026297a03963 Add DoorEvent and tweak ScreenChange to keep more state when the player goes through a door
Neil Muller <drnlmuller@gmail.com>
parents: 20
diff changeset
52 super(DoorEvent, cls).post(destination=destination, dest_pos=dest_pos)
520
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
53
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
54
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
55 class AddDrawableEvent(UserEvent):
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
56 '''When you are in a corner and can't return a Result'''
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
57 @classmethod
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
58 def post(cls, drawable):
3f79a77ef1e3 Ephemeral messages
Stefano Rivera <stefano@rivera.za.net>
parents: 440
diff changeset
59 super(AddDrawableEvent, cls).post(drawable=drawable)