Add scaffolding for puzzle levels (no actual puzzle support yet).
[naja.git] / naja / gamestate.py
index 4e892f883ef4cf7ab456a871cda2a13f37c5ca7b..c3bc0ce96b75c27bd14bbe49b3daad3c20ee0ef9 100644 (file)
@@ -2,7 +2,15 @@
 The current game state.
 """
 
+import yaml
+
 from naja.gameboard import GameBoard
+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):
@@ -10,10 +18,22 @@ class GameState(object):
     Naja game state.
     """
 
-    def __init__(self):
-        self.gameboard = GameBoard.new_game(
-            locations_definition=[])  # TODO: we will need some of these :)
+    def __init__(self, gameboard):
+        self.gameboard = gameboard
+
+    @classmethod
+    def new(cls, deck='standard', **kw):
+        locations_deck = load_location_deck(deck)
+        return cls(GameBoard.new_game(locations_deck['cards'], **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