Mercurial > fife-parpg
diff demos/rpg/scripts/gamecontroller.py @ 512:6ddb1eb9dfa6
Added the Scene which loads the town map. It is no longer a black screen demo.
Changed the keys to be more common. Screenshot is now the print screen key. The console is now the backtick key. Screenshots are now date/time stamped as well.
Removed the scripts/common directory as I have removed the dependency on the EventListenerBase class.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 21 May 2010 17:31:08 +0000 |
parents | cd959b05a262 |
children | edf5c0cf52f3 |
line wrap: on
line diff
--- a/demos/rpg/scripts/gamecontroller.py Fri May 21 13:48:49 2010 +0000 +++ b/demos/rpg/scripts/gamecontroller.py Fri May 21 17:31:08 2010 +0000 @@ -28,30 +28,117 @@ from fife import fife +from scripts.scene import Scene from scripts.guicontroller import GUIController +class GameListener(fife.IKeyListener, fife.IMouseListener): + def __init__(self, gamecontroller): + self._engine = gamecontroller.engine + self._gamecontroller = gamecontroller + self._settings = gamecontroller.settings + self._eventmanager = self._engine.getEventManager() + + fife.IMouseListener.__init__(self) + self._eventmanager.addMouseListener(self) + + fife.IKeyListener.__init__(self) + self._eventmanager.addKeyListener(self) + + self._attached = False + + def attach(self): + if not self._attached: + self._eventmanager.addMouseListenerFront(self) + self._eventmanager.addKeyListenerFront(self) + self._attached = True + + def detach(self): + if self._attached: + self._eventmanager.removeMouseListener(self) + self._eventmanager.removeKeyListener(self) + self._attached = False + + def mousePressed(self, event): + pass + def mouseReleased(self, event): + pass + def mouseEntered(self, event): + pass + def mouseExited(self, event): + pass + def mouseClicked(self, event): + pass + def mouseWheelMovedUp(self, event): + pass + def mouseWheelMovedDown(self, event): + pass + def mouseMoved(self, event): + pass + def mouseDragged(self, event): + pass + def keyPressed(self, event): + keyval = event.getKey().getValue() + keystr = event.getKey().getAsString().lower() + if keyval == fife.Key.ESCAPE: + self.detach() + self._gamecontroller.guicontroller.showMainMenu() + event.consume() + + def keyReleased(self, event): + pass + class GameController(object): def __init__(self, application, engine, settings): self._application = application self._engine = engine self._settings = settings - self._guicontroller = GUIController(self, self._engine, self._settings) + self._guicontroller = GUIController(self) + + self._listener = GameListener(self) self._guicontroller.showMainMenu() + + self._scene = None def onConsoleCommand(self, command): """ - Might be useful if you want to have the game parse a command + Might be useful if you want to have the game parse a command. + Not sure if I am going to keep this or not. """ result = "" return result def newGame(self): - pass + self._guicontroller.hideMainMenu() + + if self._scene: + self._scene.destroyScene() + self._scene = None + + self._scene = Scene(self) + self._scene.createScene(self._settings.get("RPG", "TownMapFile", "maps/town.xml")) + + #start listening to events + self._listener.attach() def quit(self): self._application.requestQuit() def pump(self): - pass + if self._scene: + self._scene.updateScene() + + + def _getGUIController(self): + return self._guicontroller + + def _getEngine(self): + return self._engine + + def _getSettings(self): + return self._settings + + guicontroller = property(_getGUIController) + engine = property(_getEngine) + settings = property(_getSettings)