private IEnumerator WaitFreshPrompts(List <UIPromptInfo> prompts) { m_PromptsBarAnimator.SetTrigger("Outro"); yield return(new WaitForSeconds(0.5f)); ClearPrompts(); if (prompts == null) { m_CurrentScreen.SetPrompts(m_PromptsBar, m_PromptPrefab); } else { m_CurrentScreen.SetPrompts(m_PromptsBar, m_PromptPrefab, prompts); } m_PromptsBarAnimator.SetTrigger("Intro"); }
/// <summary> /// Transition Work Enumerator. /// Carries out the screen loading process and locks the system until a screen has been loaded. /// </summary> /// <param name="screenId"></param> /// <returns></returns> private IEnumerator DoScreenTransition(ScreenId screenId) { // if this is a new screen... (it should always be.) if (screenId != ScreenId.None) { m_InputLock = true; bool canNavigateBackwards = false; if (m_CurrentScreen != null) { canNavigateBackwards = m_CurrentScreen.CanNavigateBack; m_PromptsBarAnimator.SetTrigger("Outro"); yield return(StartCoroutine(m_CurrentScreen.DoScreenAnimation(UIScreenAnimState.Outro))); UnloadCurrentScreen(); } m_PrefabLoadingLock = true; UIBaseScreen loadedScreen = LoadScreen(screenId); if (loadedScreen != null) { while (m_PrefabLoadingLock) { yield return(null); } // If the current screen doesn't support back navigation, remove it from the stack. if (!canNavigateBackwards && m_ScreenStack.Count > 0) { m_ScreenStack.Pop(); } m_CurrentScreen = loadedScreen; // Back transitions can't add the screen twice. if (m_ScreenStack.Count == 0 || (m_ScreenStack.Count > 0 && screenId != m_ScreenStack.Peek())) { // Push the new screen onto the stack. m_ScreenStack.Push(screenId); } yield return(StartCoroutine(m_CurrentScreen.DoScreenAnimation(UIScreenAnimState.Intro))); ClearPrompts(); m_CurrentScreen.SetPrompts(m_PromptsBar, m_PromptPrefab); m_PromptsBarAnimator.SetTrigger("Intro"); } m_InputLock = false; } }