Beispiel #1
0
        public void ClearPossibleMoves(Piece piece, params Predicate <IMove>[] predicates)
        {
            var illegalMoves = new List <IMove>();

            var moves = piece.GetMoves();

            foreach (var move in moves)
            {
                var illegal = false;

                foreach (var predicate in predicates)
                {
                    if (!predicate(move))
                    {
                        continue;
                    }

                    illegal = true;
                    break;
                }

                if (illegal)
                {
                    illegalMoves.Add(move);
                }
            }

            piece.ClearMoves(illegalMoves);
        }