Exemplo n.º 1
0
        private static void PopulateKingCastlingMoves(
            ICollection <GameMoveData> resultMoves,
            Square sourceSquare,
            CastlingOptions allowedCastlingOptions,
            Bitboard nonEmptySquares,
            CastlingType castlingType)
        {
            var option = castlingType.ToOption();

            if ((allowedCastlingOptions & option) == 0)
            {
                return;
            }

            var info = KingCastlingInfos[GetCastlingTypeArrayIndexInternal(castlingType)];

            if (info.KingMove.From != sourceSquare || (nonEmptySquares & info.ExpectedEmptySquares).IsAny)
            {
                return;
            }

            var moveData = new GameMoveData(info.KingMove, GameMoveFlags.IsKingCastling);

            resultMoves.Add(moveData);
        }
Exemplo n.º 2
0
 public ChessMoveData(ObjectGuid playerGuid, ObjectGuid pieceGuid, GameMoveData data)
 {
     Type       = data.MoveType;
     PlayerGuid = playerGuid;
     Color      = data.Color;
     PieceGuid  = pieceGuid;
     From       = data.From;
     To         = data.To;
 }