/// <summary> /// スクリーン遷移 型安全でないためここから呼ぶのは非推奨 /// </summary> public IObservable <T> MoveScreen <T> (string screenType, TransitionStyle transitionStyle = TransitionStyle.Null, Action <T> action = null) where T : ScreenPresenter { OnScreenWillChange(); var previewScreen = CurrentScreen; if (previewScreen != null) { previewScreen.OnMoveOut(); beforeScreenStack.Push(previewScreen); previewScreen.gameObject.SetActive(false); } // 生成 var transition = MoveTransition(screenType, transitionStyle, action); transition.Subscribe( x => CurrentScreen = x, () => { OnScreenChanged(); //// 前のスクリーンを非表示にする //if (previewScreen != null) //{ // previewScreen.gameObject.SetActive(false); //} }); return(transition); }
//************************************************** //* FILL DATA ON START //************************************************** private void InitializeFormWithData() { _ScreenPresenter = new ScreenPresenter(new ScreenServices()); txtNivel.PreviewTextInput += txtNivel.OnlyNumbersValidationTextBox; screenGrid.ItemsSource = screenList; screenList.AddRange(_ScreenPresenter.GetAllPantallas()); cleanView(); }
public override void ViewDidLoad() { base.ViewDidLoad(); ScreenPresenter presenter = new ScreenPresenter(this); if (Nomber >= 0) { presenter.GetSignal(Nomber); } }
public IObservable <ScreenPresenter> BackScreen() { OnScreenWillChange(); var nextScreen = beforeScreenStack.Pop(); var transition = BackTransition(CurrentScreen, nextScreen); transition.Subscribe( x => CurrentScreen = x, () => OnScreenChanged() ); return(transition); }
IObservable <ScreenPresenter> BackTransition(ScreenPresenter preview, ScreenPresenter next) { next.gameObject.SetActive(true); var subject = new AsyncSubject <ScreenPresenter> (); preview.OnBackOut() .SelectMany(_ => next.OnBackIn()) .Subscribe(_ => { }, () => { Destroy(preview.gameObject); subject.OnNext(next); subject.OnCompleted(); }); return(subject); }
IEnumerator MoveTransitionCoroutine <T> (string screenType, IObserver <T> observer, TransitionStyle transitionStyle = TransitionStyle.Null, Action <T> action = null) where T : ScreenPresenter { var effect = TransitionFactory.Create(transitionStyle); yield return(effect.AnimateIn().ToYieldInstruction()); // 生成 GameObject obj = Instantiate(ResourcesManager.Instance.GetScreen(screenType), screenContainer) as GameObject; T screen = obj.GetComponent <T> (); // 初期化 yield return(screen.Initialize().ToYieldInstruction()); // モデルの注入 if (action != null) { action(screen); } // 遷移 yield return(screen.OnBeforeMoveIn().ToYieldInstruction()); //Debug.LogError ("BeforeMoveIn終了"); yield return(Observable.WhenAll( screen.OnMoveIn(), effect.AnimateOut() ).ToYieldInstruction()); yield return(screen.OnEndMoveIn().ToYieldInstruction()); // 副作用 CurrentScreen = screen; observer.OnNext(screen); observer.OnCompleted(); }