Beispiel #1
0
 public SimpleQuad(String name, String materialName,
     float left, float top, float width,
     float height, ColourValue colour)
 {
     Panel = OverlayManager.Singleton.CreateOverlayElement("Panel", name)
       as OverlayContainer;
     Panel.MetricsMode = GuiMetricsMode.GMM_RELATIVE;
     Panel.SetDimensions(width, height);
     Panel.SetPosition(left, top);
     Panel.MaterialName = materialName;
     Panel.Colour = colour;
 }
 private void stateChanged(OverlayContainer c, Visibility state)
 {
     switch (state)
     {
         case Visibility.Hidden:
             StateBackground.FadeOut(200);
             break;
         case Visibility.Visible:
             StateBackground.FadeIn(200);
             break;
     }
 }
        public OverlayScene(Vector screenSize)
        {
            m_ScreenSize = screenSize;

            //note we need to load a font if we want to use a font
            var font = FontManager.Singleton.Create("Arial", ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME);
            font.SetParameter("type", "truetype");
            font.SetParameter("source", "Arial.ttf");
            font.SetParameter("size", "16");
            font.SetParameter("resolution", "96");
            font.Load();
            m_Container = (OverlayContainer)OverlayManager.Singleton.CreateOverlayElement("Panel", "PanelName");

            //note positions and sizes are in relative screen space
            m_Container.SetPosition(0.35, 0.3);
            m_Container.SetDimensions(0.3, 0.5);
            m_Container.MaterialName = "triangle/red";

            m_Overlay = OverlayManager.Singleton.Create("bob");

            m_Overlay.Add2D(m_Container);

            m_Overlay.Show();
        }
Beispiel #4
0
        // User defined event handlers that are called when a Selection is made.
        // Reemplazado por Manejo de Eventos // GDZ
        //List<MemberFunctionSlot> mOnSelectUserEventHandlers = new List<MemberFunctionSlot>();


        internal ComboBox(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, dimensions, positionMode, sizeMode, material, overlayContainer, ParentWidget)
        {
            mListItemHorizontalAlignment = GuiHorizontalAlignment.GHA_CENTER;
            mListItemVerticalAlignment   = GuiVerticalAlignment.GVA_CENTER;
            mWidgetType = Widget.WidgetType.QGUI_TYPE_COMBOBOX;

            // Create CloseButton - remember to position it relative to it's parent (TitleBar)
            // Height of the Title Bar
            float height = (mAbsoluteDimensions.w / mAbsoluteDimensions.z);
            // Button has same height as width - Make the button slightly smaller that the titlebar height
            float buttonHeight = 0.8f;
            float buttonWidth  = (height * buttonHeight);
            // Make a 5 pixel buffer
            float   buffer      = 5.0f / mPixelDimensions.z;
            Vector4 bDimensions = new Vector4((1 - (buttonWidth + buffer)), 0.1f, buttonWidth, buttonHeight);

            mButton = new Button(mInstanceName + ".button", bDimensions, QGuiMetricsMode.QGUI_GMM_RELATIVE, QGuiMetricsMode.QGUI_GMM_RELATIVE, mWidgetMaterial + ".button", mChildrenContainer, this);
            mButton.setZOrderOffset(1);
            _addChildWidget(mButton);

            // Make a 15 pixel buffer for the Label
            float bigBuffer = 15.0f / mPixelDimensions.z;

            mLabel = new Label(mInstanceName + ".Label", new Vector4(bigBuffer, 0, (1 - (buttonWidth + bigBuffer)), 1), QGuiMetricsMode.QGUI_GMM_RELATIVE, QGuiMetricsMode.QGUI_GMM_RELATIVE, "", mChildrenContainer, this);
            mLabel.OnDeactivate += new DeactivateEventHandler(ComboBox_OnDeactivate);
            //Reemplazado por Manejo de Eventos //GDZ
            //mLabel.addEventHandler((int)Widget.Event.QGUI_EVENT_DEACTIVATED, this);
            mLabel.setZOrderOffset(1);
            _addChildWidget(mLabel);

            mList = new List(mInstanceName + ".List", new Mogre.Vector3(0, 1.0f, 1.0f), QGuiMetricsMode.QGUI_GMM_RELATIVE, QGuiMetricsMode.QGUI_GMM_RELATIVE, mWidgetMaterial + ".list", getSheet().getMenuContainer(), this);
            mList.setCharacterHeight(mCharacterHeight);
            mList.setFont(mFont);
            mList.setTextColor(mTextTopColor, mTextBotColor);
            mList.hide();
            int    derivedZOrder = getSheet().getMenuOverlayZOrder() + 1;
            Window w             = getWindow();

            if (w != null)
            {
                mList.setZOrderOffset(derivedZOrder - getWindow().getZOrder(), false);
            }
            else
            {
                mList.setZOrderOffset(derivedZOrder, false);
            }
            _addChildWidget(mList);

            OnDeactivate      += new DeactivateEventHandler(ComboBox_OnDeactivate);
            OnMouseEnter      += new MouseEnterEventHandler(ComboBox_OnMouseEnter);
            OnMouseLeaves     += new MouseLeavesEventHandler(ComboBox_OnMouseLeaves);
            OnMouseButtonDown += new MouseButtonDownEventHandler(ComboBox_OnMouseButtonDown);
            OnMouseButtonUp   += new MouseButtonUpEventHandler(ComboBox_OnMouseButtonUp);
        }
