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