/// <summary> /// Internal request for scene transition /// </summary> private IEnumerator ChangeInterfaceScreenEnumerator(InterfaceScreen target, bool animate) { // Execute fade out animation if (animate) { SceneService.Instance.SetCanvasEnabled(true); yield return(StartCoroutine( SceneService.Instance.PlayFadeAnimation(0f, 1f, SceneService.Instance.BlackOverlay))); } // Deactivate previous screen if (_currentActiveScreen != null) { _currentActiveScreen.gameObject.SetActive(false); } // Activate next screen _currentActiveScreen = target; _currentActiveScreen.gameObject.SetActive(true); // Execute fade in animation if (animate) { yield return(StartCoroutine( SceneService.Instance.PlayFadeAnimation(1f, 0f, SceneService.Instance.BlackOverlay))); SceneService.Instance.SetCanvasEnabled(false); } }
IEnumerator LoadScreen(InterfaceScreen screen, bool fade) { InTransition = true; yield return(StartCoroutine(ChangeScreenRoutine(screen, fade))); InTransition = false; }
/// <summary> /// Core transition method, use this to transition from one screen to another /// </summary> public void ChangeInterfaceScreenWithoutFade(InterfaceScreen screen) { if (InTransition) { return; } StartCoroutine(ChangeInterfaceScreenEnumerator(screen, false)); }
/// <summary> /// Core transition method, use this to transition from one screen to another /// </summary> public void ChangeScreen(InterfaceScreen screen) { if (InTransition) { return; } StartCoroutine(ChangeScreenRoutine(screen, false)); }
/// <summary> /// Core transition method, use this to transition from one screen to another with fade /// </summary> public void ChangeScreenWithFade(InterfaceScreen screen) { if (InTransition) { return; } StartCoroutine(ChangeScreenRoutine(screen, true)); }
IEnumerator ChangeScreen(InterfaceScreen target, bool animate) { if (animate) { GameSceneManager.Instance.SetCanvasEnabled(true); yield return(StartCoroutine(GameSceneManager.Instance.PlayFadeAnimation(0f, 1f, GameSceneManager.Instance.blackOverlay))); } if (ActiveScreen != null) { ActiveScreen.gameObject.SetActive(false); } ActiveScreen = target; ActiveScreen.gameObject.SetActive(true); if (animate) { yield return(StartCoroutine(GameSceneManager.Instance.PlayFadeAnimation(1f, 0f, GameSceneManager.Instance.blackOverlay))); GameSceneManager.Instance.SetCanvasEnabled(false); } }
public void ChangeScreen(InterfaceScreen screen) { StartCoroutine(ChangeScreen(screen, false)); }
public void ChangeScreenAndFade(InterfaceScreen screen) { StartCoroutine(ChangeScreen(screen, true)); }
/// <summary> /// /// Switches the menu. /// </summary> /// <param name="menuName">Name of the menu to switch to. (The name of its game object)</param> public static void SwitchMenu(string menuName) { if (menus.ContainsKey(menuName)) { if (!menus[menuName].overrideMenuSwitching || overrideMenu == null) { if (menus[menuName] != currentMenu) { if (overrideMenu == null) { if (currentMenu != null) { currentMenu.gameObject.SetActive(false); currentMenu.OnSwitchFrom(); } if (!menus[menuName].overrideMenuSwitching) { currentMenu = menus[menuName]; currentMenu.gameObject.SetActive(true); currentMenu.OnSwitchTo(); } else { overrideMenu = menus[menuName]; overrideMenu.gameObject.SetActive(true); overrideMenu.OnSwitchTo(); } } else { currentMenu = menus[menuName]; } } } else { if (menus[menuName] != overrideMenu) { overrideMenu.gameObject.SetActive(false); overrideMenu.OnSwitchFrom(); overrideMenu = menus[menuName]; overrideMenu.OnSwitchTo(); } } } else { if (menuName == "CANCEL_OVERRIDE" && overrideMenu != null) { overrideMenu.gameObject.SetActive(false); overrideMenu.OnSwitchFrom(); if (currentMenu != null) { currentMenu.OnSwitchTo(); currentMenu.gameObject.SetActive(true); } overrideMenu = null; } } }