Ballz.GameSession.Logic.GameLogic.StartNextTurn C# (CSharp) Метод

StartNextTurn() публичный Метод

public StartNextTurn ( ) : void
Результат void
        public void StartNextTurn()
        {
            if (Session.UsePlayerTurns)
            {
                var activePlayerIndex = Session.Players.IndexOf(Session.ActivePlayer);

                // Get the first player that still has at least one ball.
                // Search for the next player in the order of the turn system
                var player = Enumerable.Range(0, Session.Players.Count)
                    .OrderBy(i => i > activePlayerIndex ? i - Session.Players.Count : i)
                    .Select(i => Session.Players[i])
                    .FirstOrDefault(p => p.OwnedBalls.Count > 0);

                if (player == null)
                    return;

                Session.ActivePlayer = player;

                player.ActiveBall = ChooseNextBall(player);
                ActiveControllers[player] = BallControllers[player.ActiveBall];
                ActiveControllers[player]?.OnTurnStart();
                Session.TurnTime = 0;
                Session.TurnState = TurnState.Running;
            }
        }