Optional sanity check for actions.
[naja.git] / naja / gameboard.py
index 934aa3d15b1d308cb12d59d37e6e5d1645a0deae..689c3fd15fcf324d9110763331a6a0eeb93023d2 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),
         }
@@ -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):