private void CreateNewUpdateViewPanel(C_ItemAmount itemAmount) { //Debug.Log("Create new update view for " + itemAmount.item.itemName); if (itemUpdateView.newitempanel_Parent != null) { //select the default panel as prefab GameObject newPanelPrefab = itemUpdateView.newItemPanel_Prefab; //if the item has an override panel, override the prefab with the specific one if (itemAmount != null) { if (itemAmount.item != null) { if (itemAmount.item.newItemOverridePanel != null) { newPanelPrefab = itemAmount.item.newItemOverridePanel; //Debug.Log("selecting " + newPanelPrefab.name); } } } if (newPanelPrefab != null) { // Debug.Log("spawning " + newPanelPrefab.name); itemUpdateView.spawnedNewItemPanel = (GameObject)Instantiate(newPanelPrefab); itemUpdateView.spawnedNewItemPanel.transform.SetParent(itemUpdateView.newitempanel_Parent.transform, false); itemUpdateView.uiItem = itemUpdateView.spawnedNewItemPanel.GetComponent <Inventory_UIItem>(); if (itemUpdateView.uiItem == null) { Debug.LogWarning("The 'Inventory_UIItem' script is missing at the spawned prefab '" + newPanelPrefab.ToString() + "'. The panel can't be shown."); } } } }
/// <summary> /// Add a specific amount of items to the inventory. Negative numbers remove items. /// </summary> /// <param name="item"></param> /// <param name="amount"></param> public void AddItemAmount(InventoryItem item, int amount) { mDebug("Add " + amount.ToString() + "x '" + item.name + "'."); C_ItemAmount ia = GetItemByKey(item.name); if (ia != null) { ia.amount += amount; if (ia.amount > ia.item.maxItems) { ia.amount = ia.item.maxItems; GenerateItemEvent(item, E_ItemEventType.itemsOverMax); GenerateCategoryEvent(item.category, E_ItemEventType.itemsOverMax); } //Item decrease event can only be fired if the item exists with an amount: if (amount < 0) { GenerateItemEvent(item, E_ItemEventType.decreased); GenerateCategoryEvent(item.category, E_ItemEventType.decreased); } } else { //create a new item ia = new C_ItemAmount(); ia.item = item; ia.amount = amount; ia.itemKey = item.name; //using the name of the scriptableObject as key inventory.items.Add(ia); } //Item increase event can be fired if added amount is bigger than 0 if (amount > 0) { GenerateItemEvent(item, E_ItemEventType.increased); GenerateCategoryEvent(item.category, E_ItemEventType.increased); //show the new added item for the user C_ItemAmount newItemAmount = new C_ItemAmount(); newItemAmount.item = ia.item; newItemAmount.amount = amount; itemUpdateView.newItems.Add(newItemAmount); StartCoroutine(ShowNewItems()); } //remove the item, if the amount is 0 if (ia.amount <= 0) { RemoveItem(item.name); } inventoryChanged(); save(); }
public int GetItemCount(string key) { C_ItemAmount i = GetItemByKey(key); if (i != null) { return(i.amount); } return(0); }
public void SelectItem(C_ItemAmount ia) { itemDetailView.selectedElement = ia; if (itemDetailView.ActivatePanelOnSelection == true) { //destroy already active detail views if (itemDetailView.spawnedDetailViewPanel != null) { Destroy(itemDetailView.spawnedDetailViewPanel); } CreateNewDetailViewPanel(ia); } if (itemDetailView.uiItem != null) { itemDetailView.uiItem.SetItem(ia); } }