source: nagslang/events.py@ 363:3dd08e18580f

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

Acid attacks shoot things that look like acid

File size: 1.7 KB
RevLine 
[18]1"""Events to post."""
2
[20]3import pygame
[186]4import pygame.locals
[18]5
6
7class Event(object):
8 TYPE = None
9
10 @classmethod
11 def post(cls, **data):
[20]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]18
19
20class QuitEvent(Event):
[20]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
[180]39 def post(cls, new_screen, player=None):
[276]40 super(ScreenChange, cls).post(screen=new_screen)
[180]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)
[261]47
48
49class FireEvent(UserEvent):
50 @classmethod
[363]51 def post(cls, source, impulse, damage, bullet_type, source_collision_type):
[293]52 super(FireEvent, cls).post(source=source, impulse=impulse,
[363]53 damage=damage, bullet_type=bullet_type,
[293]54 source_collision_type=source_collision_type)
[308]55
56
57class EnemyDeathEvent(UserEvent):
58 @classmethod
59 def post(cls, position, enemy_type):
60 super(EnemyDeathEvent, cls).post(position=position,
61 enemy_type=enemy_type)
[312]62
[313]63
[312]64class ClawEvent(UserEvent):
65 @classmethod
[333]66 def post(cls, source, vector, damage):
67 super(ClawEvent, cls).post(source=source, vector=vector, damage=damage)
Note: See TracBrowser for help on using the repository browser.