コード例 #1
0
    public void UpdateOnItemInInventory(ItemStack itemToUpdate, bool removeItem)
    {
        if (instantiatedGameObjects == null)
        {
            instantiatedGameObjects = new List <InventoryItemFiller>();
        }

        if (removeItem)
        {
            if (instantiatedGameObjects.Exists(o => o.currentItem == itemToUpdate))
            {
                int index = instantiatedGameObjects.FindIndex(o => o.currentItem == itemToUpdate);
                instantiatedGameObjects[index].gameObject.SetActive(false);
            }
        }
        else
        {
            int index = 0;
            //if the item has already been created
            if (instantiatedGameObjects.Exists(o => o.currentItem == itemToUpdate))
            {
                index = instantiatedGameObjects.FindIndex(o => o.currentItem == itemToUpdate);
            }
            //if the item needs to be created
            else
            {
                //if the new item needs to be instantiated
                if (currentInventory.Items.Count > instantiatedGameObjects.Count)
                {
                    //instantiate
                    InventoryItemFiller instantiatedPrefab = Instantiate(itemPrefab, contentParent.transform) as InventoryItemFiller;
                    instantiatedGameObjects.Add(instantiatedPrefab);
                }
                //find the last instantiated game object not used
                index = currentInventory.Items.Count;
            }

            //set item
            bool isSelected = selectedItemId == index;
            instantiatedGameObjects[index].SetItem(itemToUpdate, isSelected, SelectItemEvent);

            instantiatedGameObjects[index].gameObject.SetActive(true);
        }
    }
コード例 #2
0
    void FillItems(List <ItemStack> listItemsToShow)
    {
        if (_instanciatedItems == null)
        {
            _instanciatedItems = new List <InventoryItemFiller>();
        }

        int maxCount = Mathf.Max(listItemsToShow.Count, _instanciatedItems.Count);

        for (int i = 0; i < maxCount; i++)
        {
            if (i < listItemsToShow.Count)
            {
                if (i >= _instanciatedItems.Count)
                {
                    //instantiate
                    InventoryItemFiller instantiatedPrefab = Instantiate(_itemPrefab, _contentParent.transform) as InventoryItemFiller;
                    _instanciatedItems.Add(instantiatedPrefab);
                }
                //fill

                bool isSelected = selectedItemId == i;
                _instanciatedItems[i].SetItem(listItemsToShow[i], isSelected, _selectItemEvent);
            }
            else if (i < _instanciatedItems.Count)
            {
                //Desactive
                _instanciatedItems[i].SetInactiveItem();
            }
        }
        HideItemInformation();
        //unselect selected Item
        if (selectedItemId >= 0)
        {
            UnselectItem(selectedItemId);
            selectedItemId = -1;
        }
        //hover First Element
        if (_instanciatedItems.Count > 0)
        {
            _instanciatedItems[0].SelectFirstElement();
        }
    }
コード例 #3
0
    void FillItems(List <ItemStack> listItemsToShow)
    {
        if (instantiatedGameObjects == null)
        {
            instantiatedGameObjects = new List <InventoryItemFiller>();
        }

        int maxCount = Mathf.Max(listItemsToShow.Count, instantiatedGameObjects.Count);

        for (int i = 0; i < maxCount; i++)
        {
            if (i < listItemsToShow.Count)
            {
                if (i >= instantiatedGameObjects.Count)
                {
                    //instantiate
                    InventoryItemFiller instantiatedPrefab = Instantiate(itemPrefab, contentParent.transform) as InventoryItemFiller;
                    instantiatedGameObjects.Add(instantiatedPrefab);
                }
                //fill

                bool isSelected = selectedItemId == i;
                instantiatedGameObjects[i].SetItem(listItemsToShow[i], isSelected, SelectItemEvent);
                instantiatedGameObjects[i].gameObject.SetActive(true);
            }
            else if (i < instantiatedGameObjects.Count)
            {
                //Desactive
                instantiatedGameObjects[i].gameObject.SetActive(false);
            }
        }
        HideItemInformation();
        //unselect selected Item
        if (selectedItemId >= 0)
        {
            UnselectItem(selectedItemId);
            selectedItemId = -1;
        }
    }