comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:1fd2201f5c36
1 # This file is part of PARPG.
2
3 # PARPG is free software: you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation, either version 3 of the License, or
6 # (at your option) any later version.
7
8 # PARPG is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
12
13 # You should have received a copy of the GNU General Public License
14 # along with PARPG. If not, see <http://www.gnu.org/licenses/
15
16 from controllerbase import ControllerBase
17 from charactercreationview import CharacterCreationView
18 from charactercreationcontroller import CharacterCreationController
19 from gamescenecontroller import GameSceneController
20 from gamesceneview import GameSceneView
21
22 #For debugging/code analysis
23 if False:
24 from parpg.mainmenuview import MainMenuView
25 from fife import fife
26 from gamemodel import GameModel
27 from parpg import PARPGApplication
28
29 class MainMenuController(ControllerBase):
30 """Controller for handling the main menu state"""
31
32 def __init__(self, engine, view, model, application):
33 """Constructor"""
34 super(MainMenuController, self).__init__(engine, view, model,
35 application)
36
37 #this can be helpful for IDEs code analysis
38 if False:
39 assert(isinstance(self.engine, fife.Engine))
40 assert(isinstance(self.view, MainMenuView))
41 assert(isinstance(self.model, GameModel))
42 assert(isinstance(self.application, PARPGApplication))
43 assert(isinstance(self.event_manager, fife.EventManager))
44
45 self.view.quit_callback = self.quitGame
46 self.view.new_game_callback = self.newGame
47 self.view.initalizeMainMenu(self.newGame, self.loadGame, self.quitGame)
48 self.view.showMenu()
49 self.resetMouseCursor()
50
51 def newGame(self):
52 """Start a new game and switch to the character creation controller."""
53 view = CharacterCreationView(self.engine, self.model,
54 self.model.settings)
55 controller = CharacterCreationController(self.engine, view, self.model,
56 self.application)
57 self.application.view = view
58 self.application.switchController(controller)
59
60 # def newGame(self):
61 # """Starts a new game"""
62 # view = GameSceneView(self.engine,
63 # self.model)
64 # controller = GameSceneController(self.engine,
65 # view,
66 # self.model,
67 # self.application)
68 # self.application.view = view
69 # self.application.switchController(controller)
70 # start_map = self.model.settings.get("PARPG", "Map")
71 # self.model.changeMap(start_map)
72
73 def loadGame(self, *args, **kwargs):
74 """Loads the game state
75 @return: None"""
76
77 view = GameSceneView(self.engine,
78 self.model)
79 controller = GameSceneController(self.engine,
80 view,
81 self.model,
82 self.application)
83 self.application.view = view
84 self.application.switchController(controller)
85 controller.loadGame(*args, **kwargs)
86
87 def onStop(self):
88 """Called when the controller is removed from the list"""
89 self.view.hideMenu()
90
91
92 def quitGame(self):
93 """Quits the game
94 @return: None"""
95 self.application.listener.quitGame()