Example #1
0
        /// <summary>
        /// Checks if a move is valid without performing it
        /// </summary>
        /// <param name="move"></param>
        /// <returns></returns>
        public bool IsMoveValid(Move move)
        {
            if (move.Piece == null)
            {
                return(false);
            }

            IRuleSet pieceRuleset = _settings.GetRulesFor(move.Piece.Type);

            if (pieceRuleset == null)
            {
                throw new NotImplementedException("Rules are not defined for " + move.Piece.Type);
            }
            return(pieceRuleset.IsMoveValid(this, move));
        }