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); } }
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)); }
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); }
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)); }