Exemple #1
0
    /// <summary>
    /// Widgets can call this function to deactivate.
    /// </summary>
    public static void DeactivateWidget(ActiveWidget widgetToDeactivate)
    {
        if (widgetToDeactivate == currentActive)
        {
            if (SettingsManager.Instance != null)
            {
                if (!SettingsManager.Instance.bm_GameObject.activeSelf && SettingsManager.Instance.wc_Settings.bm_Enabled)
                {
                    SettingsManager.Instance.bm_GameObject.SetActive(true);
                }
                if (!SettingsManager.Instance.sl_GameObject.activeSelf && SettingsManager.Instance.wc_Settings.sl_Enabled)
                {
                    SettingsManager.Instance.sl_GameObject.SetActive(true);
                }
                if (!SettingsManager.Instance.mm_GameObject.activeSelf && SettingsManager.Instance.wc_Settings.mm_Enabled)
                {
                    SettingsManager.Instance.mm_GameObject.SetActive(true);
                }
            }

            if (WidgetTransitions.Instance != null &&
                currentActive != ActiveWidget.CharacterDrop &&
                currentActive != ActiveWidget.WidgetConfig)
            {
                WidgetTransitions.Instance.SlideWidgetConfig();
            }

            currentActive = ActiveWidget.None;
        }
    }
Exemple #2
0
    /// <summary>
    /// Widgets can call this function to activate.
    /// Returns true if
    /// </summary>
    public static bool ActivateWidget(ActiveWidget widgetToActivate)
    {
        if (currentActive == ActiveWidget.None)
        {
            // these two if statements will make sure that the widgets that are not being activated are disabled
            if (widgetToActivate != ActiveWidget.Bookmark)
            {
                SettingsManager.Instance.bm_GameObject.SetActive(false);
            }
            if (widgetToActivate != ActiveWidget.Sunlight)
            {
                SettingsManager.Instance.sl_GameObject.SetActive(false);
            }

            // moves the widget config object off the screen
            if (WidgetTransitions.Instance != null &&
                widgetToActivate != ActiveWidget.CharacterDrop &&
                widgetToActivate != ActiveWidget.WidgetConfig)
            {
                WidgetTransitions.Instance.SlideWidgetConfig();
            }

            // since the minimap doesnt use an active state, it will always be disabled
            SettingsManager.Instance.mm_GameObject.SetActive(false);
            // set the reference for the currently active widget
            currentActive = widgetToActivate;
            return(true);
        }

        // there was already an active widget, so return false
        return(false);
    }
 public void CloseWidget()
 {
     if (ActiveWidget != null)
     {
         HudMain.EnableCursor = false;
         summaryLabel.Visible = true;
         ActiveWidget.Reset();
         ActiveWidget.Visible = false;
         ActiveWidget         = null;
     }
 }
Exemple #4
0
        private void ProcessMouseDown(MouseButton button)
        {
            if (HoveredWidget == null)
            {
                InputFocusedWidget = null;
                return;
            }

            _refresh = true;

            HoveredWidget.Active = true;
            ActiveWidget         = HoveredWidget;
            ActiveWidget.ProcessMouseDown(button, _mouseX - ActiveWidget.DrawX, _mouseY - ActiveWidget.DrawY);

            if (button == MouseButton.Left)
            {
                if (ActiveWidget.Toggable && ActiveWidget.ToggleGroup == null)
                {
                    ActiveWidget.On = !ActiveWidget.On;
                }
                else if (ActiveWidget.Toggable && ActiveWidget.ToggleGroup != null)
                {
                    ActiveWidget.On = true;
                    UpdateToggleGroup(ActiveWidget);
                }

                if (InputFocusedWidget != null)
                {
                    InputFocusedWidget.HasInputFocus = false;
                }

                if (ActiveWidget.CanHaveInputFocus)
                {
                    InputFocusedWidget = ActiveWidget;
                    InputFocusedWidget.HasInputFocus = true;
                }

                if (ActiveWidget.Draggable)
                {
                    ActiveWidget.Dragging = true;
                }
            }

            _lastMouseX = _mouseX;
            _lastMouseY = _mouseY;
        }
Exemple #5
0
        private void ProcessMouseUp(MouseButton button)
        {
            if (ActiveWidget == null)
            {
                return;
            }

            if (ActiveWidget.Draggable)
            {
                ActiveWidget.Dragging = false;
            }

            ActiveWidget.ProcessMouseUp(button, _mouse_x - ActiveWidget.DrawX, _mouse_y - ActiveWidget.DrawY);

            ActiveWidget.Active = false;
            ActiveWidget        = null;
        }
Exemple #6
0
        private void ProcessMouseUp(MouseButton button)
        {
            if (ActiveWidget == null)
            {
                return;
            }

            _refresh = true;

            if (ActiveWidget.Draggable)
            {
                ActiveWidget.Dragging = false;
            }

            ActiveWidget.ProcessMouseUp(button, _mouseX - ActiveWidget.DrawX, _mouseY - ActiveWidget.DrawY);

            ActiveWidget.Active = false;
            ActiveWidget        = null;
        }
