source: nagslang/events.py @ 393:8d961e05b7b6

Last change on this file since 393:8d961e05b7b6 was 393:8d961e05b7b6, checked in by Stefano Rivera <stefano@…>, 7 years ago

Use Result to handle firing

File size: 1.2 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 DoorEvent(UserEvent):
44    @classmethod
45    def post(cls, destination, dest_pos):
46        super(DoorEvent, cls).post(destination=destination, dest_pos=dest_pos)
47
48
49class EnemyDeathEvent(UserEvent):
50    @classmethod
51    def post(cls):
52        super(EnemyDeathEvent, cls).post()
53
54
55class ClawEvent(UserEvent):
56    @classmethod
57    def post(cls, source, vector, damage):
58        super(ClawEvent, cls).post(source=source, vector=vector, damage=damage)
Note: See TracBrowser for help on using the repository browser.