Mercurial > rinkhals
comparison gamelib/engine.py @ 336:82a18615a0ab
Ask 'Are you sure?'
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 05 Sep 2009 22:30:17 +0000 |
parents | 9bf0e701a36e |
children | 6baf8b5beb5c |
comparison
equal
deleted
inserted
replaced
335:efafe71dd261 | 336:82a18615a0ab |
---|---|
7 import gameover | 7 import gameover |
8 import sound | 8 import sound |
9 import constants | 9 import constants |
10 import mainmenu | 10 import mainmenu |
11 import helpscreen | 11 import helpscreen |
12 from misc import check_exit | |
12 | 13 |
13 class Engine(Game): | 14 class Engine(Game): |
14 def __init__(self, main_app): | 15 def __init__(self, main_app): |
15 self.main_app = main_app | 16 self.main_app = main_app |
16 self.clock = pygame.time.Clock() | 17 self.clock = pygame.time.Clock() |
126 pygame.time.set_timer(ANIM_ID, SLOW_ANIM_SPEED) | 127 pygame.time.set_timer(ANIM_ID, SLOW_ANIM_SPEED) |
127 self.game.gameboard.advance_day() | 128 self.game.gameboard.advance_day() |
128 self.game.gameboard.clear_foxes() | 129 self.game.gameboard.clear_foxes() |
129 sound.background_music("daytime.ogg") | 130 sound.background_music("daytime.ogg") |
130 self.game.gameboard.hatch_eggs() | 131 self.game.gameboard.hatch_eggs() |
131 | 132 self.dialog = None |
132 def event(self, e): | 133 |
134 def event(self, e): | |
135 if self.dialog and self.dialog.running: | |
136 if self.dialog.event(e): | |
137 return | |
138 elif self.dialog: | |
139 if self.dialog.do_quit: | |
140 self.dialog = None | |
141 self.game.gameboard.reset_states() | |
142 return GameOver(self.game) | |
143 self.dialog=None | |
144 return | |
133 if events_equal(e, START_NIGHT): | 145 if events_equal(e, START_NIGHT): |
134 self.game.gameboard.reset_states() | 146 self.game.gameboard.reset_states() |
135 return NightState(self.game) | 147 return NightState(self.game) |
136 elif e.type is KEYDOWN and e.key == K_ESCAPE: | 148 elif e.type is KEYDOWN and e.key == K_ESCAPE: |
137 self.game.gameboard.reset_states() | 149 self.dialog = check_exit() |
138 return GameOver(self.game) | |
139 elif e.type is ANIM_ID: | 150 elif e.type is ANIM_ID: |
140 self.game.gameboard.run_animations() | 151 self.game.gameboard.run_animations() |
141 elif e.type is KEYDOWN and e.key == K_n: | 152 elif e.type is KEYDOWN and e.key == K_n: |
142 return pygame.event.post(START_NIGHT) | 153 return pygame.event.post(START_NIGHT) |
143 elif events_equal(e, GO_MAIN_MENU): | 154 elif events_equal(e, GO_MAIN_MENU): |
186 else: | 197 else: |
187 self.cycle_time = SLOW_ANIM_SPEED | 198 self.cycle_time = SLOW_ANIM_SPEED |
188 pygame.time.set_timer(ANIM_ID, self.cycle_time) | 199 pygame.time.set_timer(ANIM_ID, self.cycle_time) |
189 pygame.time.set_timer(MOVE_FOX_ID, 4*self.cycle_time) | 200 pygame.time.set_timer(MOVE_FOX_ID, 4*self.cycle_time) |
190 elif e.type is KEYDOWN and e.key == K_ESCAPE: | 201 elif e.type is KEYDOWN and e.key == K_ESCAPE: |
191 self.game.gameboard.set_cursor() | 202 if check_dialog(self.game.main_app): |
192 return GameOver(self.game) | 203 self.game.gameboard.reset_states() |
204 return GameOver(self.game) | |
193 elif e.type is ANIM_ID: | 205 elif e.type is ANIM_ID: |
194 self.game.gameboard.run_animations() | 206 self.game.gameboard.run_animations() |
195 elif e.type is MOVE_FOX_ID: | 207 elif e.type is MOVE_FOX_ID: |
196 # Timer aren't nessecairly ordered, so we make sure | 208 # Timer aren't nessecairly ordered, so we make sure |
197 # we don't get a ANIM event until at least cycle after this | 209 # we don't get a ANIM event until at least cycle after this |