Beispiel #5
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            // The next time this is updated is in UpdateAfterChildren, which occurs too late and results
            // in the cursor being shown for a few frames during the intro.
            // This prevents the cursor from showing until we have a screen with CursorVisible = true
            MenuCursorContainer.CanShowCursor = menuScreen?.CursorVisible ?? false;

            // todo: all archive managers should be able to be looped here.
            SkinManager.PostNotification = n => notifications?.Post(n);
            SkinManager.GetStableStorage = GetStorageForStableInstall;

            BeatmapManager.PostNotification = n => notifications?.Post(n);
            BeatmapManager.GetStableStorage = GetStorageForStableInstall;
            BeatmapManager.PresentImport    = items => PresentBeatmap(items.First());

            ScoreManager.PostNotification = n => notifications?.Post(n);
            ScoreManager.PresentImport    = items => PresentScore(items.First());

            Container logoContainer;

            dependencies.CacheAs(idleTracker = new GameIdleTracker(6000));

            AddRange(new Drawable[]
            {
                new VolumeControlReceptor
                {
                    RelativeSizeAxes      = Axes.Both,
                    ActionRequested       = action => volume.Adjust(action),
                    ScrollActionRequested = (action, amount, isPrecise) => volume.Adjust(action, amount, isPrecise),
                },
                screenContainer = new ScalingContainer(ScalingMode.ExcludeOverlays)
                {
                    RelativeSizeAxes = Axes.Both,
                    Children         = new Drawable[]
                    {
                        screenStack = new OsuScreenStack {
                            RelativeSizeAxes = Axes.Both
                        },
                        logoContainer = new Container {
                            RelativeSizeAxes = Axes.Both
                        },
                    }
                },
                overlayContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                rightFloatingOverlayContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                leftFloatingOverlayContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                topMostOverlayContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                idleTracker
            });

            screenStack.ScreenPushed += screenPushed;
            screenStack.ScreenExited += screenExited;

            loadComponentSingleFile(osuLogo, logo =>
            {
                logoContainer.Add(logo);

                // Loader has to be created after the logo has finished loading as Loader performs logo transformations on entering.
                screenStack.Push(new Loader
                {
                    RelativeSizeAxes = Axes.Both
                });
            });

            loadComponentSingleFile(Toolbar = new Toolbar
            {
                OnHome = delegate
                {
                    CloseAllOverlays(false);
                    menuScreen?.MakeCurrent();
                },
            }, d =>
            {
                topMostOverlayContent.Add(d);
                toolbarElements.Add(d);
            });

            loadComponentSingleFile(volume = new VolumeOverlay(), leftFloatingOverlayContent.Add);
            loadComponentSingleFile(new OnScreenDisplay(), Add, true);

            loadComponentSingleFile(notifications = new NotificationOverlay
            {
                GetToolbarHeight = () => ToolbarOffset,
                Anchor           = Anchor.TopRight,
                Origin           = Anchor.TopRight,
            }, rightFloatingOverlayContent.Add, true);

            loadComponentSingleFile(screenshotManager, Add);

            //overlay elements
            loadComponentSingleFile(direct         = new DirectOverlay(), overlayContent.Add, true);
            loadComponentSingleFile(social         = new SocialOverlay(), overlayContent.Add, true);
            loadComponentSingleFile(channelManager = new ChannelManager(), AddInternal, true);
            loadComponentSingleFile(chatOverlay    = new ChatOverlay(), overlayContent.Add, true);
            loadComponentSingleFile(settings       = new SettingsOverlay {
                GetToolbarHeight = () => ToolbarOffset
            }, leftFloatingOverlayContent.Add, true);
            var changelogOverlay = loadComponentSingleFile(new ChangelogOverlay(), overlayContent.Add, true);

            loadComponentSingleFile(userProfile       = new UserProfileOverlay(), overlayContent.Add, true);
            loadComponentSingleFile(beatmapSetOverlay = new BeatmapSetOverlay(), overlayContent.Add, true);

            loadComponentSingleFile(new LoginOverlay
            {
                GetToolbarHeight = () => ToolbarOffset,
                Anchor           = Anchor.TopRight,
                Origin           = Anchor.TopRight,
            }, rightFloatingOverlayContent.Add, true);

            loadComponentSingleFile(new MusicController
            {
                GetToolbarHeight = () => ToolbarOffset,
                Anchor           = Anchor.TopRight,
                Origin           = Anchor.TopRight,
            }, d =>
            {
                rightFloatingOverlayContent.Add(d);
                toolbarElements.Add(d);
            }, true);

            loadComponentSingleFile(new AccountCreationOverlay(), topMostOverlayContent.Add, true);
            loadComponentSingleFile(new DialogOverlay(), topMostOverlayContent.Add, true);
            loadComponentSingleFile(externalLinkOpener = new ExternalLinkOpener(), topMostOverlayContent.Add);

            chatOverlay.State.ValueChanged += state => channelManager.HighPollRate.Value = state.NewValue == Visibility.Visible;

            Add(externalLinkOpener = new ExternalLinkOpener());

            var singleDisplaySideOverlays = new OverlayContainer[] { settings, notifications };

            overlays.AddRange(singleDisplaySideOverlays);

            foreach (var overlay in singleDisplaySideOverlays)
            {
                overlay.State.ValueChanged += state =>
                {
                    if (state.NewValue == Visibility.Hidden)
                    {
                        return;
                    }

                    singleDisplaySideOverlays.Where(o => o != overlay).ForEach(o => o.Hide());
                };
            }

            // eventually informational overlays should be displayed in a stack, but for now let's only allow one to stay open at a time.
            var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile };

            overlays.AddRange(informationalOverlays);

            foreach (var overlay in informationalOverlays)
            {
                overlay.State.ValueChanged += state =>
                {
                    if (state.NewValue == Visibility.Hidden)
                    {
                        return;
                    }

                    informationalOverlays.Where(o => o != overlay).ForEach(o => o.Hide());
                };
            }

            // ensure only one of these overlays are open at once.
            var singleDisplayOverlays = new OverlayContainer[] { chatOverlay, social, direct, changelogOverlay };

            overlays.AddRange(singleDisplayOverlays);

            foreach (var overlay in singleDisplayOverlays)
            {
                overlay.State.ValueChanged += state =>
                {
                    // informational overlays should be dismissed on a show or hide of a full overlay.
                    informationalOverlays.ForEach(o => o.Hide());

                    if (state.NewValue == Visibility.Hidden)
                    {
                        return;
                    }

                    singleDisplayOverlays.Where(o => o != overlay).ForEach(o => o.Hide());
                };
            }

            OverlayActivationMode.ValueChanged += mode =>
            {
                if (mode.NewValue != OverlayActivation.All)
                {
                    CloseAllOverlays();
                }
            };

            void updateScreenOffset()
            {
                float offset = 0;

                if (settings.State.Value == Visibility.Visible)
                {
                    offset += ToolbarButton.WIDTH / 2;
                }
                if (notifications.State.Value == Visibility.Visible)
                {
                    offset -= ToolbarButton.WIDTH / 2;
                }

                screenContainer.MoveToX(offset, SettingsPanel.TRANSITION_LENGTH, Easing.OutQuint);
            }

            settings.State.ValueChanged      += _ => updateScreenOffset();
            notifications.State.ValueChanged += _ => updateScreenOffset();
        }
Beispiel #6
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            // hook up notifications to components.
            BeatmapManager.PostNotification = n => notificationOverlay?.Post(n);
            BeatmapManager.GetStableStorage = GetStorageForStableInstall;

            AddRange(new Drawable[] {
                new VolumeControlReceptor
                {
                    RelativeSizeAxes = Axes.Both,
                    ActionRequested  = action => volume.Adjust(action)
                },
                mainContent = new Container
                {
                    RelativeSizeAxes = Axes.Both,
                },
                volume         = new VolumeControl(),
                overlayContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                new OnScreenDisplay(),
            });

            LoadComponentAsync(screenStack = new Loader(), d =>
            {
                screenStack.ModePushed += screenAdded;
                screenStack.Exited     += screenRemoved;
                mainContent.Add(screenStack);
            });

            //overlay elements
            LoadComponentAsync(direct = new DirectOverlay {
                Depth = -1
            }, mainContent.Add);
            LoadComponentAsync(social = new SocialOverlay {
                Depth = -1
            }, mainContent.Add);
            LoadComponentAsync(chat = new ChatOverlay {
                Depth = -1
            }, mainContent.Add);
            LoadComponentAsync(settings = new MainSettings
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -1
            }, overlayContent.Add);
            LoadComponentAsync(userProfile = new UserProfileOverlay {
                Depth = -2
            }, mainContent.Add);
            LoadComponentAsync(musicController = new MusicController
            {
                Depth    = -3,
                Position = new Vector2(0, Toolbar.HEIGHT),
                Anchor   = Anchor.TopRight,
                Origin   = Anchor.TopRight,
            }, overlayContent.Add);

            LoadComponentAsync(notificationOverlay = new NotificationOverlay
            {
                Depth  = -3,
                Anchor = Anchor.TopRight,
                Origin = Anchor.TopRight,
            }, overlayContent.Add);

            LoadComponentAsync(dialogOverlay = new DialogOverlay
            {
                Depth = -5,
            }, overlayContent.Add);

            Logger.NewEntry += entry =>
            {
                if (entry.Level < LogLevel.Important)
                {
                    return;
                }

                notificationOverlay.Post(new SimpleNotification
                {
                    Text = $@"{entry.Level}: {entry.Message}"
                });
            };

            dependencies.Cache(settings);
            dependencies.Cache(social);
            dependencies.Cache(direct);
            dependencies.Cache(chat);
            dependencies.Cache(userProfile);
            dependencies.Cache(musicController);
            dependencies.Cache(notificationOverlay);
            dependencies.Cache(dialogOverlay);

            // ensure only one of these overlays are open at once.
            var singleDisplayOverlays = new OverlayContainer[] { chat, social, direct };

            foreach (var overlay in singleDisplayOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }

                    foreach (var c in singleDisplayOverlays)
                    {
                        if (c == overlay)
                        {
                            continue;
                        }
                        c.State = Visibility.Hidden;
                    }
                };
            }

            LoadComponentAsync(Toolbar = new Toolbar
            {
                Depth  = -4,
                OnHome = delegate
                {
                    hideAllOverlays();
                    intro?.ChildScreen?.MakeCurrent();
                },
            }, overlayContent.Add);

            settings.StateChanged += delegate
            {
                switch (settings.State)
                {
                case Visibility.Hidden:
                    intro.MoveToX(0, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint);
                    break;

                case Visibility.Visible:
                    intro.MoveToX(SettingsOverlay.SIDEBAR_WIDTH / 2, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint);
                    break;
                }
            };

            Cursor.State = Visibility.Hidden;
        }
Beispiel #7
0
 public static void ChangeContainerColour(OverlayContainer cont, ColourValue c)
 {
     ChangeContainerColour(cont, c, c);
 }
