Add scaffolding for puzzle levels (no actual puzzle support yet).
[naja.git] / naja / gamestate.py
1 """
2 The current game state.
3 """
4
5 import yaml
6
7 from naja.gameboard import GameBoard
8 from naja.resources import resources
9
10
11 def load_location_deck(name):
12     with resources.get_file('location_decks', '%s.yaml' % (name,)) as deck_fp:
13         return yaml.safe_load(deck_fp)
14
15
16 class GameState(object):
17     """
18     Naja game state.
19     """
20
21     def __init__(self, gameboard):
22         self.gameboard = gameboard
23
24     @classmethod
25     def new(cls, deck='standard', **kw):
26         locations_deck = load_location_deck(deck)
27         return cls(GameBoard.new_game(locations_deck['cards'], **kw))
28
29     @classmethod
30     def load(cls, data):
31         return cls(GameBoard.import_game(data))
32
33     @property
34     def player(self):
35         return self.gameboard.player
36
37     @property
38     def board_locations(self):
39         return self.gameboard.board_locations