private void MakeTurn(Turn turn) { turn.ToInt(out int wordStart, out int numStart, out int wordEnd, out int numEnd); var fgr = Cells[numStart][wordStart]; OOEnable.Change(fgr, turn.Start); if (fgr == Figures.WhitePawn && numEnd == 5 && Cells[numEnd][wordEnd] == Figures.Space) { Cells[numEnd - 1][wordEnd] = Figures.Space; } if (fgr == Figures.BlackPawn && numEnd == 2 && Cells[numEnd][wordEnd] == Figures.Space) { Cells[numEnd + 1][wordEnd] = Figures.Space; } if (turn.Promote) { fgr = SideToMove == Side.White ? Figures.WhiteQueen : Figures.BlackQueen; } if (Figure.OOTurn(turn, out Turn extra)) { MakeTurn(extra); } Cells[numStart][wordStart] = Figures.Space; Cells[numEnd][wordEnd] = fgr; }