Mercurial > parpg-core
diff src/parpg/dialoguecontroller.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/dialoguecontroller.py Sat May 14 01:12:35 2011 -0700 @@ -0,0 +1,59 @@ +# 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 + +class DialogueController(ControllerBase): + """Controller that takes over when a dialogue is started""" + def __init__(self, + engine, + view, + model, + application): + """ + Constructor + @param engine: Instance of the active fife engine + @type engine: fife.Engine + @param view: Instance of a GameSceneView + @param type: parpg.GameSceneView + @param model: The model that has the current gamestate + @type model: parpg.GameModel + @param application: The application that created this controller + @type application: parpg.PARPGApplication + @param settings: The current settings of the application + @type settings: fife.extensions.fife_settings.Setting + """ + super(DialogueController, self).__init__(engine, + view, + model, + application) + self.dialogue = None + self.view = view + + def startTalk(self, npc): + if npc.dialogue is not None: + self.model.active_map.centerCameraOnPlayer() + npc.talk(self.model.game_state.player_character) + self.dialogue = self.view.hud.showDialogue(npc) + self.dialogue.initiateDialogue() + self.model.pause(True) + self.view.hud.enabled = False + + + def pump(self): + if self.dialogue and not self.dialogue.active: + self.application.popController() + self.model.pause(False) + self.view.hud.enabled = True +