Esempio n. 1
0
        public void ChangeCoreUi <T>(Action <T> onLoaded = null, OverlayUiOperator?overlayUiOperator = null) where T : ICoreUiCanvas
        {
            if (!CheckInited() || !CheckChanging())
            {
                return;
            }

            this.overlayUiOperator = overlayUiOperator;

            isChanging = true;
            isExited   = false;
            isPrepared = false;
            sceneLoader.Load <T>(onLoaded);
            previousCoreUiCanvas = currentCoreUiCanvas;
            currentCoreUiCanvas  = null;

            if (overlayUiOperator.HasValue)
            {
                overlayUiOperator.Value.AddShownAction(exitPreviousUiAction);
            }
            else
            {
                ExitPreviousUi();
            }
        }
Esempio n. 2
0
        void ExitPreviousUi()
        {
            isExited = (previousCoreUiCanvas == null);

            if (overlayUiOperator.HasValue)
            {
                // 画面はOverlayUiで隠れているので即時退場
                // Because the current ui is hidden by an overlay ui
                previousCoreUiCanvas?.ExitImmediately(onExited);
            }
            else
            {
                previousCoreUiCanvas?.Exit(onExited);
            }

            previousCoreUiCanvas = null;
        }
Esempio n. 3
0
        void ICoreUiBank.NotifyPrepared <T>(T coreUiCanvas)
        {
            if (!CheckInited())
            {
                return;
            }

            currentCoreUiCanvas = coreUiCanvas;

            CanvasInStratum canvasInStratum = new CanvasInStratum(
                ConstStratum.Core,
                // 呼び出し順に登録するのですべて同じOrderInStratumで登録する
                0,
                coreUiCanvas.CanvasOrderUpdater);

            canvasBank.AddCanvas(canvasInStratum);

            isPrepared = true;
            TryEntry();
        }