[game-data-packager] 07/14: launcher: add support for multiple engines
Simon McVittie
smcv at debian.org
Fri Oct 14 00:09:50 UTC 2016
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to branch master
in repository game-data-packager.
commit 1f05aea8e8fc2c751732ba0bfa0b4ff981eeff86
Author: Simon McVittie <smcv at debian.org>
Date: Wed Oct 12 11:11:36 2016 +0100
launcher: add support for multiple engines
---
runtime/launcher.py | 37 +++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/runtime/launcher.py b/runtime/launcher.py
index 9d3445d..724385a 100755
--- a/runtime/launcher.py
+++ b/runtime/launcher.py
@@ -178,9 +178,12 @@ class Launcher:
if name.endswith('.py'):
name = name[:-3]
- parser = argparse.ArgumentParser()
+ parser = argparse.ArgumentParser(
+ description="game-data-packager's game launcher")
parser.add_argument('--id', default=name,
- help='identity of launched game (default: %s)' % name)
+ help='identity of launched game (default: from argv[0])')
+ parser.add_argument('--engine', default=None,
+ help='use the specified game engine, if supported')
parser.add_argument('arguments', nargs='*',
help='arguments for the launched game')
self.args = parser.parse_args(argv)
@@ -212,6 +215,15 @@ class Launcher:
'${XDG_DATA_HOME}/' + self.id))
logger.debug('Dot directory: %s', self.dot_directory)
+ if 'engine' in self.data:
+ self.engines = [self.data['engine']]
+ elif 'engines' in self.data:
+ self.engines = self.data['engines']
+ else:
+ self.engines = []
+
+ self.engine = None
+
self.base_directories = list(map(expand,
self.data.get('base_directories',
['/usr/lib/' + self.id])))
@@ -261,6 +273,24 @@ class Launcher:
return True
def main(self):
+ if self.engines:
+ for e in self.engines:
+ e = expand(e)
+ if shutil.which(e) is not None:
+ self.engine = e
+ break
+ else:
+ gui = Gui(self)
+ gui.text_view.get_buffer().set_text(
+ '\n'.join(
+ [self.load_text('missing-engine.txt',
+ 'Game engine missing, tried:')] +
+ [expand(e) for e in engines]))
+ gui.window.show_all()
+ gui.check_box.hide()
+ Gtk.main()
+ sys.exit(72) # EX_OSFILE
+
for p in self.base_directories:
logger.debug('Searching: %s' % p)
@@ -476,6 +506,9 @@ class Launcher:
self.argv = [expand(a, base_directory=base_directory)
for a in self.argv]
+ if self.engine is not None:
+ self.argv.insert(0, self.engine)
+
self.flush()
environ = os.environ.copy()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git
More information about the Pkg-games-commits
mailing list