/// <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; } }
/// <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; } }
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; }
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; }
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; }
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); }
public void ActivateWidgetFromButton(ActiveWidget widgetToActivate) { ActivateWidget(widgetToActivate); }
public void DeactivateWidgetFromButton(ActiveWidget widgetToDeactivate) { DeactivateWidget(widgetToDeactivate); }
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; }