Esempio n. 1
0
        private void TryShowScreen(NavigationRequestNode navigationNode)
        {
            ShowScreenData           showScreenData  = navigationNode.requestShowScreen.Event.ShowScreenData;
            ScreensRegistryComponent screensRegistry = navigationNode.screensRegistry;
            GameObject nonActiveScreen = this.GetNonActiveScreen(showScreenData.ScreenType, screensRegistry);

            if (nonActiveScreen == null)
            {
                if (this.GetActiveScreen(showScreenData.ScreenType, screensRegistry) != null)
                {
                    navigationNode.Entity.RemoveComponent <RequestShowScreenComponent>();
                }
                else
                {
                    base.Log.WarnFormat("Skip remove RequestShowScreenComponent {0}", navigationNode.requestShowScreen.Event.ShowScreenData.ScreenType.Name);
                }
            }
            else
            {
                navigationNode.Entity.RemoveComponent <RequestShowScreenComponent>();
                CurrentScreenComponent currentScreen = navigationNode.currentScreen;
                HistoryComponent       history       = navigationNode.history;
                GameObject             hidingScreen  = null;
                if (currentScreen.screen != null)
                {
                    hidingScreen = this.GetActiveScreen(currentScreen.showScreenData.ScreenType, navigationNode.screensRegistry);
                    currentScreen.screen.RemoveComponent <ActiveScreenComponent>();
                    currentScreen.screen.AddComponent <ScreenHidingComponent>();
                    if (hidingScreen.GetComponent <ScreenComponent>().LogInHistory)
                    {
                        ShowScreenData         t       = currentScreen.showScreenData.InvertAnimationDirection(showScreenData.AnimationDirection);
                        Stack <ShowScreenData> screens = history.screens;
                        if ((screens.Count > 0) && ReferenceEquals(screens.Peek().ScreenType, t.ScreenType))
                        {
                            screens.Pop();
                        }
                        screens.Push(t);
                        if (t.Context != null)
                        {
                            t.Context.RemoveComponent <ScreenGroupComponent>();
                        }
                    }
                }
                this.ActivateShowingScreen(nonActiveScreen, hidingScreen, showScreenData, currentScreen);
            }
        }
Esempio n. 2
0
 public void TryShowRequestedScreenAfterScreensLoad(ScreensLoadedEvent e, NavigationRequestNode navigationNode)
 {
     this.TryShowScreen(navigationNode);
 }
Esempio n. 3
0
 public void TryShowRequestedScreen(NodeAddedEvent e, NavigationRequestNode navigationNode)
 {
     this.TryShowScreen(navigationNode);
 }