Beispiel #8
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            // The next time this is updated is in UpdateAfterChildren, which occurs too late and results
            // in the cursor being shown for a few frames during the intro.
            // This prevents the cursor from showing until we have a screen with CursorVisible = true
            CursorOverrideContainer.CanShowCursor = currentScreen?.CursorVisible ?? false;

            // hook up notifications to components.
            BeatmapManager.PostNotification = n => notifications?.Post(n);
            BeatmapManager.GetStableStorage = GetStorageForStableInstall;

            AddRange(new Drawable[]
            {
                new VolumeControlReceptor
                {
                    RelativeSizeAxes = Axes.Both,
                    ActionRequested  = action => volume.Adjust(action)
                },
                mainContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                overlayContent = new Container {
                    RelativeSizeAxes = Axes.Both, Depth = float.MinValue
                },
            });

            loadComponentSingleFile(screenStack = new Loader(), d =>
            {
                screenStack.ModePushed += screenAdded;
                screenStack.Exited     += screenRemoved;
                mainContent.Add(screenStack);
            });

            loadComponentSingleFile(Toolbar = new Toolbar
            {
                Depth  = -5,
                OnHome = delegate
                {
                    hideAllOverlays();
                    intro?.ChildScreen?.MakeCurrent();
                },
            }, overlayContent.Add);

            loadComponentSingleFile(volume          = new VolumeControl(), Add);
            loadComponentSingleFile(onscreenDisplay = new OnScreenDisplay(), Add);

            //overlay elements
            loadComponentSingleFile(direct = new DirectOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(social = new SocialOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(chat = new ChatOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(settings = new MainSettings
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -1
            }, overlayContent.Add);
            loadComponentSingleFile(userProfile = new UserProfileOverlay {
                Depth = -2
            }, mainContent.Add);
            loadComponentSingleFile(beatmapSetOverlay = new BeatmapSetOverlay {
                Depth = -3
            }, mainContent.Add);
            loadComponentSingleFile(musicController = new MusicController
            {
                Depth    = -4,
                Position = new Vector2(0, Toolbar.HEIGHT),
                Anchor   = Anchor.TopRight,
                Origin   = Anchor.TopRight,
            }, overlayContent.Add);

            loadComponentSingleFile(notifications = new NotificationOverlay
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -4,
                Anchor           = Anchor.TopRight,
                Origin           = Anchor.TopRight,
            }, overlayContent.Add);

            loadComponentSingleFile(dialogOverlay = new DialogOverlay
            {
                Depth = -6,
            }, overlayContent.Add);

            forwardLoggedErrorsToNotifications();

            dependencies.Cache(settings);
            dependencies.Cache(onscreenDisplay);
            dependencies.Cache(social);
            dependencies.Cache(direct);
            dependencies.Cache(chat);
            dependencies.Cache(userProfile);
            dependencies.Cache(musicController);
            dependencies.Cache(beatmapSetOverlay);
            dependencies.Cache(notifications);
            dependencies.Cache(dialogOverlay);

            // ensure only one of these overlays are open at once.
            var singleDisplayOverlays = new OverlayContainer[] { chat, social, direct };

            foreach (var overlay in singleDisplayOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }

                    foreach (var c in singleDisplayOverlays)
                    {
                        if (c == overlay)
                        {
                            continue;
                        }
                        c.State = Visibility.Hidden;
                    }
                };
            }

            // eventually informational overlays should be displayed in a stack, but for now let's only allow one to stay open at a time.
            var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile };

            foreach (var overlay in informationalOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }

                    foreach (var c in informationalOverlays)
                    {
                        if (c == overlay)
                        {
                            continue;
                        }
                        c.State = Visibility.Hidden;
                    }
                };
            }

            void updateScreenOffset()
            {
                float offset = 0;

                if (settings.State == Visibility.Visible)
                {
                    offset += ToolbarButton.WIDTH / 2;
                }
                if (notifications.State == Visibility.Visible)
                {
                    offset -= ToolbarButton.WIDTH / 2;
                }

                screenStack.MoveToX(offset, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint);
            }

            settings.StateChanged      += _ => updateScreenOffset();
            notifications.StateChanged += _ => updateScreenOffset();

            notifications.Enabled.BindTo(ShowOverlays);

            ShowOverlays.ValueChanged += show =>
            {
                //central game screen change logic.
                if (!show)
                {
                    hideAllOverlays();
                    musicController.State = Visibility.Hidden;
                    Toolbar.State         = Visibility.Hidden;
                }
                else
                {
                    Toolbar.State = Visibility.Visible;
                }
            };
        }
Beispiel #9
0
        public List(string name, Vector3 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, new Vector4(dimensions.x, dimensions.y, dimensions.z, 0), positionMode, sizeMode, material, overlayContainer, ParentWidget)
        {
            mAutoNameListItemCount       = 0;
            mAutoNameListCount           = 0;
            mListItemHorizontalAlignment = GuiHorizontalAlignment.GHA_CENTER;
            mListItemVerticalAlignment   = GuiVerticalAlignment.GVA_CENTER;

            mWidgetType = Widget.WidgetType.QGUI_TYPE_LIST;

            mDefaultListItemHeight = mParentWidget.getSize(QGuiMetricsMode.QGUI_GMM_ABSOLUTE).y;
            mHighlightMaterial     = getSheet().getDefaultSkin() + ".list.highlight";

            // create highlight container for the list
            mHighlightContainer = createOverlayContainer(mInstanceName + ".HighlightContainer", "");
            mChildrenContainer.AddChildImpl(mHighlightContainer);

            mHighlightPanel = createPanelOverlayElement(mInstanceName + ".HighlightPanel", mPixelDimensions, mHighlightMaterial);
            mHighlightContainer.AddChild(mHighlightPanel);
            mHighlightPanel.Show();

            mItems        = new List <ListItem>();
            mChildLists   = new List <List>();
            OnDeactivate += new DeactivateEventHandler(List_OnDeactivate);
        }
Beispiel #10
0
 public GameEditorScreen()
 {
     editorPanel = null;
 }
        /** Constructor
         *  @param
         *      name The name to be given to the widget (must be unique).
         *  @param
         *      dimensions The relative x Position, y Position, width and height of the widget.
         *  @param
         *      material Ogre material defining the widget image.
         *  @param
         *      overlayContainer associates the internal OverlayElement with a specified zOrder.
         *  @param
         *      ParentWidget parent widget which created this widget.
         */

        public TextCursor(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, dimensions, positionMode, sizeMode, material, overlayContainer, ParentWidget)
        {
            mWidgetType = Widget.WidgetType.QGUI_TYPE_TEXTCURSOR;

            float pixelWidth = GUIManager.Singleton.getRenderWindowWidth() * 0.01f;

            mPixelDimensions.z = Mogre.Math.Ceil(pixelWidth);

            mOverlayElement = createPanelOverlayElement(mInstanceName + "_Background", mPixelDimensions, "");
            mOverlayContainer.AddChild(mOverlayElement);
            mOverlayElement.Show();
            setMaterial(mWidgetMaterial);
        }
        public Image(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, dimensions, positionMode, sizeMode, material, overlayContainer, ParentWidget)
        {
            mWidgetType  = Widget.WidgetType.QGUI_TYPE_IMAGE;
            mMaterialPtr = null;

            mOverlayElement = createPanelOverlayElement(mInstanceName + "_Background", mPixelDimensions, "");
            mOverlayContainer.AddChild(mOverlayElement);
            mOverlayElement.Show();
            setMaterial(mWidgetMaterial);
        }
Beispiel #13
0
        public Button(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, dimensions, positionMode, sizeMode, material, overlayContainer, ParentWidget)
        {
            mWidgetType = Widget.WidgetType.QGUI_TYPE_BUTTON;
            setCharacterHeight(0.5f);

            MaterialManager mm = MaterialManager.Singleton;

            mOverMaterialExists = mm.ResourceExists(mWidgetMaterial + ".over");
            mDownMaterialExists = mm.ResourceExists(mWidgetMaterial + ".down");

            OnMouseEnter      += new MouseEnterEventHandler(Button_OnMouseEnter);
            OnMouseButtonDown += new MouseButtonDownEventHandler(Button_OnMouseButtonDown);
            OnMouseButtonUp   += new MouseButtonUpEventHandler(Button_OnMouseButtonUp);
            OnMouseLeaves     += new MouseLeavesEventHandler(Button_OnMouseLeaves);
        }
