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); } }
public void TryShowRequestedScreenAfterScreensLoad(ScreensLoadedEvent e, NavigationRequestNode navigationNode) { this.TryShowScreen(navigationNode); }
public void TryShowRequestedScreen(NodeAddedEvent e, NavigationRequestNode navigationNode) { this.TryShowScreen(navigationNode); }