Mercurial > fife-parpg
diff clients/rio_de_hola/run.py @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children | 214e3eb81eb2 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clients/rio_de_hola/run.py Sun Jun 29 18:44:17 2008 +0000 @@ -0,0 +1,143 @@ +#!/usr/bin/env python +# coding: utf-8 +# This is the rio de hola client for FIFE. + +import sys, os, re, math, random + +def _jp(path): + return os.path.sep.join(path.split('/')) + +_paths = ('../../engine/swigwrappers/python', '../../engine/extensions') +for p in _paths: + if p not in sys.path: + sys.path.append(_jp(p)) + +import fife, fifelog +from scripts import world, eventlistenerbase +from basicapplication import ApplicationBase +import pychan +import pychan.widgets as widgets +import settings as TDS + + +class ApplicationListener(eventlistenerbase.EventListenerBase): + def __init__(self, engine, world): + super(ApplicationListener, self).__init__(engine,regKeys=True,regCmd=True, regMouse=False, regConsole=True, regWidget=True) + self.engine = engine + self.world = world + engine.getEventManager().setNonConsumableKeys([ + fife.Key.ESCAPE, + fife.Key.F10, + fife.Key.LEFT, + fife.Key.RIGHT, + fife.Key.UP, + fife.Key.DOWN]) + + self.quit = False + self.aboutWindow = None + + self.rootpanel = pychan.loadXML('gui/rootpanel.xml') + self.rootpanel.mapEvents({ + 'quitButton' : self.onQuitButtonPress, + 'aboutButton' : self.onAboutButtonPress, + }) + self.rootpanel.show() + + def keyPressed(self, evt): + keyval = evt.getKey().getValue() + keystr = evt.getKey().getAsString().lower() + consumed = False + if keyval == fife.Key.ESCAPE: + self.quit = True + evt.consume() + elif keyval == fife.Key.F10: + self.engine.getGuiManager().getConsole().toggleShowHide() + evt.consume() + elif keystr == 'p': + self.engine.getRenderBackend().captureScreen('screenshot.png') + evt.consume() + + def onCommand(self, command): + self.quit = (command.getCommandType() == fife.CMD_QUIT_GAME) + if self.quit: + command.consume() + + def onConsoleCommand(self, command): + result = '' + if command.lower() in ('quit', 'exit'): + self.quit = True + result = 'quitting' + elif command.lower() in ( 'help', 'help()' ): + self.engine.getGuiManager().getConsole().println( open( 'misc/infotext.txt', 'r' ).read() ) + result = "-- End of help --" + else: + result = self.world.onConsoleCommand(command) + if not result: + try: + result = str(eval(command)) + except: + pass + if not result: + result = 'no result' + return result + + def onQuitButtonPress(self): + cmd = fife.Command() + cmd.setSource(None) + cmd.setCommandType(fife.CMD_QUIT_GAME) + self.engine.getEventManager().dispatchCommand(cmd) + + def onAboutButtonPress(self): + if not self.aboutWindow: + self.aboutWindow = pychan.loadXML('gui/help.xml') + self.aboutWindow.mapEvents({ 'closeButton' : self.aboutWindow.hide }) + self.aboutWindow.distributeData({ 'helpText' : open("misc/infotext.txt").read() }) + self.aboutWindow.show() + + +class IslandDemo(ApplicationBase): + def __init__(self): + super(IslandDemo,self).__init__() + pychan.init(self.engine, debug=TDS.PychanDebug) + self.world = world.World(self.engine) + self.listener = ApplicationListener(self.engine, self.world) + self.world.load(TDS.MapFile) + + self.soundmanager = self.engine.getSoundManager() + self.soundmanager.init() + + if TDS.PlaySounds: + # play track as background music + emitter = self.soundmanager.createEmitter() + id = self.engine.getSoundClipPool().addResourceFromFile('music/rio_de_hola.ogg') + emitter.setSoundClip(id) + emitter.setLooping(True) + emitter.play() + + def createListener(self): + pass # already created in constructor + + def _pump(self): + if self.listener.quit: + self.breakRequested = True + self.world.save('maps/savefile.xml') + else: + self.world.pump() + +def main(): + app = IslandDemo() + app.run() + + +if __name__ == '__main__': + if TDS.UsePsyco: + # Import Psyco if available + try: + import psyco + psyco.full() + print "Psyco acceleration in use" + except ImportError: + print "Psyco acceleration not used" + else: + print "Psyco acceleration not used" + main()