Пример #1
0
        public HashSet <Move> GetAvailableMoves()
        {
            canAttack = false;
            var pieces   = GetPieces();
            var allMoves = new HashSet <Move>();

            if (activePiece != null)
            {
                return(activePiece.GetAvailableAttacks(board));
            }
            foreach (var piece in pieces)
            {
                allMoves.UnionWith(piece.GetMovesOrAttacks(board));
            }
            if (this.canAttack)
            {
                allMoves.RemoveWhere((a) => a.attackedPiece == null);
            }
            return(allMoves);
        }