Beispiel #14
0
        protected override void CreateGUI()
        {
            base.CreateGUI();
            Vector2 m = GetMargin();
            int     h = (int)GetTextVSpacing();


            guiWindow = mGui.createWindow(new Vector4(m.x,
                                                      m.y, Viewport.ActualWidth / 2,
                                                      Viewport.ActualHeight - m.y - h),
                                          "bgui.window", (int)wt.NONE, LanguageResources.GetString(LanguageKey.HallOfFame));

            Callback cc = new Callback(this); // remember to give your program the BetaGUIListener interface

            float y = 0;

            for (int i = 0; i < highscores.Count; i++)
            {
                OverlayContainer c;


                c = guiWindow.createStaticText(new Vector4(105, 2 * GetTextVSpacing() + y, 100, GetTextVSpacing()), highscores[i].Score.ToString());

                c = guiWindow.createStaticText(new Vector4(5, 2 * GetTextVSpacing() + y, 100, GetTextVSpacing()), highscores[i].Name);

                y += GetTextVSpacing();
                if (i == 2)
                {
                    y += GetTextVSpacing();
                }
                foreach (OverlayElement element in c.GetChildIterator())
                {
                    if (i == 0)
                    {
                        // element.SetParameter("char_height", StringConverter.ToString(50f));
                        element.SetParameter("colour_top", "1.0 0.8 0.0");
                        element.SetParameter("colour_bottom", "0.9 0.7 0.0");
                    }
                    else
                    if (i == 1)
                    {
                        element.SetParameter("colour_top", "0.89 0.89 0.89");
                        element.SetParameter("colour_bottom", "1.0 1.0 0.9");
                    }
                    else
                    if (i == 2)
                    {
                        element.SetParameter("colour_top", "0.71 0.41 0.08");
                        element.SetParameter("colour_bottom", "0.80 0.50 0.25");
                    }
                }
            }

            if (survivalTime > 0)
            {
                y += 3 * GetTextVSpacing();

                OverlayContainer c = guiWindow.createStaticText(new Vector4(5, y, 100, GetTextVSpacing()),
                                                                LanguageResources.GetString(LanguageKey.SurvivalTime));

                foreach (OverlayElement element in c.GetChildIterator())
                {
                    element.SetParameter("colour_top", "0.6 0.1 0.1");
                    element.SetParameter("colour_bottom", "0.6 0.2 0.2");
                }
                c = guiWindow.createStaticText(new Vector4(275, y, 100, GetTextVSpacing()), String.Format("{0:f}s.", survivalTime));
                foreach (OverlayElement element in c.GetChildIterator())
                {
                    element.SetParameter("colour_top", "0.6 0.1 0.1");
                    element.SetParameter("colour_bottom", "0.6 0.2 0.2");
                }
            }

            y += 2 * GetTextVSpacing();

            initButtons(1, 0);
            buttons[0] = guiWindow.createButton(new Vector4(0, y, Viewport.ActualWidth / 2, GetTextVSpacing()), "bgui.button",
                                                LanguageResources.GetString(LanguageKey.OK), cc, 0);
            selectButton(0);
            guiWindow.show();
        }
Beispiel #15
0
        protected override void LoadComplete()
        {
            base.LoadComplete();

            // hook up notifications to components.
            BeatmapManager.PostNotification = n => notifications?.Post(n);
            BeatmapManager.GetStableStorage = GetStorageForStableInstall;

            AddRange(new Drawable[]
            {
                new VolumeControlReceptor
                {
                    RelativeSizeAxes = Axes.Both,
                    ActionRequested  = action => volume.Adjust(action)
                },
                mainContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                overlayContent = new Container {
                    RelativeSizeAxes = Axes.Both, Depth = float.MinValue
                },
            });

            loadComponentSingleFile(screenStack = new Loader(), d =>
            {
                screenStack.ModePushed += screenAdded;
                screenStack.Exited     += screenRemoved;
                mainContent.Add(screenStack);
            });

            loadComponentSingleFile(Toolbar = new Toolbar
            {
                Depth  = -5,
                OnHome = delegate
                {
                    hideAllOverlays();
                    intro?.ChildScreen?.MakeCurrent();
                },
            }, overlayContent.Add);

            loadComponentSingleFile(volume = new VolumeControl(), Add);
            loadComponentSingleFile(new OnScreenDisplay(), Add);

            //overlay elements
            loadComponentSingleFile(direct = new DirectOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(social = new SocialOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(chat = new ChatOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(settings = new MainSettings
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -1
            }, overlayContent.Add);
            loadComponentSingleFile(userProfile = new UserProfileOverlay {
                Depth = -2
            }, mainContent.Add);
            loadComponentSingleFile(beatmapSetOverlay = new BeatmapSetOverlay {
                Depth = -3
            }, mainContent.Add);
            loadComponentSingleFile(musicController = new MusicController
            {
                Depth    = -4,
                Position = new Vector2(0, Toolbar.HEIGHT),
                Anchor   = Anchor.TopRight,
                Origin   = Anchor.TopRight,
            }, overlayContent.Add);

            loadComponentSingleFile(notifications = new NotificationOverlay
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -4,
                Anchor           = Anchor.TopRight,
                Origin           = Anchor.TopRight,
            }, overlayContent.Add);

            loadComponentSingleFile(dialogOverlay = new DialogOverlay
            {
                Depth = -6,
            }, overlayContent.Add);

            Logger.NewEntry += entry =>
            {
                if (entry.Level < LogLevel.Important)
                {
                    return;
                }

                notifications.Post(new SimpleNotification
                {
                    Text = $@"{entry.Level}: {entry.Message}"
                });
            };

            dependencies.Cache(settings);
            dependencies.Cache(social);
            dependencies.Cache(direct);
            dependencies.Cache(chat);
            dependencies.Cache(userProfile);
            dependencies.Cache(musicController);
            dependencies.Cache(beatmapSetOverlay);
            dependencies.Cache(notifications);
            dependencies.Cache(dialogOverlay);

            // ensure only one of these overlays are open at once.
            var singleDisplayOverlays = new OverlayContainer[] { chat, social, direct };

            foreach (var overlay in singleDisplayOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }

                    foreach (var c in singleDisplayOverlays)
                    {
                        if (c == overlay)
                        {
                            continue;
                        }
                        c.State = Visibility.Hidden;
                    }
                };
            }

            // eventually informational overlays should be displayed in a stack, but for now let's only allow one to stay open at a time.
            var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile };

            foreach (var overlay in informationalOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }

                    foreach (var c in informationalOverlays)
                    {
                        if (c == overlay)
                        {
                            continue;
                        }
                        c.State = Visibility.Hidden;
                    }
                };
            }

            void updateScreenOffset()
            {
                float offset = 0;

                if (settings.State == Visibility.Visible)
                {
                    offset += ToolbarButton.WIDTH / 2;
                }
                if (notifications.State == Visibility.Visible)
                {
                    offset -= ToolbarButton.WIDTH / 2;
                }

                screenStack.MoveToX(offset, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint);
            }

            settings.StateChanged      += _ => updateScreenOffset();
            notifications.StateChanged += _ => updateScreenOffset();

            Cursor.State = Visibility.Hidden;
        }
Beispiel #16
0
        /// <summary>
        /// call create4LineDebugOverLay to create an Overlay with 4 text lines at the top left corrner
        /// </summary>
        protected virtual void create4LineDebugOverLay()
        {
            if (mPanel != null)
            {
                return;
            }
            // Create a panel
            // WTF I keep getting segmentfault when i use PanelOverlayElement, at the panel.addChild line.
            //   prob in mono somewhere not reconizeing it derives from container? but HTF?
            //mPanel = OverlayManager.Instance.CreatePanelElement("Status/Panel");
            OverlayElement el = OverlayManager.Instance.CreateOverlayElement("Panel", "DebugStatus/Panel");

            mPanel = new OverlayContainer(OverlayElement.getCPtr(el).Handle, false);

            mPanel.setMetricsMode(GuiMetricsMode.GMM_PIXELS);
            mPanel.setPosition(10, 10);
            mPanel.setDimensions(500, 100);
            //mPanel->setMaterialName("MaterialName"); // Optional background material

            // Create a text area
            mODebugText1 = OverlayManager.Instance.CreateTextAreaElement("DebugStatus/DebugText1");
            mPanel.addChild(mODebugText1);
            mODebugText1.setMetricsMode(GuiMetricsMode.GMM_PIXELS);
            mODebugText1.setPosition(0, 0);
            mODebugText1.setDimensions(100, 100);
            mODebugText1.setCaption("");
            mODebugText1.setCharHeight(16);
            mODebugText1.setFontName("BlueHighway");
            mODebugText1.setColourBottom(Converter.GetColor(0.3f, 0.5f, 0.3f));
            mODebugText1.setColourTop(Converter.GetColor(0.5f, 0.7f, 0.5f));


            // Create a text area
            mODebugText2 = OverlayManager.Instance.CreateTextAreaElement("DebugStatus/DebugText2");
            mODebugText2.setMetricsMode(GuiMetricsMode.GMM_PIXELS);
            mODebugText2.setPosition(0, 20);
            mODebugText2.setDimensions(100, 100);
            mODebugText2.setCaption("");
            mODebugText2.setCharHeight(16);
            mODebugText2.setFontName("BlueHighway");
            mODebugText2.setColourBottom(Converter.GetColor(0.3f, 0.5f, 0.3f));
            mODebugText2.setColourTop(Converter.GetColor(0.5f, 0.7f, 0.5f));
            mPanel.addChild(mODebugText2);


            // Create a text area
            mODebugText3 = OverlayManager.Instance.CreateTextAreaElement("DebugStatus/DebugText3");
            mODebugText3.setMetricsMode(GuiMetricsMode.GMM_PIXELS);
            mODebugText3.setPosition(0, 40);
            mODebugText3.setDimensions(100, 100);
            mODebugText3.setCaption("");
            mODebugText3.setCharHeight(16);
            mODebugText3.setFontName("BlueHighway");
            mODebugText3.setColourBottom(Converter.GetColor(0.3f, 0.5f, 0.3f));
            mODebugText3.setColourTop(Converter.GetColor(0.5f, 0.7f, 0.5f));
            mPanel.addChild(mODebugText3);


            // Create a text area
            mODebugText4 = OverlayManager.Instance.CreateTextAreaElement("DebugStatus/DebugText4");
            mODebugText4.setMetricsMode(GuiMetricsMode.GMM_PIXELS);
            mODebugText4.setPosition(0, 60);
            mODebugText4.setDimensions(100, 100);
            mODebugText4.setCaption("");
            mODebugText4.setCharHeight(16);
            mODebugText4.setFontName("BlueHighway");
            mODebugText4.setColourBottom(Converter.GetColor(0.3f, 0.5f, 0.3f));
            mODebugText4.setColourTop(Converter.GetColor(0.5f, 0.7f, 0.5f));
            mPanel.addChild(mODebugText4);

            // Create an overlay, and add the panel
            mOverlay = OverlayManager.Instance.create("Status/Overlay");
            mOverlay.add2D(mPanel);
        }
