Mercurial > skaapsteker
comparison skaapsteker/engine.py @ 479:fb9258d66137
New Main Menu
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 09 Apr 2011 21:59:59 +0200 |
parents | 95527fd29872 |
children | 0675f390653c |
comparison
equal
deleted
inserted
replaced
478:77cfc17ac949 | 479:fb9258d66137 |
---|---|
40 while True: | 40 while True: |
41 events = pygame.event.get() | 41 events = pygame.event.get() |
42 for ev in events: | 42 for ev in events: |
43 if ev.type is QUIT: | 43 if ev.type is QUIT: |
44 return | 44 return |
45 if NewGameEvent.matches(ev): | |
46 self.game_state.new_game() | |
47 fox = self.game_state.world.fox | |
48 ChangeScene.post((ev.scene_type, '.'.join([fox.level, fox.doorway]))) | |
49 if ChangeScene.matches(ev): | 45 if ChangeScene.matches(ev): |
50 next_scene = ev.next_scene | 46 next_scene = ev.next_scene |
51 if not isinstance(next_scene, Scene): | 47 if not isinstance(next_scene, Scene): |
52 next_scene = next_scene[0](self.game_state, self.soundsystem, *(next_scene[1:])) | 48 next_scene = next_scene[0](self.game_state, self.soundsystem, *(next_scene[1:])) |
53 self.change_scene(next_scene) | 49 self.change_scene(next_scene) |
103 | 99 |
104 @classmethod | 100 @classmethod |
105 def matches(cls, ev): | 101 def matches(cls, ev): |
106 return ev.type is USEREVENT and ev.utype == cls.utype | 102 return ev.type is USEREVENT and ev.utype == cls.utype |
107 | 103 |
108 class NewGameEvent(UserEvent): | |
109 | |
110 utype = "NEW_GAME_EVENT" | |
111 | |
112 @classmethod | |
113 def post(cls, scene_type): | |
114 super(NewGameEvent, cls).post(scene_type=scene_type) | |
115 | 104 |
116 class ChangeScene(UserEvent): | 105 class ChangeScene(UserEvent): |
117 | 106 |
118 utype = "CHANGE_SCENE" | 107 utype = "CHANGE_SCENE" |
119 | 108 |