--- /dev/null
+- actions: []
+- actions:
+ - action_class: 'DoNothing'
+ required_bits: [CYAN]
+- actions:
+ - action_class: 'DoNothing'
+ required_bits: [YELLOW]
+- actions:
+ - action_class: 'DoNothing'
+ required_bits: [YELLOW, MAGENTA]
TEXT = None
def __init__(self, required_bits, **data):
- self.required_bits = frozenset(required_bits)
+ bits = set()
+ for bit in required_bits:
+ # Convert names to numbers if applicable.
+ bits.add(BITS.get(bit, bit))
+ self.required_bits = frozenset(bits)
self.data = data
def check_available(self, player):
The current game state.
"""
+import yaml
+
from naja.gameboard import GameBoard
-from naja.constants import BITS
+from naja.resources import resources
+
+
+def load_location_deck(name):
+ with resources.get_file('location_decks', '%s.yaml' % (name,)) as deck_fp:
+ return yaml.safe_load(deck_fp)
class GameState(object):
# This is a very simple deck to allow testing more drawing logic
# on tiles. These will need to be replaced with better stuff.
self.gameboard = GameBoard.new_game(
- locations_definition=[
- {'actions': []},
- {'actions': [{'required_bits': [BITS.CYAN],
- 'action_class': 'DoNothing'}]},
- {'actions': [{'required_bits': [BITS.YELLOW],
- 'action_class': 'DoNothing'}]},
- {'actions': [{'required_bits': [BITS.YELLOW, BITS.MAGENTA],
- 'action_class': 'DoNothing'}]},
- ])
+ locations_definition=load_location_deck('test'))
@property
def player(self):
check_available(set([BITS.MSB]), [], False)
check_available(set([BITS.MSB]), [BITS.MSB], True)
+ def test_bits_translation(self):
+ action = actions.LocationAction(set([BITS.NORTH, 'MSB']))
+ self.assertEqual(action.required_bits, set([BITS.NORTH, BITS.MSB]))
+
def test_DoNothing(self):
board = self.make_board()
state_before = board.export()
],
# Dependencies
- install_requires=['pygame'],
+ install_requires=[
+ 'pygame',
+ 'PyYAML',
+ ],
# Files
packages=find_packages(),