IEnumerator ProgressAndCompleteNextTurn() { while (true) { TurnManager.CycleToNextTurn(); // Set camera to next character ProgressQueueUnit now = TurnManager.ProgressQueue.Peek(); Character character = CharacterManager.ActiveCharacters[now.CharacterId]; CameraManager.FollowNewCharacter(now.CharacterId); Debug.Log(character.Name + "'s turn."); if (character.IsControllable) { uiManager.BeginPlayerTurn(); // Wait for player to finish turn yield return(new WaitUntil(() => UiManager.hasFinishedControlling)); } else { AiManager.CompleteTurn(now.CharacterId); } TurnManager.ResetCurrentCharacterProgress(); yield return(new WaitForSeconds(0.1f)); } }