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