Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        public void ClipRecursive(Rectangle clip)
        {
            IsClipped = !GlobalBounds.Intersects(clip);

            foreach (GUIComponent component in Children)
            {
                component.ClipRecursive(clip);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        /// <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
        }
Exemplo n.º 7
0
 /// <summary>
 /// Returns true if bounds contains point
 /// </summary>
 /// <param name="point"></param>
 /// <returns></returns>
 public bool ContainsPoint(Point point)
 {
     return(GlobalBounds.Contains(point));
 }