options = AttrDict()
+def load_game(parser, slot_num):
+ '''
+ Load a save game and store it in parser.values.game_state.
+ '''
+ from naja.scenes.load_save import SaveGameSlot
+ if not (0 <= slot_num <= 7):
+ parser.error("--load accepts a slot number from 0 to 7.")
+ state = SaveGameSlot(slot_num).load()
+ if state is None:
+ raise parser.error(
+ "Could not load game from slot %s" % (slot_num,))
+ options.game_state = state
+
+
+def load_deck(parser, deck):
+ '''
+ Create a new game for a specific deck and store it in
+ parser.values.game_state.
+ '''
+ from naja.gamestate import GameState
+ try:
+ state = GameState.new(deck=deck, max_health=4, wins_required=4)
+ except:
+ if options.debug:
+ raise
+ parser.error("Could not load deck %r" % (deck,))
+ options.game_state = state
+
+
def parse_args(args):
'''
Parse arguments and store them in the options dictionary.
parser.add_option("--save-location", default=_get_default_save_location(),
dest="save_location", help="Saved game location")
+ parser.add_option('--deck', default=None,
+ help='Start with a new game for a specific deck'
+ ' (bypassing the menu).')
+
+ parser.add_option('--load', default=None, type=int,
+ help='Start with a specific save game loaded'
+ ' (bypassing the menu). Slot values are 0-7.')
+
+ if options.debug:
+ parser.add_option('--initial-bits', type=int,
+ help='Initial player bits')
+ parser.add_option('--cheat-enabled', default=False,
+ action='store_true',
+ help='For those too lazy to type the KONAMI code')
+
opts, _ = parser.parse_args(args)
for k in DEFAULTS:
if getattr(opts, k, None) is not None:
options[k] = getattr(opts, k)
- options['save_location'] = opts.save_location
+
+ if opts.load is not None:
+ load_game(parser, opts.load)
+ if opts.deck is not None:
+ load_deck(parser, opts.deck)
def _get_default_save_location():