public static void AddAllPossibleBishopMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true) { FastIndex[][] bishopRays = PrecomputedMoveData.bishopRays[start.ToByte()]; foreach (var ray in bishopRays) { AddRayMoves(moves, start, team, boardNode, ray, generateQuiet); } }
public static void AddAllPossibleRookDirectionalMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true) { FastIndex[][] rookRays = PrecomputedMoveData.rookRays[start.ToByte()]; foreach (var directionalIndexes in rookRays) { AddRayMoves(moves, start, team, boardNode, directionalIndexes, generateQuiet); } }
public void IndexByteAllValuesTest() { for (byte i = 0; i < 85; i++) { FastIndex index = FastIndex.FromByte(i); Assert.AreEqual(i, index.ToByte()); } }
public static void AddAllPossibleKnightMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true) { foreach (var target in PrecomputedMoveData.knightMoves[start.ToByte()]) { if (boardNode.TryGetPiece(target, out (Team team, FastPiece piece)occupier)) { if (occupier.team != team) { moves.Add(new FastMove(start, target, MoveType.Attack)); } } else if (generateQuiet) { moves.Add(new FastMove(start, target, MoveType.Move)); } } }
public static void AddAllPossibleRookMoves(List <FastMove> moves, FastIndex start, Team team, FastBoardNode boardNode, bool generateQuiet = true) { AddAllPossibleRookDirectionalMoves(moves, start, team, boardNode, generateQuiet); if (generateQuiet) { foreach (var target in PrecomputedMoveData.kingMoves[start.ToByte()]) { if (boardNode.TryGetPiece(target, out (Team team, FastPiece piece)occupier)) { if (occupier.team == team && Contains(DefendableTypes, occupier.piece)) { moves.Add(new FastMove(start, target, MoveType.Defend)); } } } } }