from naja.player import Player
from naja import actions
from naja.sound import sound
+from naja.utils import parse_bits
import random
'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)
+ 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']
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
'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),
}
player = Player.import_player(state.pop('player'))
board_locations = cls.import_board_locations(
state.pop('board_locations'))
- return cls(state, player, board_locations)
+ board = cls(state, player, board_locations)
+ player.set_gameboard(board)
+ return board
def export(self):
data = {
@classmethod
def build_action(cls, definition):
action_class = getattr(actions, definition['action_class'])
- required_bits = cls.parse_bits(definition['required_bits'])
+ required_bits = parse_bits(definition['required_bits'])
data = definition.get('data', {})
return action_class(required_bits, **data)
@classmethod
def new_location(cls, definition, replacement_params=None, puzzle=False):
if 'bits' in definition:
- bits = cls.parse_bits(definition['bits'])
+ bits = parse_bits(definition['bits'])
else:
bits = cls.generate_bitwise_operand()
location.check_actions()
return location
- @classmethod
- def parse_bits(self, bit_list):
- # Convert names to numbers if applicable.
- return frozenset(BITS.get(bit, bit) for bit in bit_list)
-
def export(self):
return {
'bitwise_operand': sorted(self.bitwise_operand),