The current game state.
"""
+try:
+ import yaml
+except ImportError:
+ yaml = None
+ import json
+
from naja.gameboard import GameBoard
+from naja.resources import resources
+
+
+def load_location_deck(name):
+ if yaml:
+ with resources.get_file('location_decks', '%s.yaml' % name) as deck_fp:
+ return yaml.safe_load(deck_fp)
+ else:
+ with resources.get_file('location_decks', '%s.json' % name) as deck_fp:
+ return json.load(deck_fp)
class GameState(object):
Naja game state.
"""
- def __init__(self):
- self.gameboard = GameBoard.new_game(
- locations_definition=[{'actions': []}]) # TODO: we will need some of these :)
+ def __init__(self, gameboard):
+ self.gameboard = gameboard
+
+ @classmethod
+ def new(cls, deck='standard', **kw):
+ deck = load_location_deck(deck)
+ return cls(GameBoard.new_game(deck, **kw))
+
+ @classmethod
+ def load(cls, data):
+ return cls(GameBoard.import_game(data))
@property
def player(self):
return self.gameboard.player
+
+ @property
+ def board_locations(self):
+ return self.gameboard.board_locations