*REAL* Python has no dict comprehensions.
[naja.git] / naja / gameboard.py
index 934aa3d15b1d308cb12d59d37e6e5d1645a0deae..66c651936099520c0d163786881b7422974fac94 100644 (file)
@@ -41,14 +41,11 @@ class GameBoard(object):
             '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] = tuple(v)
-            defaults.update(puzzle_defaults)
+        deck_defaults = deck.get('defaults', {})
+        for k, v in deck_defaults.iteritems():
+            if isinstance(v, list):
+                deck_defaults[k] = tuple(v)
+        defaults.update(deck_defaults)
 
         if initial_bits is None:
             initial_bits = defaults['initial_bits']
@@ -59,6 +56,8 @@ class GameBoard(object):
         if wins_required is None:
             wins_required = defaults['wins_required']
 
+        assert wins_required + max_health == 8
+
         # Overriden by command line
         if options.initial_bits:
             initial_bits = options.initial_bits
@@ -69,7 +68,7 @@ class GameBoard(object):
             'wins_required': wins_required,
             'wins': 0,
             'locations': deck['cards'],
-            'puzzle': puzzle,
+            'puzzle': deck.get('puzzle', False),
             'clock_count': 0,
             'replacement_params': deck.get('replacement_params', None),
         }
@@ -189,7 +188,7 @@ class GameBoard(object):
         # Find which cards are at their maximum and exclude them from
         # the choice list
         counts = {}
-        choices = {card['card_name']: card for card in cards}
+        choices = dict((card['card_name'], card) for card in cards)
         for pos, card in board_locations:
             if pos == position:
                 # skip the card we're replacing if appropriate
@@ -306,6 +305,9 @@ class LocationCard(object):
         self.actions = location_actions
         self.max_number = max_number
         self.replacement_time = replacement_time
+        if options.debug:
+            for action in self.actions:
+                action.sanity_check(self)
 
     @classmethod
     def import_location(cls, state):