public bool Add(Item item, bool tryStacking = true) { if (tryStacking) { //Check for any available stack for this item SlotItemBehaviour stackableSlotItem = CheckHasStackableItem(item); if (stackableSlotItem) { stackableSlotItem.Stack(item); return(true); } } //check empty slot for this item var emptySlot = FindEmptySlot(); if (emptySlot == null) { return(false); } var addetSlotItem = emptySlot.AddItem(item); var desc = new DragAndDropCell.DropEventDescriptor(); // Fill event descriptor desc.triggerType = DragAndDropCell.TriggerType.ItemAdded; desc.item = addetSlotItem.GetComponent <DragAndDropItem>(); desc.sourceCell = addetSlotItem.GetComponentInParent <DragAndDropCell>(); desc.destinationCell = addetSlotItem.GetComponentInParent <DragAndDropCell>();; SendNotification(desc); return(true); }
private SlotItemBehaviour CheckHasStackableItem(Item item) { SlotItemBehaviour stackableSlotItemBehaviour = null; for (int x = 0; x < SlotGrid.Length; x++) { for (int y = 0; y < SlotGrid[x].Length; y++) { var slotBehaviour = SlotGrid[x][y].GetComponent <SlotBehaviour>(); if (slotBehaviour.HasItem) { var slotItemBehaviour = SlotGrid[x][y].GetComponentInChildren <SlotItemBehaviour>(); if (slotItemBehaviour.Item.Id.Equals(item.Id) && (slotItemBehaviour.Item.Quantity + item.Quantity) <= item.MaxStack) { return(slotItemBehaviour); } } } } return(stackableSlotItemBehaviour); }