Ejemplo n.º 1
0
    /// <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);
    }
Ejemplo n.º 2
0
 //**************************************************
 //*             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);
            }
        }
Ejemplo n.º 4
0
    public IObservable <ScreenPresenter> BackScreen()
    {
        OnScreenWillChange();
        var nextScreen = beforeScreenStack.Pop();
        var transition = BackTransition(CurrentScreen, nextScreen);

        transition.Subscribe(
            x => CurrentScreen = x,
            () => OnScreenChanged()
            );
        return(transition);
    }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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();
    }