Mercurial > touhou
comparison scripts/pytouhou @ 597:244c99c568c8
Don’t hardcode the available games and interfaces, and relocation them.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Sat, 25 Oct 2014 18:52:16 +0200 |
parents | ab131d04987d |
children | e9300aae4b24 |
comparison
equal
deleted
inserted
replaced
596:ab131d04987d | 597:244c99c568c8 |
---|---|
22 | 22 |
23 defaults = {'data': default_data, | 23 defaults = {'data': default_data, |
24 'path': '.', | 24 'path': '.', |
25 'rank': 0, | 25 'rank': 0, |
26 'character': 0, | 26 'character': 0, |
27 'game': 'EoSD', | 27 'game': 'eosd', |
28 'interface': 'EoSD', | 28 'interface': 'eosd', |
29 'port': 0, | 29 'port': 0, |
30 'backend': ['opengl', 'sdl'], | 30 'backend': ['opengl', 'sdl'], |
31 'gl-flavor': 'compatibility', | 31 'gl-flavor': 'compatibility', |
32 'gl-version': 2.1, | 32 'gl-version': 2.1, |
33 'double-buffer': None, | 33 'double-buffer': None, |
55 except ImportError: | 55 except ImportError: |
56 logger.error('GTK+ unavailable, disabling the GUI menu.') | 56 logger.error('GTK+ unavailable, disabling the GUI menu.') |
57 else: | 57 else: |
58 menu(options, args) | 58 menu(options, args) |
59 | 59 |
60 if args.game == 'EoSD': | 60 import sys |
61 from pytouhou.games.eosd import EoSDCommon as Common, EoSDGame as Game | 61 from importlib import import_module |
62 | 62 |
63 if args.interface == 'EoSD': | 63 def load_module(type_, name, items=None): |
64 from pytouhou.interfaces.eosd import EoSDInterface as Interface | 64 try: |
65 elif args.interface == 'Sample': | 65 module = import_module('pytouhou.games.%s.%s' % (name, type_)) |
66 from pytouhou.interfaces.sample import SampleInterface as Interface | 66 except ImportError: |
67 | 67 logger.critical('Module “%s” doesn’t contain %s data, aborting.', name, type_) |
68 sys.exit(1) | |
69 if items is None: | |
70 return module | |
71 return (getattr(module, item) for item in items) | |
72 | |
73 Game, Common = load_module('game', args.game, ['Game', 'Common']) | |
74 Interface = load_module('interface', args.interface).Interface | |
68 | 75 |
69 from pytouhou.lib.sdl import SDL, show_simple_message_box | 76 from pytouhou.lib.sdl import SDL, show_simple_message_box |
70 from pytouhou.ui.window import Window | 77 from pytouhou.ui.window import Window |
71 from pytouhou.resource.loader import Loader | 78 from pytouhou.resource.loader import Loader |
72 from pytouhou.ui.gamerunner import GameRunner | 79 from pytouhou.ui.gamerunner import GameRunner |
75 from pytouhou.utils.random import Random | 82 from pytouhou.utils.random import Random |
76 from pytouhou.formats.hint import Hint | 83 from pytouhou.formats.hint import Hint |
77 from pytouhou.network import Network | 84 from pytouhou.network import Network |
78 | 85 |
79 | 86 |
80 from importlib import import_module | |
81 for backend_name in args.backend: | 87 for backend_name in args.backend: |
82 if backend_name == 'opengl': | 88 if backend_name == 'opengl': |
83 options = { | 89 options = { |
84 'flavor': args.gl_flavor, | 90 'flavor': args.gl_flavor, |
85 'version': args.gl_version, | 91 'version': args.gl_version, |
144 | 150 |
145 try: | 151 try: |
146 resource_loader.scan_archives(data) | 152 resource_loader.scan_archives(data) |
147 except IOError: | 153 except IOError: |
148 show_simple_message_box(u'Some data files were not found, did you forget the -p option?') | 154 show_simple_message_box(u'Some data files were not found, did you forget the -p option?') |
149 import sys | |
150 sys.exit(1) | 155 sys.exit(1) |
151 | 156 |
152 if stage_num is None: | 157 if stage_num is None: |
153 story = True | 158 story = True |
154 stage_num = 1 | 159 stage_num = 1 |