private void PickupItemBegin(Item item, int x, int y, int?amount = null)
        {
            if (World.Player.IsDead)
            {
                return;
            }

            if (!_isShiftDown && !amount.HasValue && !item.IsCorpse && item.Amount > 1 && item.ItemData.IsStackable)
            {
                if (Engine.UI.GetByLocalSerial <SplitMenuGump>(item) != null)
                {
                    return;
                }

                SplitMenuGump gump = new SplitMenuGump(item, new Point(x, y))
                {
                    X = Mouse.Position.X - 80,
                    Y = Mouse.Position.Y - 40,
                };
                Engine.UI.Add(gump);
                Engine.UI.AttemptDragControl(gump, Mouse.Position, true);
            }
            else
            {
                PickupItemDirectly(item, x, y, amount ?? item.Amount);
            }
        }
Example #2
0
        private bool PickupItemBegin(Item item, int x, int y, int?amount = null)
        {
            if (World.Player.IsDead || item == null || item.IsDestroyed || item.IsMulti || item.OnGround && (item.IsLocked || item.Distance > Constants.DRAG_ITEMS_DISTANCE))
            {
                return(false);
            }

            if (!_isShiftDown && !amount.HasValue && item.Amount > 1 && item.ItemData.IsStackable)
            {
                if (Engine.UI.GetGump <SplitMenuGump>(item) != null)
                {
                    return(false);
                }

                SplitMenuGump gump = new SplitMenuGump(item, new Point(x, y))
                {
                    X = Mouse.Position.X - 80,
                    Y = Mouse.Position.Y - 40
                };
                Engine.UI.Add(gump);
                Engine.UI.AttemptDragControl(gump, Mouse.Position, true);

                return(true);
            }

            return(PickupItemDirectly(item, x, y, amount ?? item.Amount));
        }
Example #3
0
        public static bool PickUp(uint serial, int x, int y, int amount = -1, Point?offset = null, bool is_gump = false)
        {
            if (World.Player.IsDead || ItemHold.Enabled)
            {
                return(false);
            }

            Item item = World.Items.Get(serial);

            if (item == null || item.IsDestroyed || item.IsMulti || item.OnGround && (item.IsLocked || item.Distance > Constants.DRAG_ITEMS_DISTANCE))
            {
                return(false);
            }

            if (amount <= -1 && item.Amount > 1 && item.ItemData.IsStackable)
            {
                if (ProfileManager.Current.HoldShiftToSplitStack == Keyboard.Shift)
                {
                    SplitMenuGump gump = UIManager.GetGump <SplitMenuGump>(item);

                    if (gump != null)
                    {
                        return(false);
                    }

                    gump = new SplitMenuGump(item, new Point(x, y))
                    {
                        X = Mouse.LDropPosition.X - 80,
                        Y = Mouse.LDropPosition.Y - 40
                    };

                    UIManager.Add(gump);
                    UIManager.AttemptDragControl(gump, Mouse.Position, true);

                    return(true);
                }
            }

            if (amount <= 0)
            {
                amount = item.Amount;
            }

            ItemHold.Clear();
            ItemHold.Set(item, (ushort)amount, offset);
            ItemHold.IsGumpTexture = is_gump;
            Socket.Send(new PPickUpRequest(item, (ushort)amount));
            UIManager.GameCursor.SetDraggedItem(offset);

            if (item.OnGround)
            {
                item.RemoveFromTile();
            }

            item.TextContainer?.Clear();

            World.ObjectToRemove = item.Serial;

            return(true);
        }
Example #4
0
        private bool PickupItemBegin(Item item, int x, int y, int?amount = null, Point?offset = null)
        {
            if (World.Player.IsDead || item == null || item.IsDestroyed || item.IsMulti || item.OnGround && (item.IsLocked || item.Distance > Constants.DRAG_ITEMS_DISTANCE))
            {
                return(false);
            }

            if (!amount.HasValue && item.Amount > 1 && item.ItemData.IsStackable)
            {
                if (ProfileManager.Current.HoldShiftToSplitStack == Keyboard.Shift)
                {
                    if (UIManager.GetGump <SplitMenuGump>(item) != null)
                    {
                        return(false);
                    }

                    SplitMenuGump gump = new SplitMenuGump(item, new Point(x, y))
                    {
                        X = Mouse.LDropPosition.X - 80,
                        Y = Mouse.LDropPosition.Y - 40
                    };
                    UIManager.Add(gump);
                    UIManager.AttemptDragControl(gump, Mouse.Position, true);

                    return(true);
                }
            }

            return(PickupItemDirectly(item, x, y, amount ?? item.Amount, offset));
        }