Example #1
0
        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);
        }
Example #2
0
        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);
        }