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()