Mercurial > rinkhals
diff gamelib/engine.py @ 548:27c09c58d89d
Remove gameboard and dialog event flow hacks.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 28 Nov 2009 11:25:56 +0000 |
parents | 450de9dfa106 |
children | 296c73dcd286 |
line wrap: on
line diff
--- a/gamelib/engine.py Sat Nov 28 11:12:45 2009 +0000 +++ b/gamelib/engine.py Sat Nov 28 11:25:56 2009 +0000 @@ -1,7 +1,7 @@ """Game engine and states.""" from pgu.engine import Game, State, Quit import pygame -from pygame.locals import USEREVENT, QUIT, KEYDOWN, K_ESCAPE, K_n, K_d, K_s, K_i +from pygame.locals import USEREVENT, QUIT, KEYDOWN, K_ESCAPE, K_s, K_i import gameboard import gameover @@ -10,7 +10,6 @@ import mainmenu import helpscreen import level -from misc import check_exit class Engine(Game): def __init__(self, main_app, level_name): @@ -141,33 +140,20 @@ # disable timer pygame.time.set_timer(MOVE_FOX_ID, 0) sound.background_music("daytime.ogg") - self.dialog = None def event(self, e): - if self.dialog and self.dialog.running: - if self.dialog.event(e): - return - elif self.dialog: - if self.dialog.do_quit: - self.dialog = None - self.game.gameboard.reset_states() - return GameOver(self.game) - self.dialog = None - return if events_equal(e, START_NIGHT): self.game.gameboard.reset_states() return NightState(self.game) - elif e.type is KEYDOWN and e.key == K_ESCAPE: - self.dialog = check_exit() - elif e.type is KEYDOWN and e.key == K_n: - return pygame.event.post(START_NIGHT) + elif events_equal(e, GO_GAME_OVER): + return GameOver(self.game) elif events_equal(e, GO_MAIN_MENU): return MainMenuState(self.game) elif e.type is DO_LOAD_SAVEGAME: self.game.switch_gameboard(e.gameboard) return - elif e.type is not QUIT: - self.game.main_app.event(e) + + self.game.main_app.event(e) def paint(self, screen): self.game.main_app.paint(screen) @@ -198,29 +184,19 @@ self.dialog = None def event(self, e): - if self.dialog and self.dialog.running: - if self.dialog.event(e): - return - elif self.dialog: - if self.dialog.do_quit: - self.dialog = None - self.game.gameboard.reset_states() - return GameOver(self.game) - self.dialog=None - return if events_equal(e, START_DAY): if self.game.gameboard.level.is_game_over(self.game.gameboard): return GameOver(self.game) return DayState(self.game) - elif (e.type is KEYDOWN and e.key == K_d) or \ - events_equal(e, FAST_FORWARD): + elif events_equal(e, GO_GAME_OVER): + return GameOver(self.game) + elif events_equal(e, FAST_FORWARD): if self.cycle_time > FAST__SPEED: self.cycle_time = FAST__SPEED else: self.cycle_time = SLOW__SPEED pygame.time.set_timer(MOVE_FOX_ID, self.cycle_time) - elif e.type is KEYDOWN and e.key == K_ESCAPE: - self.dialog = check_exit() + return elif e.type is MOVE_FOX_ID: # ensure no timers trigger while we're running pygame.time.set_timer(MOVE_FOX_ID, 0) @@ -240,8 +216,9 @@ if time_left <= 0: time_left = self.cycle_time pygame.time.set_timer(MOVE_FOX_ID, time_left) - elif e.type is not QUIT: - self.game.main_app.event(e) + return + + self.game.main_app.event(e) def loop(self): self.game.gameboard.loop() @@ -290,6 +267,7 @@ START_NIGHT = pygame.event.Event(USEREVENT, name="START_NIGHT") GO_MAIN_MENU = pygame.event.Event(USEREVENT, name="GO_MAIN_MENU") GO_HELP_SCREEN = pygame.event.Event(USEREVENT, name="GO_HELP_SCREEN") +GO_GAME_OVER = pygame.event.Event(USEREVENT, name="GO_GAME_OVER") FAST_FORWARD = pygame.event.Event(USEREVENT, name="FAST_FORWARD") MOVE_FOX_ID = USEREVENT + 1 MOVE_FOXES = pygame.event.Event(MOVE_FOX_ID, name="MOVE_FOXES")