Beispiel #17
0
        private bool initScreen(int i)
        {
            MaterialPtr      overlayMaterial = null;
            TextureUnitState unit;

            animation           = null;
            currentMaterialName = null;
            if (isScreenAnAd[i - 1]) // poczatkowo i = 1
            {
                if (Mogre.Math.RangeRandom(0, 1) < (1 - C_INTRO_AD_PROBABILITY))
                {
                    return(false);
                }


                //if(adIds.Count == 0) return false;
                AdManager.AdStatus status = AdManager.Singleton.GetAd(C_AD_ZONE, 1.0f, out currentAd);

                //AdManager.AdStatus status = AdManager.Singleton.GatherAsyncResult(adIds.Dequeue(), AdManager.C_AD_DOWNLOAD_TIMEOUT, out currentAd);
                if (status == AdManager.AdStatus.OK)
                {
                    // pobieranie OK.
                    currentMaterialName = C_AD_MATERIAL;
                    string path = AdManager.Singleton.LoadAdTexture(currentAd);
                    if (path == null)
                    {
                        return(false);
                    }
                    showAdText(viewport);



                    overlayMaterial = MaterialManager.Singleton.GetByName(currentMaterialName);
                    overlayMaterial.Load();
                    unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0);

                    unit.SetTextureName(path);
                    AdManager.Singleton.RegisterImpression(currentAd);

                    //   int count;
                    //   count = adAction.Get_Ad_Impression_Counter(currentAd.id);
                    //    Console.WriteLine("Pobrañ: " + count);
                }
                else
                {
                    hideAdText();
                    return(false);
                }
            }
            else
            {
                string matName = EngineConfig.IsEnhancedVersion ? C_TEXTURE_NAME_ENHANCED : C_TEXTURE_NAME;

                currentMaterialName = matName + currentScreen;
                overlayMaterial     = MaterialManager.Singleton.GetByName(currentMaterialName);
                unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0);


                hideAdText();
            }

            if (i == 1)
            {
                if (EngineConfig.SoundEnabled)
                {
                    if (ravenSound == null || !ravenSound.HasSound())
                    {
                        ravenSound = SoundManager3D.Instance.CreateAmbientSound(SoundManager3D.C_RAVEN, "ravenSound", false, false);                                               // destroyed together with SoundManager3D singleton
                    }
                    ravenSound.Play();
                }
            }

            textureDimensions = unit.GetTextureDimensions();
            //    Console.WriteLine(textureDimensions.first);

            PointD scale = new PointD(1, 1);
            // skaluj overlay tak aby tekstury nie zmienia³y swoich proporcji
            float prop = 1.0f;

            if (isScreenAnAd[currentScreen - 1])
            {
                // reklamy maja zachowac oryginalna rozdzielczosc
                scale = AdSizeUtils.ScaleAdToDisplay(textureDimensions, new PointD(Viewport.ActualWidth, Viewport.ActualHeight), true);
                scale = 0.65f * scale;
            }
            else
            {
                textureDimensions = new Pair <uint, uint>(1280, 1024);
                //	scale = AdSizeUtils.ScaleAdToDisplay(textureDimensions, new PointD(Viewport.ActualWidth, Viewport.ActualHeight), false);
                prop = 1.0f / ((1.0f * textureDimensions.first / textureDimensions.second) / (1.0f * Viewport.ActualWidth / Viewport.ActualHeight));

                // wychodzimy poza ekran
                if (scale.Y * prop > 1.0f)
                {
                    float scalingFactor = 1.0f / (scale.Y * prop);
                    scale.X *= scalingFactor; scale.Y *= scalingFactor;
                }

                if (scale.X * prop > 1.0f)
                {
                    float scalingFactor = 1.0f / (scale.X * prop);
                    scale.X *= scalingFactor; scale.Y *= scalingFactor;
                }

                //   scale.X *= 0.5f; scale.Y *= 0.5f;
            }
            overlay.SetScale(scale.X, scale.Y * prop);



            animation =
                new EffectTextureAnimation(null, unit, screenTimes[i - 1], "IntroAnimation",
                                           VisibilityNodeAnimation.VisibilityType.VISIBLE,
                                           VisibilityNodeAnimation.VisibilityType.VISIBLE);

            animation.Enabled = true;
            animation.Looped  = true;
            OverlayContainer container = overlay.GetChild("Wof/IntroScreen");

            container.MaterialName = currentMaterialName;

            EffectsManager.Singleton.AddCustomEffect(animation);
            lastChange = DateTime.Now;
            return(true);
        }
        /** Constructor
         *  @param
         *      name The name to be given to the widget (must be unique).
         *  @param
         *      dimensions The x Position, y Position, width, and height of the widget.
         *              @param
         *                      positionMode The GuiMetricsMode for the values given for the position. (absolute/relative/pixel)
         *              @param
         *                      sizeMode The GuiMetricsMode for the values given for the size. (absolute/relative/pixel)
         *              @param
         *                      material Ogre material defining the widget image.
         *              @param
         *                      overlayContainer associates the internal OverlayElement with a specified zOrder.
         *              @param
         *                      ParentWidget parent widget which created this widget.
         */
        public TextBox(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget)
            : base(name, dimensions, positionMode, sizeMode, material, overlayContainer, ParentWidget)
        {
            mWidgetType = Widget.WidgetType.QGUI_TYPE_TEXTBOX;

            mMaskUserInput         = false;
            mBackSpaceDown         = false;
            mBackSpaceTimer        = 0.0f;
            mDeleteDown            = false;
            mDeleteTimer           = 0.0f;
            mLeftArrowDown         = false;
            mRightArrowDown        = false;
            mMoveCursorTimer       = 0.0f;
            mCursorVisibilityTimer = 0.0f;
            mReadOnly  = false;
            mInputMode = false;


            // Border Overlay gives us ability to assign material to TextBox border and Panel separately.
            mOverlayElement = createPanelOverlayElement(mInstanceName + ".Background", mPixelDimensions, "");
            mOverlayContainer.AddChild(mOverlayElement);
            mOverlayElement.Show();
            setMaterial(mWidgetMaterial);

            mCharacterHeight = 0.75f;
            Mogre.Vector3 textDimensions = new Mogre.Vector3(0, 0, mCharacterHeight);
            // Label has no material, since it directly overlaps the textbox overlay element
            mTextWidget = new Text(mInstanceName + ".Text", textDimensions, QGuiMetricsMode.QGUI_GMM_RELATIVE, QGuiMetricsMode.QGUI_GMM_RELATIVE, mChildrenContainer, this);
            mTextWidget.setTruncateMode(Text.TruncateMode.LEFT);
            mTextWidget.setTruncationFeedback("");
            mTextWidget.setZOrderOffset(1);
            _addChildWidget(mTextWidget);

            mHorizontalAlignment = GuiHorizontalAlignment.GHA_LEFT;
            mVerticalAlignment   = GuiVerticalAlignment.GVA_CENTER;

            alignText(mHorizontalAlignment, mVerticalAlignment);

            OnDeactivate      += new DeactivateEventHandler(TextBox_OnDeactivate);
            OnCharacter       += new CharacterEventHandler(TextBox_OnCharacter);
            OnKeyDown         += new KeyDownEventHandler(TextBox_OnKeyDown);
            OnKeyUp           += new KeyUpEventHandler(TextBox_OnKeyUp);
            OnMouseButtonDown += new MouseButtonDownEventHandler(TextBox_OnMouseButtonDown);
            OnTimeElapsed     += new TimeElapsedHandler(TextBox_OnTimeElapsed);
        }
