public void Apply(IGameState state) { if (state is ChessState) { var cs = state as ChessState; if (Move == null) Move = Solve(cs); SavedEnPassant = cs.EnPassant; if (!(Move is EnPassantConcrete)) cs.EnPassant = null; if (Player.Order == 2) ++cs.FullMoves; cs.SwitchPlayers(); Move.Apply(state); } else { throw new ArgumentException(); } }
public void AddMove(IConcreteMove m) { moves.Add(m); }
public PromotionConcrete(ITemplateMove baseMove, PieceTypes promoteTo, Position from, Position to) { BaseMove = baseMove.Concretize(from, to); PromoteTo = promoteTo; From = from; }