private void onDo(Cell to) { ITurn turn = rule.checkTurn(board, selected, to); if (turn == null) { selected = null; return; } turn.Perform(board); bool isEnd = rule.checkEnd(board); if (isEnd) { int cur = players.IndexOf(currentPlayer); int next = (cur + 1) % players.Count; currentPlayer.Active = false; currentPlayer = players[next]; currentPlayer.Active = true; } }