ChessServer.GameLogic.AttackMap.Castling C# (CSharp) Method

Castling() private method

private Castling ( List moves, Board board, Figure king, Figure rook ) : void
moves List
board Protocol.GameObjects.Board
king Protocol.GameObjects.Figure
rook Protocol.GameObjects.Figure
return void
        private void Castling(List<Move> moves, Board board, Figure king, Figure rook)
        {
            int rows = 0;
            if (king.Side == Side.WHITE)
                rows = 1;
            else if (king.Side == Side.BLACK)
                rows = 8;

            char rookX = board.ReturnPosition(rook).Item1;
            int rookY = board.ReturnPosition(rook).Item2;
            char kingX = board.ReturnPosition(king).Item1;
            int kingY = board.ReturnPosition(king).Item2;

            if (moves.Count != 0)
                foreach (Move move in moves)
                {
                    if (!move.From.Contains(rookX + rookY.ToString(CultureInfo.InvariantCulture)))
                    {
                        foreach (Move move2 in moves)
                            if (!move2.From.Contains(kingX + kingY.ToString(CultureInfo.InvariantCulture)))
                            {
                                CastlingFunc(board, king, rook, rows, rookX);
                            }
                            else
                                return;
                    }
                    else
                        return;
                }
            else
            {
                CastlingFunc(board, king, rook, rows, rookX);
            }
        }