Beispiel #19
0
        private void Initalize()
        {
            // Create the font resources
            // add the path to your resources.cfg
            // for example:
            // Default   | ../../../Media/fonts     | ../../../Media/fonts.zip
            Load("LiberationSans-Regular.ttf", Font.Default, 10);
            Load("LiberationSans-Bold.ttf", Font.DefaultBold, 15);
            Load("LiberationSans-Italic.ttf", Font.DefaultItalic, 10);
            //Load("LiberationMono-Regular.ttf", Font.Console, 26);

            // Create the overlay panel
            _OverlayPanel = OverlayManager.Singleton.CreateOverlayElement("Panel", new Guid().ToString()) as OverlayContainer;
            _OverlayPanel.MetricsMode = GuiMetricsMode.GMM_PIXELS;
            _OverlayPanel.SetPosition(0, 0);
            _OverlayPanel.SetDimensions(300, 120);

            _TextOverlay = OverlayManager.Singleton.Create(new Guid().ToString());

            _TextOverlay.Add2D(_OverlayPanel);
        }
Beispiel #20
0
        private bool initScreen(int i)
        {
            MaterialPtr      overlayMaterial = null;
            TextureUnitState unit            = null;

            animation           = null;
            currentMaterialName = null;
            if (isScreenAnAd[i - 1]) // poczatkowo i = 1
            {
                // pobierz i ustaw na bie¿ac¹
                AdManager.AdStatus status = AdManager.Singleton.GetAd(C_AD_ZONE, 1.0f, out currentAd);

                if (status == AdManager.AdStatus.OK)
                {
                    // pobieranie OK.
                    currentMaterialName = C_AD_MATERIAL;
                    string path = AdManager.Singleton.LoadAdTexture(currentAd);
                    if (path == null)
                    {
                        return(false);
                    }
                    showAdText(viewport);


                    overlayMaterial = MaterialManager.Singleton.GetByName(currentMaterialName);
                    overlayMaterial.Load();
                    unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0);

                    unit.SetTextureName(path);
                    AdManager.Singleton.RegisterImpression(currentAd);

                    //   int count;
                    //   count = adAction.Get_Ad_Impression_Counter(currentAd.id);
                    //    Console.WriteLine("Pobrañ: " + count);
                }
                else
                {
                    hideAdText();
                    return(false);
                }
            }
            else
            {
                currentMaterialName = C_TEXTURE_NAME + currentScreen;
                overlayMaterial     = MaterialManager.Singleton.GetByName(currentMaterialName);
                overlayMaterial.Load();
                unit = overlayMaterial.GetBestTechnique().GetPass(0).GetTextureUnitState(0);
                hideAdText();
            }



            textureDimensions = unit.GetTextureDimensions();
            PointD scale = new PointD(1, 1);
            // skaluj overlay tak aby tekstury nie zmienia³y swoich proporcji
            float prop = 1.0f;

            if (isScreenAnAd[currentScreen - 1])
            {
                // reklamy maja zachowac oryginalna rozdzielczosc
                scale = AdSizeUtils.ScaleAdToDisplay(textureDimensions, new PointD(Viewport.ActualWidth, Viewport.ActualHeight), true);
                scale = 0.65f * scale;
            }
            else
            {
                prop = 1.0f / ((1.0f * textureDimensions.first / textureDimensions.second) / (1.0f * Viewport.ActualWidth / Viewport.ActualHeight));
                // wychodzimy poza ekran
                if (scale.Y * prop > 1.0f)
                {
                    float scalingFactor = 1.0f / (scale.Y * prop);
                    scale.X *= scalingFactor; scale.Y *= scalingFactor;
                }

                if (scale.X * prop > 1.0f)
                {
                    float scalingFactor = 1.0f / (scale.X * prop);
                    scale.X *= scalingFactor; scale.Y *= scalingFactor;
                }
            }
            overlay.SetScale(scale.X, scale.Y * prop);



            animation =
                new EffectTextureAnimation(null, unit, screenTimes[i - 1], "QuitAnimation",
                                           VisibilityNodeAnimation.VisibilityType.VISIBLE,
                                           VisibilityNodeAnimation.VisibilityType.VISIBLE);

            animation.Enabled = true;
            animation.Looped  = true;
            OverlayContainer container = overlay.GetChild("Wof/QuitScreen");

            container.MaterialName = currentMaterialName;

            EffectsManager.Singleton.AddCustomEffect(animation);
            lastChange = DateTime.Now;
            return(true);
        }
Beispiel #21
0
 void IOverlayManager.ShowBlockingOverlay(OverlayContainer overlay)
 => Schedule(() => Stack.FadeColour(OsuColour.Gray(0.5f), 500, Easing.OutQuint));
Beispiel #22
0
        /** Constructor
         *  @param
         *      name The name to be given to the widget (must be unique).
         *  @param
         *      dimensions The x Position, y Position, width, and height of the widget.
         *  @param
         *      positionMode The GuiMetricsMode for the values given for the position. (absolute/relative/pixel)
         *  @param
         *      sizeMode The GuiMetricsMode for the values given for the size. (absolute/relative/pixel)
         *  @param
         *      material Ogre material defining the widget image.
         *  @param
         *      overlayContainer associates the internal OverlayElement with a specified zOrder.
         *  @param
         *      parentWidget parent widget which created this widget.
         */
        public Panel(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget parentWidget)
            : base(name, dimensions, positionMode, sizeMode, material, overlayContainer, parentWidget)
        {
            mAutoNameWidgetCounter = 0;
            mNumButtons            = 0;
            mNumComboBoxes         = 0;
            mNumImages             = 0;
            mNumLabels             = 0;
            mNumLists         = 0;
            mNumMenus         = 0;
            mNumNStateButtons = 0;
            mNumPanels        = 0;
            mNumProgressBars  = 0;
            mNumTextBoxes     = 0;
            mNumTrackBars     = 0;

            mWidgetType = WidgetType.QGUI_TYPE_PANEL;
            mZOrderValues.Clear();

            if (overlayContainer == null)
            {
                mOverlayContainer = createOverlayContainer(mInstanceName + ".OverlayContainer", "");
                mOverlayContainer.AddChildImpl(mChildrenContainer);

                mOverlayContainer.Show();
                mChildrenContainer.Show();
            }

            mOverlayElement = createPanelOverlayElement(mInstanceName + ".Background", mPixelDimensions, "");
            mOverlayContainer.AddChild(mOverlayElement);
            mOverlayElement.Show();
            setMaterial(mWidgetMaterial);

            OnActivate   += new ActivateEventHandler(Panel_OnActivate);
            OnDeactivate += new DeactivateEventHandler(Panel_OnDeactivate);
        }
Beispiel #23
0
 void IOverlayManager.HideBlockingOverlay(OverlayContainer overlay)
 => Schedule(() => Stack.FadeColour(Colour4.White, 500, Easing.OutQuint));
        public ListItem(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, dimensions, positionMode, sizeMode, "", overlayContainer, ParentWidget)
        {
            mImage      = null;
            mButton     = null;
            mWidgetType = Widget.WidgetType.QGUI_TYPE_LISTITEM;
            setCharacterHeight(1.0f);

            OnDeactivate    += new DeactivateEventHandler(ListItem_OnDeactivate);
            OnMouseEnter    += new MouseEnterEventHandler(ListItem_OnMouseEnter);
            OnMouseButtonUp += new MouseButtonUpEventHandler(ListItem_OnMouseButtonUp);
            OnMouseLeaves   += new MouseLeavesEventHandler(ListItem_OnMouseLeaves);
        }
Beispiel #25
0
        // in the blocking methods below it is important to be careful about threading (e.g. use `Expire()` rather than `Remove()`, and schedule transforms),
        // because in the worst case the clean-up methods could be called from async disposal.

        IDisposable IOverlayManager.RegisterBlockingOverlay(OverlayContainer overlayContainer)
        {
            overlayContent.Add(overlayContainer);
            return(new InvokeOnDisposal(() => overlayContainer.Expire()));
        }
