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));
        }
    }