diff src/parpg/mainmenucontroller.py @ 0:1fd2201f5c36

Initial commit of parpg-core.
author M. George Hansen <technopolitica@gmail.com>
date Sat, 14 May 2011 01:12:35 -0700
parents
children 94cb5843dcbb
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/parpg/mainmenucontroller.py	Sat May 14 01:12:35 2011 -0700
@@ -0,0 +1,95 @@
+#   This file is part of PARPG.
+
+#   PARPG is free software: you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation, either version 3 of the License, or
+#   (at your option) any later version.
+
+#   PARPG is distributed in the hope that it will be useful,
+#   but WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#   GNU General Public License for more details.
+
+#   You should have received a copy of the GNU General Public License
+#   along with PARPG.  If not, see <http://www.gnu.org/licenses/
+
+from controllerbase import ControllerBase
+from charactercreationview import CharacterCreationView
+from charactercreationcontroller import CharacterCreationController
+from gamescenecontroller import GameSceneController
+from gamesceneview import GameSceneView
+
+#For debugging/code analysis
+if False:
+    from parpg.mainmenuview import MainMenuView
+    from fife import fife
+    from gamemodel import GameModel
+    from parpg import PARPGApplication
+
+class MainMenuController(ControllerBase):
+    """Controller for handling the main menu state"""
+
+    def __init__(self, engine, view, model, application):
+        """Constructor"""
+        super(MainMenuController, self).__init__(engine, view, model, 
+                                                 application)
+    
+        #this can be helpful for IDEs code analysis
+        if False:
+            assert(isinstance(self.engine, fife.Engine))
+            assert(isinstance(self.view, MainMenuView))
+            assert(isinstance(self.model, GameModel))
+            assert(isinstance(self.application, PARPGApplication))
+            assert(isinstance(self.event_manager, fife.EventManager))
+        
+        self.view.quit_callback = self.quitGame
+        self.view.new_game_callback = self.newGame
+        self.view.initalizeMainMenu(self.newGame, self.loadGame, self.quitGame)
+        self.view.showMenu()
+        self.resetMouseCursor()
+    
+    def newGame(self):
+        """Start a new game and switch to the character creation controller."""
+        view = CharacterCreationView(self.engine, self.model,
+                                     self.model.settings)
+        controller = CharacterCreationController(self.engine, view, self.model,
+                                                 self.application)
+        self.application.view = view
+        self.application.switchController(controller)
+    
+#    def newGame(self):
+#        """Starts a new game"""
+#        view = GameSceneView(self.engine,
+#                             self.model)
+#        controller = GameSceneController(self.engine,
+#                                         view,
+#                                         self.model,
+#                                         self.application)        
+#        self.application.view = view
+#        self.application.switchController(controller)
+#        start_map = self.model.settings.get("PARPG", "Map")
+#        self.model.changeMap(start_map)
+
+    def loadGame(self, *args, **kwargs):
+        """Loads the game state
+           @return: None"""
+
+        view = GameSceneView(self.engine,
+                             self.model)
+        controller = GameSceneController(self.engine,
+                                         view,
+                                         self.model,
+                                         self.application)        
+        self.application.view = view
+        self.application.switchController(controller)
+        controller.loadGame(*args, **kwargs)
+        
+    def onStop(self):
+        """Called when the controller is removed from the list"""
+        self.view.hideMenu()
+                                         
+    
+    def quitGame(self):
+        """Quits the game
+           @return: None"""
+        self.application.listener.quitGame()