diff gamelib/engine.py @ 532:0667189a5973

New load level dialog.
author Simon Cross <hodgestar@gmail.com>
date Fri, 27 Nov 2009 21:28:20 +0000
parents 399bb3cb4761
children c23e2bd07247
line wrap: on
line diff
--- a/gamelib/engine.py	Fri Nov 27 21:18:18 2009 +0000
+++ b/gamelib/engine.py	Fri Nov 27 21:28:20 2009 +0000
@@ -9,7 +9,6 @@
 import constants
 import mainmenu
 import helpscreen
-import loadlevel
 import level
 from misc import check_exit
 
@@ -20,14 +19,13 @@
         self.level = level.Level(level_name)
         self._open_window = None
         self.gameboard = None
-        self.level_loader = None
 
     def tick(self):
         """Tic toc."""
         pygame.time.wait(10)
 
-    def load_new_level(self):
-        self.level = self.level_loader.cur_level
+    def load_new_level(self, new_level):
+        self.level = new_level
 
     def open_window(self, window):
         """Open a widget as the main window."""
@@ -42,9 +40,9 @@
                 self.level)
         self.open_window(self.gameboard.get_top_widget())
 
-    def switch_gameboard(self, gameboard):
+    def switch_gameboard(self, new_gameboard):
         """Switch over to a new gameboard."""
-        self.gameboard = gameboard
+        self.gameboard = new_gameboard
         self.gameboard.disp = self.main_app
         self.gameboard.create_display()
         self.open_window(self.gameboard.get_top_widget())
@@ -52,7 +50,6 @@
     def set_main_menu(self):
         """Open the main menu"""
         self.scoreboard = gameover.ScoreTable(self.level)
-        self.level_loader = None
         main_menu = mainmenu.make_main_menu(self.level)
         self.open_window(main_menu)
 
@@ -61,11 +58,6 @@
         help_screen = helpscreen.make_help_screen(self.level)
         self.open_window(help_screen)
 
-    def set_level_screen(self):
-        """Open the Load Level screen"""
-        level_screen, self.level_loader = loadlevel.make_load_screen(self.level)
-        self.open_window(level_screen)
-
     def create_game_over(self):
         """Create and open the Game Over window"""
         level = self.gameboard.level
@@ -93,8 +85,6 @@
             return DayState(self.game)
         elif events_equal(e, GO_HELP_SCREEN):
             return HelpScreenState(self.game)
-        elif events_equal(e, GO_LEVEL_SCREEN):
-            return LevelScreenState(self.game)
         elif e.type is KEYDOWN:
             if e.key == K_ESCAPE:
                 return Quit(self.game)
@@ -103,6 +93,9 @@
                 return DayState(self.game)
             elif e.key == K_i:
                 return HelpScreenState(self.game)
+        elif e.type is DO_LOAD_LEVEL:
+            self.game.load_new_level(e.level)
+            return
         elif e.type is DO_LOAD_SAVEGAME:
             self.game.switch_gameboard(e.gameboard)
             e.gameboard.skip_next_start_day()
@@ -142,32 +135,6 @@
         pygame.display.update(update)
 
 
-class LevelScreenState(State):
-    def init(self):
-        sound.stop_background_music()
-        self.game.set_level_screen()
-
-    def event(self, e):
-        if e.type is KEYDOWN and e.key == K_ESCAPE:
-            return MainMenuState(self.game)
-        elif events_equal(e, GO_MAIN_MENU):
-            return MainMenuState(self.game)
-        elif events_equal(e, DO_LOAD_LEVEL):
-            self.game.load_new_level()
-            return MainMenuState(self.game)
-        elif e.type is not QUIT:
-            self.game.main_app.event(e)
-
-    def paint(self, screen):
-        screen.fill((0,0,0))
-        self.game.main_app.paint(screen)
-        pygame.display.flip()
-
-    def update(self, screen):
-        update = self.game.main_app.update(screen)
-        pygame.display.update(update)
-
-
 class DayState(State):
     def init(self):
         """Add some chickens to the farm"""
@@ -329,12 +296,11 @@
 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_LEVEL_SCREEN = pygame.event.Event(USEREVENT, name="GO_LEVEL_SCREEN")
-DO_LOAD_LEVEL = pygame.event.Event(USEREVENT, name="DO_LEVEL_SCREEN")
 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")
 DO_LOAD_SAVEGAME = USEREVENT + 2
+DO_LOAD_LEVEL = USEREVENT + 3
 QUIT = pygame.event.Event(QUIT)
 
 # Due to the way pgu's loop timing works, these will only get proceesed