예제 #1
0
        public static void EnsureOpened(bool fadeIn)
        {
            if (!isClosed)
            {
                return;
            }

            isClosed = false;

            if (fadeIn)
            {
                if (LoadingSplashScreenManager.Instance.CurrentState
                    is LoadingSplashScreenState.Shown
                    or LoadingSplashScreenState.Showing)
                {
                    // no fade-in required
                    fadeIn = false;
                }
            }

            var menu = new MenuRespawn();

            menu.IsFadeIn = fadeIn;
            instance      = menu;

            Api.Client.UI.LayoutRootChildren.Add(instance);

            ClientTimersSystem.AddAction(
                delaySeconds: fadeIn ? FadeInDelaySeconds : 0,
                action: () =>
            {
                if (isClosed)
                {
                    if (ReferenceEquals(instance, menu))
                    {
                        instance = null;
                        Api.Client.UI.LayoutRootChildren.Remove(instance);
                    }

                    return;
                }

                instance.Open();
            });
        }
예제 #2
0
        private void CloseMenu()
        {
            this.storyboardFadeIn?.Stop(this);

            AnimationHelper.CreateStoryboard(
                this,
                durationSeconds: 0.667,
                from: this.Opacity,
                to: 0,
                propertyName: OpacityProperty.Name,
                onCompleted: this.BackgroundFadeOutCompleted)
            .Begin(this);

            if (instance == this)
            {
                instance = null;
            }
        }
예제 #3
0
        public static void EnsureOpened()
        {
            if (!isClosed)
            {
                return;
            }

            isClosed = false;
            var menu = new MenuRespawn();

            instance = menu;

            Api.Client.UI.LayoutRootChildren.Add(instance);

            var loadingSplashScreenState = LoadingSplashScreenManager.Instance.CurrentState;
            var delay = loadingSplashScreenState == LoadingSplashScreenState.Shown ||
                        loadingSplashScreenState == LoadingSplashScreenState.Showing
                            ? 0
                            : 2;

            ClientTimersSystem.AddAction(
                delaySeconds: delay,
                action: () =>
            {
                if (isClosed)
                {
                    if (ReferenceEquals(instance, menu))
                    {
                        instance = null;
                        Api.Client.UI.LayoutRootChildren.Remove(instance);
                    }

                    return;
                }

                instance.Open();
            });
        }