public void TitleBar_onDrag(Component sender, MouseState mouse) { int x = (int)(mouse.X - _mousePosition.X); int y = (int)(mouse.Y - _mousePosition.Y); if (Parent != null) { Parent.Position = new Rectangle(x, y + Position.Height, Parent.Position.Width, Parent.Position.Height); } }
public bool RemoveComponent(string name) { if (_components.ContainsKey(name)) { Component comp = _components[name]; if (_prevFocus == comp) { _prevFocus = null; _isDragActive = false; } if (_clickFocus == comp) _clickFocus = null; } return _components.Remove(name); }
public void AddComponent(string name, Component comp) { if(!_components.ContainsKey(name)) _components.Add(name, comp); }
public override void Update(GameTime gameTime) { base.Update(gameTime); _input.Update(); MouseState currentMouse = _input.CurrentMouseState; MouseState prevMouse = _input.LastMouseState; List<Component> components = _components.Values.ToList(); components.Sort(delegate(Component c1, Component c2) { return -c1.Layer.CompareTo(c2.Layer); }); if (Game.IsActive) { Component currentFocus = null; foreach (Component node in components) { currentFocus = node.IsFocused(currentMouse.X, currentMouse.Y, _prevScreenArea); if (currentFocus != null) break; } // If the focus changed, inject mouse over/out events if (_prevFocus != currentFocus && !_isDragActive) { if (_prevFocus != null) { _prevFocus.InjectMouseOut(this, currentMouse); _clickFocus = null; } if (currentFocus != null) currentFocus.InjectMouseOver(this, currentMouse); } // They are the same, check for mouse move events else { if (currentFocus != null && (currentMouse.X != prevMouse.X || currentMouse.Y != prevMouse.Y) && !_isDragActive) currentFocus.InjectMouseMove(this, currentMouse); } // Check for mouse down, on a mouse down event set _clickFocus to the current focused component if (currentFocus != null && currentMouse.LeftButton == ButtonState.Pressed && prevMouse.LeftButton != ButtonState.Pressed) { _clickFocus = currentFocus; _clickFocus.InjectMouseDown(this, currentMouse); _isDragActive = true; } // Check for mouse up / click events if (currentMouse.LeftButton == ButtonState.Released && prevMouse.LeftButton != ButtonState.Released) { if (_isDragActive) { _prevFocus.InjectDragEnd(this, currentMouse); _isDragActive = false; } // If the component clicked is still the current focus send click event if (_clickFocus != null && _clickFocus == currentFocus) _clickFocus.InjectMouseClick(this, currentMouse); if (_clickFocus != currentFocus) { if (_clickFocus != null) _clickFocus.InjectMouseUp(this, currentMouse); } if (currentFocus != null) currentFocus.InjectMouseUp(this, currentMouse); } if (_isDragActive) { _prevFocus.InjectDrag(this, currentMouse); } else { _prevFocus = currentFocus; } } foreach (Component comp in components) comp.Update(this, gameTime, _input); }
private void Component_onPositionChanged(Component sender) { ResetContentPane(); }
private void ItemSlot_onMouseOver(Component sender, MouseState mouse) { _sourceRect.X = 34; }
private void ItemSlot_onMouseClick(Component sender, MouseState mouse) { _followMouse = true; }
private void ItemSlot_onDragEnd(Component sender, MouseState mouse) { _followMouse = false; // Signal that the item has been released if (Item != null) { if (!IsMouseOver) { if (onItemReleased != null) onItemReleased(this, _mousePosition); } } _mousePosition = new Vector2(Position.X + 16, Position.Y + 16); }
private void ItemSlot_onDrag(Component sender, MouseState mouse) { _mousePosition = new Vector2(mouse.X, mouse.Y); }
public void TitleBar_onMouseDown(Component sender, MouseState mouse) { _mousePosition = new Vector2(mouse.X - Parent.Position.X, mouse.Y - Parent.Position.Y - Position.Y); }
public void TitleBar_onDragEnd(Component sender, MouseState mouse) { }
void Button_onMouseUp(Component sender, MouseState mouse) { if (State != ButtonState.Disabled) { if (IsMouseOver) SourceOffset = new Rectangle(32, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); else SourceOffset = new Rectangle(0, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); } }
void Button_onMouseOver(Component sender, MouseState mouse) { // TODO: Take out magic numbers if(State != ButtonState.Disabled) SourceOffset = new Rectangle(32, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); }
void Button_onMouseOut(Component sender, MouseState mouse) { switch (State) { case ButtonState.Normal: SourceOffset = new Rectangle(0, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); break; case ButtonState.Selected: SourceOffset = new Rectangle(96, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); break; case ButtonState.Disabled: SourceOffset = new Rectangle(128, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); break; } }
void Button_onMouseDown(Component sender, MouseState mouse) { if (State != ButtonState.Disabled) SourceOffset = new Rectangle(64, SourceOffset.Y, SourceOffset.Width, SourceOffset.Height); }