Beispiel #1
0
        /// <summary>
        /// Use this method to add item to inventory
        /// </summary>
        /// <param name="item">Item to add</param>
        /// <returns></returns>
        public virtual bool AddItem(Item item)
        {
            if (CheckFreeSpaceForAllSlots(item.width, item.height))
            {
                var _slot               = CheckFreeSpaceForAllSlots(item.width, item.height);
                var _InventoryItem      = Instantiate(cell).gameObject.AddComponent <InventoryItem>();
                var _InventoryItemImage = _InventoryItem.GetComponent <Image>();

                _InventoryItemImage.rectTransform.SetParent(transform);
                _InventoryItemImage.rectTransform.sizeDelta        = new Vector2(cellSize * item.width - padding, cellSize * item.height - padding);
                _InventoryItemImage.rectTransform.anchoredPosition = _slot.GetComponent <RectTransform>().anchoredPosition;
                _InventoryItemImage.color  = Color.white;
                _InventoryItemImage.sprite = item.icon;

                _InventoryItem.item = item;

                _InventoryItem.finalPosition = _slot.GetComponent <RectTransform>().anchoredPosition;

                _InventoryItem.x         = _slot.x;
                _InventoryItem.y         = _slot.y;
                _InventoryItem.width     = item.width;
                _InventoryItem.height    = item.height;
                _InventoryItem.inventory = this;

                MarkSlots(_slot.x, _slot.y, item.width, item.height, false);

                Destroy(_InventoryItem.GetComponent <GridSlot>());

                inventoryItems.Add(_InventoryItem);

                item.transform.parent = this.transform;

                item.gameObject.SetActive(false);

                if (autoEquipItems)
                {
                    foreach (var equipmentPanel in equipmentPanels)
                    {
                        if (equipmentPanel.allowedItemType == _InventoryItem.item.type && equipmentPanel.equipedItem == null)
                        {
                            EquipItem(equipmentPanel, _InventoryItem);
                            MarkSlots(_slot.x, _slot.y, item.width, item.height, true);
                        }
                    }
                }

                OnInventoryItemAdd.Invoke();

                return(true);
            }
            return(false);
        }
 private void OnInventoryItemFoundHandler(IInventoryItem item)
 {
     _inventoryComponent.Inventory.AddItem(item);
     _hud.Toast("Item found: " + item.Name, _hud.Short);
     if (OnInventoryItemAdd != null)
     {
         OnInventoryItemAdd.Invoke(item);
     }
 }