Mercurial > parpg-core
diff src/parpg/main.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 | d60f1dab8469 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/parpg/main.py Sat May 14 01:12:35 2011 -0700 @@ -0,0 +1,96 @@ +#!/usr/bin/env python2 +# This program 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. + +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + +#TODO: Modularize this script +import sys +import logging + +from optparse import OptionParser + +usage = ('usage: %prog [options] settings_path [system_path user_path]\n\n' + 'The settings_path argument is mandatory and is the directory in \n' + 'which your system.cfg file is located. Optionally, you may \n' + 'specify where data files are located (system_path), and where \n' + 'the user settings and data files should be saved to (user_path)\n\n' + 'Example: python %prog .') + +parser = OptionParser(description='PARPG Launcher Script', usage=usage) +parser.add_option('-f', '--logfile', + help='Name of log file to save to') +parser.add_option('-l', '--loglevel', default='critical', + help='desired output level for log file') +parser.add_option('-m', '--module', + help='location of the parpg module') +opts, args = parser.parse_args() + +if not args: + parser.print_help() + sys.exit(1) + + +# initialize settings +if opts.module: + print('added ' + opts.module) + sys.path.insert(0, opts.module) + +from parpg.settings import Settings + +settings = Settings(*args) + +levels = {'debug': logging.DEBUG, + 'info': logging.INFO, + 'warning': logging.WARNING, + 'error': logging.ERROR, + 'critical': logging.CRITICAL} + +#TODO: setup formating +logging.basicConfig(filename=opts.logfile, level=levels[opts.loglevel]) +logger = logging.getLogger('parpg') + +try: + sys.path.insert(0, settings.parpg.FifePath) +except AttributeError: + logger.warning('[parpg] section has no FifePath option') + +try: + from fife import fife +except ImportError: + logger.critical("Could not import fife module. Please install fife or add " + "'FifePath' to the [parpg] section of your settings file") + sys.exit(1) + +from parpg.application import PARPGApplication +from parpg.common import utils + +# enable psyco if available and in settings file +try: + import psyco + psyco_available = True +except ImportError: + logger.warning('Psyco Acceleration unavailable') + psyco_available = False + +if settings.fife.UsePsyco: + if psyco_available: + psyco.full() + logger.info('Psyco Acceleration enabled') + else: + logger.warning('Please install psyco before attempting to use it' + 'Psyco Acceleration disabled') +else: + logger.info('Psycho Acceleration disabled') + +# run the game +app = PARPGApplication(settings) +app.run()