view src/parpg/mainmenucontroller.py @ 20:07ff8cf8a0f1

Fixed WAF install paths issue on Windows. * Reorganized the waf_paths.py WAF tool so that install paths are correctly set on Windows. * Added ordereddict.py for use by the waf_paths.py WAF tool on python versions less than 2.7. * Renamed the waf script to waf.py so that Windows users get the benefits of the .py file extension. * Fixed a bug where the FifePath entry in parpg.cfg was not getting set to the default python site-package path. * Fixed a bug in the Windows parpg.bat launcher where quotation marks (") were screwing up the PYTHONPATH variable.
author M. George Hansen <technopolitica@gmail.com>
date Wed, 15 Jun 2011 13:21:25 -1000
parents 1fd2201f5c36
children 94cb5843dcbb
line wrap: on
line source

#   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()