Beispiel #26
0
 public void RemoveBlockingOverlay(OverlayContainer overlay)
 {
     visibleBlockingOverlays.Remove(overlay);
     updateBlockingOverlayFade();
 }
Beispiel #27
0
        public MenuList(string name, Vector4 dimensions, QGuiMetricsMode positionMode, QGuiMetricsMode sizeMode, string material, OverlayContainer overlayContainer, Widget ParentWidget) : base(name, dimensions, positionMode, sizeMode, material + ".button", overlayContainer, ParentWidget)
        {
            mWidgetType = Widget.WidgetType.QGUI_TYPE_MENULIST;
            setCharacterHeight(0.8f);

            // create list
            mList = new List(mInstanceName + ".List", new Vector3(0f, 1.0f, 1.0f), QGuiMetricsMode.QGUI_GMM_RELATIVE, QGuiMetricsMode.QGUI_GMM_RELATIVE, material + ".list", getSheet().getMenuContainer(), this);
            mList.setCharacterHeight(mCharacterHeight);
            mList.setFont(mFont);
            mList.setTextColor(mTextTopColor, mTextBotColor);
            mList.hide();
            // give the list the same zOrder as the button representing this menulist.
            mList.setZOrderOffset(mZOrderOffset, false);
            _addChildWidget(mList);

            OnDeactivate += new DeactivateEventHandler(MenuList_OnDeactivate);
        }
Beispiel #28
0
 public void RemoveBlockingOverlay(OverlayContainer overlay) => Schedule(() =>
 {
     visibleBlockingOverlays.Remove(overlay);
     updateBlockingOverlayFade();
 });
Beispiel #29
0
 public void AddBlockingOverlay(OverlayContainer overlay)
 {
     if (!visibleBlockingOverlays.Contains(overlay))
         visibleBlockingOverlays.Add(overlay);
     updateBlockingOverlayFade();
 }
Beispiel #30
0
        protected override void LoadComplete()
        {
            // this needs to be cached before base.LoadComplete as it is used by MenuCursorContainer.
            dependencies.Cache(screenshotManager = new ScreenshotManager());

            base.LoadComplete();

            // The next time this is updated is in UpdateAfterChildren, which occurs too late and results
            // in the cursor being shown for a few frames during the intro.
            // This prevents the cursor from showing until we have a screen with CursorVisible = true
            MenuCursorContainer.CanShowCursor = currentScreen?.CursorVisible ?? false;

            // hook up notifications to components.
            SkinManager.PostNotification    = n => notifications?.Post(n);
            BeatmapManager.PostNotification = n => notifications?.Post(n);

            BeatmapManager.GetStableStorage = GetStorageForStableInstall;

            AddRange(new Drawable[]
            {
                new VolumeControlReceptor
                {
                    RelativeSizeAxes      = Axes.Both,
                    ActionRequested       = action => volume.Adjust(action),
                    ScrollActionRequested = (action, amount, isPrecise) => volume.Adjust(action, amount, isPrecise),
                },
                mainContent = new Container {
                    RelativeSizeAxes = Axes.Both
                },
                overlayContent = new Container {
                    RelativeSizeAxes = Axes.Both, Depth = float.MinValue
                },
            });

            loadComponentSingleFile(screenStack = new Loader(), d =>
            {
                screenStack.ModePushed += screenAdded;
                screenStack.Exited     += screenRemoved;
                mainContent.Add(screenStack);
            });

            loadComponentSingleFile(Toolbar = new Toolbar
            {
                Depth  = -5,
                OnHome = delegate
                {
                    CloseAllOverlays(false);
                    intro?.ChildScreen?.MakeCurrent();
                },
            }, overlayContent.Add);

            loadComponentSingleFile(volume          = new VolumeOverlay(), overlayContent.Add);
            loadComponentSingleFile(onscreenDisplay = new OnScreenDisplay(), Add);

            loadComponentSingleFile(screenshotManager, Add);

            //overlay elements
            loadComponentSingleFile(direct = new DirectOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(social = new SocialOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(chat = new ChatOverlay {
                Depth = -1
            }, mainContent.Add);
            loadComponentSingleFile(settings = new MainSettings
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -1
            }, overlayContent.Add);
            loadComponentSingleFile(userProfile = new UserProfileOverlay {
                Depth = -2
            }, mainContent.Add);
            loadComponentSingleFile(beatmapSetOverlay = new BeatmapSetOverlay {
                Depth = -3
            }, mainContent.Add);
            loadComponentSingleFile(musicController = new MusicController
            {
                Depth    = -4,
                Position = new Vector2(0, Toolbar.HEIGHT),
                Anchor   = Anchor.TopRight,
                Origin   = Anchor.TopRight,
            }, overlayContent.Add);

            loadComponentSingleFile(notifications = new NotificationOverlay
            {
                GetToolbarHeight = () => ToolbarOffset,
                Depth            = -4,
                Anchor           = Anchor.TopRight,
                Origin           = Anchor.TopRight,
            }, overlayContent.Add);

            loadComponentSingleFile(dialogOverlay = new DialogOverlay
            {
                Depth = -6,
            }, overlayContent.Add);

            dependencies.Cache(settings);
            dependencies.Cache(onscreenDisplay);
            dependencies.Cache(social);
            dependencies.Cache(direct);
            dependencies.Cache(chat);
            dependencies.Cache(userProfile);
            dependencies.Cache(musicController);
            dependencies.Cache(beatmapSetOverlay);
            dependencies.Cache(notifications);
            dependencies.Cache(dialogOverlay);

            var singleDisplaySideOverlays = new OverlayContainer[] { settings, notifications };

            overlays.AddRange(singleDisplaySideOverlays);

            foreach (var overlay in singleDisplaySideOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }
                    singleDisplaySideOverlays.Where(o => o != overlay).ForEach(o => o.Hide());
                };
            }

            // eventually informational overlays should be displayed in a stack, but for now let's only allow one to stay open at a time.
            var informationalOverlays = new OverlayContainer[] { beatmapSetOverlay, userProfile };

            overlays.AddRange(informationalOverlays);

            foreach (var overlay in informationalOverlays)
            {
                overlay.StateChanged += state =>
                {
                    if (state == Visibility.Hidden)
                    {
                        return;
                    }
                    informationalOverlays.Where(o => o != overlay).ForEach(o => o.Hide());
                };
            }

            // ensure only one of these overlays are open at once.
            var singleDisplayOverlays = new OverlayContainer[] { chat, social, direct };

            overlays.AddRange(singleDisplayOverlays);

            foreach (var overlay in singleDisplayOverlays)
            {
                overlay.StateChanged += state =>
                {
                    // informational overlays should be dismissed on a show or hide of a full overlay.
                    informationalOverlays.ForEach(o => o.Hide());

                    if (state == Visibility.Hidden)
                    {
                        return;
                    }

                    singleDisplayOverlays.Where(o => o != overlay).ForEach(o => o.Hide());
                };
            }

            OverlayActivationMode.ValueChanged += v =>
            {
                if (v != OverlayActivation.All)
                {
                    CloseAllOverlays();
                }
            };

            void updateScreenOffset()
            {
                float offset = 0;

                if (settings.State == Visibility.Visible)
                {
                    offset += ToolbarButton.WIDTH / 2;
                }
                if (notifications.State == Visibility.Visible)
                {
                    offset -= ToolbarButton.WIDTH / 2;
                }

                screenStack.MoveToX(offset, SettingsOverlay.TRANSITION_LENGTH, Easing.OutQuint);
            }

            settings.StateChanged      += _ => updateScreenOffset();
            notifications.StateChanged += _ => updateScreenOffset();
        }
