Add deck loading.
[naja.git] / naja / gamestate.py
index c3bc0ce96b75c27bd14bbe49b3daad3c20ee0ef9..a32438170e3c5663366850cde744027507b57ceb 100644 (file)
@@ -2,15 +2,23 @@
 The current game state.
 """
 
-import yaml
+try:
+    import yaml
+except ImportError:
+    yaml = None
+    import json
 
 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)
+    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):
@@ -23,8 +31,8 @@ class GameState(object):
 
     @classmethod
     def new(cls, deck='standard', **kw):
-        locations_deck = load_location_deck(deck)
-        return cls(GameBoard.new_game(locations_deck['cards'], **kw))
+        deck = load_location_deck(deck)
+        return cls(GameBoard.new_game(deck, **kw))
 
     @classmethod
     def load(cls, data):