private GameState(GameState gs) { this.game = gs.game; this.CurrentPlayerID = gs.CurrentPlayerID; this.Board = new Dictionary<Coords, Piece>(gs.Board); this.OverrideNextPlayer = gs.OverrideNextPlayer; this.GlobalContext = (Game.GlobalContext)gs.GlobalContext.Clone(this); foreach (var player in game.EnumeratePlayers()) { offboard.Add(player, new HashSet<Piece>(gs.GetOffboard(player))); } }
public IEnumerable<Piece> GetOffboard(GameState state) { var pieces = state.GetOffboard(this); return new HashSet<Piece>(pieces); }
internal void AddOffboard(GameState state, Piece p) { var pieces = state.GetOffboard(this); pieces.Add(p); }
internal bool RemoveOffBoard(GameState state, Piece p) { var pieces = state.GetOffboard(this); if (pieces.Contains(p)) { pieces.Remove(p); return true; } else { return false; } }