Mercurial > fife-parpg
diff demos/shooter/run.py @ 446:2046a1f2f5f2
Adding the shooter demo. This is still a work in progress.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Wed, 31 Mar 2010 15:40:00 +0000 |
parents | |
children | e686b82d93d0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/demos/shooter/run.py Wed Mar 31 15:40:00 2010 +0000 @@ -0,0 +1,125 @@ +#!/usr/bin/env python + +# -*- coding: utf-8 -*- + +# #################################################################### +# Copyright (C) 2005-2009 by the FIFE team +# http://www.fifengine.de +# This file is part of FIFE. +# +# FIFE is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# #################################################################### +# This is the rio de hola client for FIFE. + +import sys, os, re, math, random, shutil + +fife_path = os.path.join('..','..','engine','python') +if os.path.isdir(fife_path) and fife_path not in sys.path: + sys.path.insert(0,fife_path) + +from fife import fife +print "Using the FIFE python module found here: ", os.path.dirname(fife.__file__) + +from fife.extensions import * +from scripts import world +from scripts.common import eventlistenerbase +from fife.extensions.basicapplication import ApplicationBase +from fife.extensions import pychan +from fife.extensions.pychan import widgets + +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,]) + + self.quit = False + + 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() + + def onCommand(self, command): + self.quit = (command.getCommandType() == fife.CMD_QUIT_GAME) + if self.quit: + command.consume() + +class Tutorial(ApplicationBase): + def __init__(self): + super(Tutorial,self).__init__() + pychan.init(self.engine, debug=False) + self.world = world.World(self.engine) + self.listener = ApplicationListener(self.engine, self.world) + self.world.load("maps/shooter_map1.xml") + + def loadSettings(self): + """ + Load the settings from a python file and load them into the engine. + Called in the ApplicationBase constructor. + """ + + engineSetting = self.engine.getSettings() + engineSetting.setDefaultFontGlyphs(" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\"") + engineSetting.setDefaultFontPath("fonts/FreeSans.ttf") + engineSetting.setDefaultFontSize(12) + engineSetting.setBitsPerPixel(16) + engineSetting.setScreenWidth(1024) + engineSetting.setScreenHeight(768) + engineSetting.setRenderBackend("OpenGL") + engineSetting.setFullScreen(0) + + try: + engineSetting.setWindowTitle("FIFE - Shooter") + except: + pass + try: + engineSetting.setImageChunkingSize(256) + except: + pass + + def initLogging(self): + """ + Initialize the LogManager. + """ + #LogModules = list() + #LogModules.append("controller") + LogModules = ["controller",] + self.log = fifelog.LogManager(self.engine, 1, 0) + if LogModules: + self.log.setVisibleModules(*LogModules) + + def createListener(self): + pass # already created in constructor + + def _pump(self): + if self.listener.quit: + self.breakRequested = True + else: + self.world.pump() + +def main(): + app = Tutorial() + app.run() + + +if __name__ == '__main__': + main()