Exemple #7
0
        public override bool OnMouseMove(int x, int y)
        {
            int deltaX = x - MousePosition.X;
            int deltaY = y - MousePosition.Y;

            MousePosition = new Point(x, y);
            MouseMoveEventArgs e = new MouseMoveEventArgs(x, y, deltaX, deltaY);

            if (ActiveWidget != null)
            {
                //TODO, ensure object is still in the graphic tree
                //send move evt even if mouse move outside bounds
                ActiveWidget.onMouseMove(this, e);
                if (!ActiveWidget.IsDragged)                //if active is dragged, process mouse move as it was not visible.
                {
                    return(true);
                }
            }

            if (HoverWidget != null)
            {
                //check topmost graphicobject first
                Widget tmp  = HoverWidget;
                Widget topc = null;
                while (tmp is Widget)
                {
                    topc = tmp;
                    tmp  = tmp.LogicalParent as Widget;
                }
                int idxhw = GraphicTree.IndexOf(topc);
                if (idxhw != 0)
                {
                    int i = 0;
                    while (i < idxhw)
                    {
                        if (GraphicTree [i].localLogicalParentIsNull)
                        {
                            if (GraphicTree [i].MouseIsIn(e.Position))
                            {
                                while (HoverWidget != null)
                                {
                                    HoverWidget.onMouseLeave(HoverWidget, e);
                                    HoverWidget = HoverWidget.LogicalParent as Widget;
                                }

                                GraphicTree [i].checkHoverWidget(e);
                                return(true);
                            }
                        }
                        i++;
                    }
                }

                if (HoverWidget.MouseIsIn(e.Position))
                {
                    if (!(HoverWidget is TemplatedControl))
                    {
                        HoverWidget.checkHoverWidget(e);
                    }
                    return(true);
                }
                else
                {
                    HoverWidget.onMouseLeave(HoverWidget, e);
                    //seek upward from last focused graph obj's
                    while (HoverWidget.LogicalParent as Widget != null)
                    {
                        HoverWidget = HoverWidget.LogicalParent as Widget;
                        if (HoverWidget.MouseIsIn(e.Position))
                        {
                            HoverWidget.checkHoverWidget(e);
                            return(true);
                        }
                        else
                        {
                            HoverWidget.onMouseLeave(HoverWidget, e);
                        }
                    }
                }
            }

            //top level graphic obj's parsing
            lock (GraphicTree) {
                for (int i = 0; i < GraphicTree.Count; i++)
                {
                    Widget g = GraphicTree [i];
                    if (g.MouseIsIn(e.Position))
                    {
                        if (!(HoverWidget is TemplatedControl))
                        {
                            g.checkHoverWidget(e);
                        }
                        if (g is Window)
                        {
                            PutOnTop(g);
                        }
                        return(true);
                    }
                }
            }
            HoverWidget = null;
            return(false);
        }
Exemple #8
0
 public void ActivateWidgetFromButton(ActiveWidget widgetToActivate)
 {
     ActivateWidget(widgetToActivate);
 }
Exemple #9
0
 public void DeactivateWidgetFromButton(ActiveWidget widgetToDeactivate)
 {
     DeactivateWidget(widgetToDeactivate);
 }
Exemple #10
0
        private void ProcessMouseMove(int x, int y)
        {
            if (x == 0 && y == 0)
            {
                return;
            }

            _mouseX = x;
            _mouseY = y;

            foreach (var widget in _widgets)
            {
                if (widget.IgnoreInput || !widget.Visible)
                {
                    continue;
                }

                if (widget.GlobalGeometry.Contains(x, y))
                {
                    if (HoveredWidget != null && HoveredWidget != widget && HoveredWidget.Hovered)
                    {
                        HoveredWidget.Hovered = false;
                        HoveredWidget.ProcessMouseLeave();
                        _refresh = true;
                    }

                    var to_be_hovered = widget;

                    if (widget.BubbleEventsToParent && widget.Parent != null)
                    {
                        to_be_hovered = widget.Parent;
                    }

                    if (!to_be_hovered.Hovered)
                    {
                        _refresh = true;
                        widget.ProcessMouseEnter();
                    }

                    SetHovered(to_be_hovered, true);

                    break;
                }
                if (widget.Hovered && widget == HoveredWidget)
                {
                    widget.ProcessMouseLeave();

                    SetHovered(widget, false);
                }
            }

            if (ActiveWidget != null)
            {
                if (!ActiveWidget.Draggable)
                {
                    ActiveWidget.ProcessMouseMove(x - ActiveWidget.DrawX, y - ActiveWidget.DrawY);
                }
                else if (ActiveWidget.Dragging)
                {
                    var dx = _mouseX - _lastMouseX;
                    var dy = _mouseY - _lastMouseY;

                    ActiveWidget.X += dx;
                    ActiveWidget.Y += dy;
                }
            }
            else
            {
                HoveredWidget?.ProcessMouseMove(x - HoveredWidget.DrawX, y - HoveredWidget.DrawY);
            }

            _lastMouseX = _mouseX;
            _lastMouseY = _mouseY;
        }