package engine // Board is the board state of a game type Board struct { PlayerBoards map[*Player]PlayerBoard } // Stack is a stack/list of cards type Stack []*Card // PlayerBoard is the side of the board belonging to a specific player type PlayerBoard struct { Home Zone // Player's home Problems []Zone // All problems the player can place cards at Deck Stack // Cards left in the main deck ProblemDeck Stack // Cards left in the problem deck Discards Stack // Cards in the discard pile Banished Stack // Cards that have been banished Hand Stack // Cards the player has in hand } // Zone is a place cards can go to/be played at type Zone struct { Cards []*CardInstance // Cards in the zone Problem *CardInstance // If it's a problem, the problem's card }