ChessServer.GameLogic.AttackMap.PassedPawn C# (CSharp) 메소드

PassedPawn() 개인적인 메소드

private PassedPawn ( IReadOnlyList moves, Board board, Figure pawn ) : void
moves IReadOnlyList
board Protocol.GameObjects.Board
pawn Protocol.GameObjects.Figure
리턴 void
        private void PassedPawn(IReadOnlyList<Move> moves, Board board, Figure pawn)
        {
            int rowFrom;
            int rowTo;
            int rows;
            var pawnX = board.ReturnPosition(pawn).Item1;
            var pawnY = board.ReturnPosition(pawn).Item2;
            switch (pawn.Side)
            {
                case Side.BLACK:
                    rows = 4;
                    rowFrom = rows - 2;
                    rowTo = rows - 1;
                    break;
                case Side.WHITE:
                    rows = 5;
                    rowFrom = rows + 2;
                    rowTo = rows + 1;
                    break;
                default:
                    return;
            }

            var cell = new List<string>();
            if (pawnX != 'a')
                cell.Add(((char)(pawnX - 1)).ToString(CultureInfo.InvariantCulture) + rows);
            if (pawnX != 'h')
                cell.Add(((char)(pawnX + 1)).ToString(CultureInfo.InvariantCulture) + rows);

            foreach (var c in cell)
            {
                if (board[c].GetType() == typeof(FigurePawn) && board[c].Side != pawn.Side &&
                    moves[moves.Count - 1].To == c && moves[moves.Count - 1].From ==
                    c[0].ToString(CultureInfo.InvariantCulture) + rowFrom && pawnY == rows)
                    Attackers[c[0] - 'a', rowTo - 1].Add(pawn);

            }
        }