private void DragManager_OnDragEnded(DraggableItem dItem, DraggableItem newSpawnedItem, int amount) { MouseState m = Mouse.GetState(); DrawGrid = false; if (GlobalBounds.Contains(m.X, m.Y)) { if (newSpawnedItem != null) { OnItemCreated.Invoke(newSpawnedItem); Items.Add(newSpawnedItem); newSpawnedItem.LocalBounds = new Rectangle(0, 0, GridWidth, GridHeight); newSpawnedItem.OnDragStarted += () => DragManager.StartDrag(newSpawnedItem, 1); newSpawnedItem.OnDragEnded += () => DragManager.Drop(); } } if (Items.Contains(dItem) && dItem.Item.CurrentAmount <= 0) { DragManager.Slots[dItem.Parent] = null; dItem.Parent.RemoveChild(dItem); Items.Remove(dItem); OnItemDestroyed.Invoke(dItem); } OnChanged.Invoke(); }
public override void Draw(SpriteBatch batch) { var alpha = Active ? 1.0f : 0.25f; Item.drawInMenu(batch, new Vector2(GlobalPosition.X, GlobalPosition.Y), 1, alpha, 1, StackDrawType.Hide); if (GlobalBounds.Contains(Game1.getMousePosition())) { TooltipManager.ShowTooltipThisFrame(Tooltip); } }
public override void Draw(SpriteBatch batch) { var proto = ItemDataManager.GetItem(ItemKey); var alpha = Active ? 1.0f : 0.25f; proto.drawInMenu(batch, new Vector2(GlobalPosition.X, GlobalPosition.Y), 1, alpha, 1, false); if (GlobalBounds.Contains(Game1.getMousePosition())) { TooltipManager.ShowTooltipThisFrame(Tooltip); } }
public virtual void Update(DwarfTime time) { if (!IsVisible) { return; } UpdateSize(); if (Tweens.Count > 0) { GUITween currTween = Tweens.First(); currTween.Update(time); LocalBounds = currTween.GetCurrentRect(); if (currTween.TweenTimer.HasTriggered) { switch (currTween.Tween) { case GUITween.TweenType.TweenAnimate: break; case GUITween.TweenType.TweenIn: break; case GUITween.TweenType.TweenOut: IsVisible = false; LocalBounds = currTween.Start; break; } Tweens.RemoveAt(0); } } OnUpdate.Invoke(); foreach (GUIComponent child in Children) { child.Update(time); } MouseState state = Mouse.GetState(); if (GUI.EnableMouseEvents) { if (OverrideClickBehavior) { HandleClicks(state); } else if (GlobalBounds.Contains(state.X, state.Y)) { if (IsMouseOver) { HandleClicks(state); } if (!IsMouseOver) { IsMouseOver = true; OnHover(); } } else if (IsMouseOver) { IsMouseOver = false; OnUnHover(); IsLeftPressed = false; IsRightPressed = false; } } foreach (GUIComponent child in ChildrenToAdd) { Children.Add(child); } ChildrenToAdd.Clear(); foreach (GUIComponent child in ChildrenToRemove) { if (!Children.Remove(child)) { Console.Out.WriteLine("Something's wrong with removing child..."); } } ChildrenToRemove.Clear(); }
/// <summary> /// Updates the widget (graphics and events). /// </summary> /// <param name="app">Windows on which the widget is DIRECTLY drawn on.</param> public override void Update(RenderWindow app) { bool oldHover = Hovered; bool oldPress = Pressing; Hovered = GlobalBounds.Contains(app.MapPixelToCoords(Mouse.GetPosition(app))); if (oldMouseState != Mouse.IsButtonPressed(Mouse.Button.Left)) { oldMouseState = Mouse.IsButtonPressed(Mouse.Button.Left); if (Pressing && !oldMouseState && Clicked != null) { Clicked(); } if (oldMouseState && Hovered) { Pressing = true; } else { Pressing = false; } } if (oldHover != Hovered || (!oldPress && Pressing)) { _chronometer.Restart(); } float s = .3f; float bonusV = 0; if (!Enabled) { Hovered = false; Pressing = false; } if (Hovered) { s = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, Time.Zero, Time.FromMilliseconds(500)), .3f, .5f); bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, Time.Zero, Time.FromMilliseconds(500)), 0f, .2f); } else { Pressing = false; } if (Pressing) { s = .6f; bonusV = .4f; } if (Text != null) { Text.Position = -(Vector2f)(Vector2i)(Text.GlobalBounds.Size() / 2); Text.Update(app, Position); } if (AutoSize) { HalfSize = (Vector2f)(Vector2i)(Text.GlobalBounds.Size() / 2) + new Vector2f(5, 5); } _gradient.Clear(); if (Pressing) { _gradient.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 1), NewColor(Hue, s / 2, .47f, (byte)Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, Time.Zero, Time.FromMilliseconds(1000)), 60f, 255)))); _gradient.Append(new Vertex(new Vector2f(HalfSize.X - 2, -HalfSize.Y + 1), NewColor(Hue, s / 2, .47f, (byte)Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, Time.Zero, Time.FromMilliseconds(1000)), 60f, 255)))); } else if (Hovered) { _gradient.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 1), NewColor(Hue, s / 2, .47f, (byte)Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, Time.Zero, Time.FromMilliseconds(500)), 0f, 60)))); _gradient.Append(new Vertex(new Vector2f(HalfSize.X - 2, -HalfSize.Y + 1), NewColor(Hue, s / 2, .47f, (byte)Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, Time.Zero, Time.FromMilliseconds(500)), 0f, 60)))); } else { _gradient.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 2), NewColor(Hue, s / 2, .47f, 0))); _gradient.Append(new Vertex(new Vector2f(HalfSize.X - 2, -HalfSize.Y + 2), NewColor(Hue, s / 2, .47f, 0))); } _gradient.Append(new Vertex(new Vector2f(HalfSize.X - 2, HalfSize.Y - 2), NewColor(Hue, s, .47f + bonusV))); _gradient.Append(new Vertex(new Vector2f(-HalfSize.X + 1, HalfSize.Y - 2), NewColor(Hue, s, .47f + bonusV))); _lines.Clear(); var actualBonus = bonusV * 1.2f; var bonus0 = 0; Time threshold = Time.Zero; Time increase = Time.FromSeconds(1f) / 9f; #region light if (Pressing) { bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); } else { _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y - 1), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, HalfSize.Y - 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 1, -HalfSize.Y + 3), NewColor(Hue, s, .47f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y + 1), NewColor(Hue, s, .47f + bonusV))); } #endregion light #region dark threshold = Time.Zero; if (Pressing) { bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); threshold += increase; bonusV = Utilities.Interpolation(Utilities.Percent(_chronometer.ElapsedTime, threshold, threshold + increase), bonus0, actualBonus); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); } else { _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(HalfSize.X - 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, HalfSize.Y - 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X, -HalfSize.Y + 3), NewColor(Hue, s, .27f + bonusV))); _lines.Append(new Vertex(new Vector2f(-HalfSize.X + 3, -HalfSize.Y), NewColor(Hue, s, .27f + bonusV))); } #endregion dark }
/// <summary> /// Returns true if bounds contains point /// </summary> /// <param name="point"></param> /// <returns></returns> public bool ContainsPoint(Point point) { return(GlobalBounds.Contains(point)); }