From b8b0dcd343aab16ff2e75a16cf23c6c51cf36153 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Sat, 17 May 2014 18:59:06 +0200 Subject: [PATCH] Allow overriding defaults from puzzles --- naja/gameboard.py | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/naja/gameboard.py b/naja/gameboard.py index fcad070..d50ebde 100644 --- a/naja/gameboard.py +++ b/naja/gameboard.py @@ -30,20 +30,47 @@ class GameBoard(object): self.replacement_params = state.get('replacement_params', None) @classmethod - def new_game(cls, deck, - initial_bits=PLAYER_DEFAULTS.INITIAL_BITS, - initial_pos=PLAYER_DEFAULTS.INITIAL_POS, - max_health=PLAYER_DEFAULTS.MAX_HEALTH, - wins_required=PLAYER_DEFAULTS.WINS_REQUIRED): + def new_game(cls, deck, initial_bits=None, initial_pos=None, + max_health=None, wins_required=None): + + defaults = { + 'initial_bits': PLAYER_DEFAULTS.INITIAL_BITS, + 'initial_pos': PLAYER_DEFAULTS.INITIAL_POS, + 'max_health': PLAYER_DEFAULTS.MAX_HEALTH, + 'wins_required': PLAYER_DEFAULTS.WINS_REQUIRED, + } + + puzzle = deck.get('puzzle', False) + + if puzzle: + puzzle_defaults = deck.get('defaults', {}) + for k, v in puzzle_defaults.iteritems(): + if isinstance(v, list): + puzzle_defaults[k] = [int(x) for x in v] + else: + puzzle_defaults[k] = int(v) + defaults.update(puzzle_defaults) + + if initial_bits is None: + initial_bits = defaults['initial_bits'] + if initial_pos is None: + initial_pos = defaults['initial_pos'] + if max_health is None: + max_health = defaults['max_health'] + if wins_required is None: + wins_required = defaults['wins_required'] + + # Overriden by command line if options.initial_bits: initial_bits = options.initial_bits + state = { 'max_health': max_health, 'health': max_health, 'wins_required': wins_required, 'wins': 0, 'locations': deck['cards'], - 'puzzle': deck.get('puzzle', False), + 'puzzle': puzzle, 'clock_count': 0, 'replacement_params': deck.get('replacement_params', None), } -- 2.34.1