Beispiel #31
0
        public override void Run()
        {
            type      = EditType.EditAIMeshMode;
            state     = EditState.Free;
            operation = EditOperation.None;

            float top = MARGIN_TOP;

            editorPanel = OverlayManager.Singleton.CreateOverlayElementFromTemplate("EditorPanel", "BorderPanel", "editorArea") as OverlayContainer;

            lbGeneral = GameManager.Instance.trayMgr.createStaticText(TrayLocation.TL_NONE, "lbGeneral", "General", ColourValue.Black);
            lbGeneral.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            lbGeneral.Left             = 0.06f;
            lbGeneral.Top = top;
            top           = lbGeneral.Top + lbGeneral.Height;
            editorPanel.AddChild(lbGeneral.getOverlayElement());

            btnSave = GameManager.Instance.trayMgr.createButton(TrayLocation.TL_NONE, "btnSave", "Save", 150);
            btnSave.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            btnSave.Left             = 0.06f;
            btnSave.Top      = 0.02f + top;
            btnSave.OnClick += BtnSave_OnClick;
            top              = btnSave.Top + btnSave.Height;
            editorPanel.AddChild(btnSave.getOverlayElement());

            btnClose = GameManager.Instance.trayMgr.createButton(TrayLocation.TL_NONE, "btnClose", "Close", 150);
            btnClose.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            btnClose.Left             = 0.06f;
            btnClose.Top      = 0.02f + top;
            btnClose.OnClick += BtnClose_OnClick;
            top = btnClose.Top + btnClose.Height;
            editorPanel.AddChild(btnClose.getOverlayElement());

            horline             = OverlayManager.Singleton.CreateOverlayElementFromTemplate("AMGE/UI/HorizalLine", "Panel", "horline") as PanelOverlayElement;
            horline.MetricsMode = GuiMetricsMode.GMM_RELATIVE;
            horline.Left        = 0.01f;
            horline.Width       = 0.28f;
            horline.Top         = 0.02f + top;
            top = horline.Top + horline.Height;
            editorPanel.AddChild(horline);

            lbAIMesh = GameManager.Instance.trayMgr.createStaticText(TrayLocation.TL_NONE, "lbAIMesh", "AIMesh", ColourValue.Black);
            lbAIMesh.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            lbAIMesh.Left             = 0.06f;
            lbAIMesh.Top = 0.02f + top;
            top          = lbAIMesh.Top + lbAIMesh.Height;
            editorPanel.AddChild(lbAIMesh.getOverlayElement());

            btnAIMeshCreateVertex = GameManager.Instance.trayMgr.createButton(TrayLocation.TL_NONE, "btnCreateVertex", "Create Vertex", 150);
            btnAIMeshCreateVertex.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            btnAIMeshCreateVertex.Left             = 0.06f;
            btnAIMeshCreateVertex.Top      = 0.02f + top;
            btnAIMeshCreateVertex.OnClick += BtnAIMeshCreateVertex_OnClick;
            top = btnAIMeshCreateVertex.Top + btnAIMeshCreateVertex.Height;
            editorPanel.AddChild(btnAIMeshCreateVertex.getOverlayElement());

            btnAIMeshCreateLine = GameManager.Instance.trayMgr.createButton(TrayLocation.TL_NONE, "btnCreateLine", "Create Line", 150);
            btnAIMeshCreateLine.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            btnAIMeshCreateLine.Left             = 0.06f;
            btnAIMeshCreateLine.Top      = 0.02f + top;
            btnAIMeshCreateLine.OnClick += BtnAIMeshCreateLine_OnClick;
            top = btnAIMeshCreateLine.Top + btnAIMeshCreateLine.Height;
            editorPanel.AddChild(btnAIMeshCreateLine.getOverlayElement());

            horline2             = OverlayManager.Singleton.CreateOverlayElementFromTemplate("AMGE/UI/HorizalLine", "Panel", "horline2") as PanelOverlayElement;
            horline2.MetricsMode = GuiMetricsMode.GMM_RELATIVE;
            horline2.Left        = 0.01f;
            horline2.Width       = 0.28f;
            horline2.Top         = 0.02f + top;
            top = horline2.Top + horline2.Height;
            editorPanel.AddChild(horline2);

            lbObjects = GameManager.Instance.trayMgr.createStaticText(TrayLocation.TL_NONE, "lbObjects", "Objects", ColourValue.Black);
            lbObjects.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            lbObjects.Left             = 0.06f;
            lbObjects.Top = 0.02f + top;
            top           = lbObjects.Top + lbObjects.Height;
            editorPanel.AddChild(lbObjects.getOverlayElement());

            lsvObjects = GameManager.Instance.trayMgr.createListView(TrayLocation.TL_NONE, "lsvObjects", 0.3f, 0.22f, new List <string>()
            {
                "ObjectName"
            });
            lsvObjects.Left   = 0.03f;
            lsvObjects.Width  = 0.24f;
            lsvObjects.Height = 0.3f;
            lsvObjects.Top    = 0.02f + top;
            top = lsvObjects.Top + lsvObjects.Height;
            editorPanel.AddChild(lsvObjects.getOverlayElement());

            btnAddObject = GameManager.Instance.trayMgr.createButton(TrayLocation.TL_NONE, "btnAddObject", "Add Object", 100);
            btnAddObject.WidgetMetricMode = GuiMetricsMode.GMM_RELATIVE;
            btnAddObject.Left             = 0.14f;
            btnAddObject.Top      = 0.02f + top;
            btnAddObject.OnClick += BtnAddObject_OnClick;
            top = btnAddObject.Top + btnAddObject.Height;
            editorPanel.AddChild(btnAddObject.getOverlayElement());

            GameManager.Instance.trayMgr.getTraysLayer().Add2D(editorPanel);
        }
Beispiel #32
0
        public OverlayGUI()
        {
            //setup the colours
            top = new ColourValue(0.9f, 0.9f, 0.9f);
            bot = new ColourValue(0.8f, 0.8f, 0.8f);
            seltop = new ColourValue(0.9f, 0.7f, 0.7f);
            selbot = new ColourValue(0.8f, 0.6f, 0.6f);

            //Overlay
            overlayManager = OverlayManager.Singleton;
            // Create a panel
            panel = (OverlayContainer)overlayManager.CreateOverlayElement("Panel", "PanelName");
            panel.MetricsMode = GuiMetricsMode.GMM_PIXELS;
            panel.SetPosition(0, 0);
            panel.SetDimensions(Program.Instance.rWindow.Width, Program.Instance.rWindow.Height);

            panel.MaterialName = "fsO/Blank";  // Optional background material

            // Create a text area
            messageArea = (TextAreaOverlayElement)overlayManager.CreateOverlayElement("TextArea", "TextArea");
            messageArea.MetricsMode = GuiMetricsMode.GMM_PIXELS;
            messageArea.SetPosition(0, 0);
            messageArea.SetDimensions(Program.Instance.rWindow.Width, 100);
            messageArea.CharHeight = 24;
            messageArea.FontName = "damn";
            messageArea.ColourTop = top;
            messageArea.ColourBottom = bot;
            messageArea.Caption = "";

            // Status text area
            statArea = (TextAreaOverlayElement)overlayManager.CreateOverlayElement("TextArea", "StatTextArea");
            statArea.MetricsMode = GuiMetricsMode.GMM_PIXELS;
            statArea.SetPosition(0, Program.Instance.rWindow.Height - 50);
            statArea.SetDimensions(Program.Instance.rWindow.Width, 50);
            statArea.CharHeight = 24;
            statArea.FontName = "damn";
            statArea.ColourTop = top;
            statArea.ColourBottom = bot;
            statArea.Caption = "this is a test" + Environment.NewLine + "This is the test's second line";

            //Menus Text Areas
            titleArea = (TextAreaOverlayElement)overlayManager.CreateOverlayElement("TextArea", "TitleTextArea");
            titleArea.MetricsMode = GuiMetricsMode.GMM_PIXELS;
            titleArea.SetPosition(64, 16);
            titleArea.SetDimensions(Program.Instance.rWindow.Width, 32);
            titleArea.CharHeight = 32;
            titleArea.FontName = "damn";
            titleArea.ColourTop = top;
            titleArea.ColourBottom = bot;
            titleArea.Caption = "Title";

            for (int i = 0; i < 10; i++)
            {
                optionAreas[i] = (TextAreaOverlayElement)overlayManager.CreateOverlayElement("TextArea", i+"TextArea");
                optionAreas[i].MetricsMode = GuiMetricsMode.GMM_PIXELS;
                optionAreas[i].SetPosition(32, 64 + (i*26));
                optionAreas[i].SetDimensions(Program.Instance.rWindow.Width, 24);
                optionAreas[i].CharHeight = 24;
                optionAreas[i].FontName = "damn";
                optionAreas[i].ColourTop = top;
                optionAreas[i].ColourBottom = bot;
                optionAreas[i].Caption = "Option " + i.ToString();
            }

            maxOptions = 10;

            // Create an overlay, and add the panel
            overlay = overlayManager.Create("OverlayName");

            overlay.Add2D(panel);
            // Add the text area to the panel
            panel.AddChild(messageArea);
            panel.AddChild(titleArea);
            panel.AddChild(statArea);
            for (int i = 0; i < 10; i++)
            {
                panel.AddChild(optionAreas[i]);
            }

            // Show the overlay
            overlay.Show();
        }
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(OverlayContainer obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }