コード例 #1
0
    private void UpdateVisual()
    {
        foreach (Transform child in itemContainer)
        {
            Destroy(child.gameObject);
        }

        Item weaponItem = characterEquipment.GetWeaponItem();

        if (weaponItem != null)
        {
            Transform uiItemTransform = Instantiate(pfUI_Item, itemContainer);
            uiItemTransform.GetComponent <RectTransform>().anchoredPosition = weaponSlot.GetComponent <RectTransform>().anchoredPosition;
            uiItemTransform.localScale = Vector3.one * 1.5f;
            //uiItemTransform.GetComponent<CanvasGroup>().blocksRaycasts = false;
            UI_Item uiItem = uiItemTransform.GetComponent <UI_Item>();
            uiItem.SetItem(weaponItem);
            weaponSlot.transform.Find("emptyImage").gameObject.SetActive(false);
        }
        else
        {
            weaponSlot.transform.Find("emptyImage").gameObject.SetActive(true);
        }

        Item armorItem = characterEquipment.GetArmorItem();

        if (armorItem != null)
        {
            Transform uiItemTransform = Instantiate(pfUI_Item, itemContainer);
            uiItemTransform.GetComponent <RectTransform>().anchoredPosition = armorSlot.GetComponent <RectTransform>().anchoredPosition;
            uiItemTransform.localScale = Vector3.one * 1.5f;
            //uiItemTransform.GetComponent<CanvasGroup>().blocksRaycasts = false;
            UI_Item uiItem = uiItemTransform.GetComponent <UI_Item>();
            uiItem.SetItem(armorItem);
            armorSlot.transform.Find("emptyImage").gameObject.SetActive(false);
        }
        else
        {
            armorSlot.transform.Find("emptyImage").gameObject.SetActive(true);
        }

        Item helmetItem = characterEquipment.GetHelmetItem();

        if (helmetItem != null)
        {
            Transform uiItemTransform = Instantiate(pfUI_Item, itemContainer);
            uiItemTransform.GetComponent <RectTransform>().anchoredPosition = helmetSlot.GetComponent <RectTransform>().anchoredPosition;
            uiItemTransform.localScale = Vector3.one * 1.5f;
            //uiItemTransform.GetComponent<CanvasGroup>().blocksRaycasts = false;
            UI_Item uiItem = uiItemTransform.GetComponent <UI_Item>();
            uiItem.SetItem(helmetItem);
            helmetSlot.transform.Find("emptyImage").gameObject.SetActive(false);
        }
        else
        {
            helmetSlot.transform.Find("emptyImage").gameObject.SetActive(true);
        }
    }
コード例 #2
0
    private UI_Item CreateUI_Item(int index)
    {
        UI_InventorySlot uI_InventorySlot = uI_InventorySlotList[index];
        Transform        uI_ItemTransform = Instantiate(uI_ItemTemplate, uI_InventorySlot.transform);

        uI_ItemTransform.GetComponent <RectTransform>().anchoredPosition = Vector2.zero;
        uI_ItemTransform.gameObject.SetActive(true);

        UI_Item uI_Item = uI_ItemTransform.GetComponent <UI_Item>();

        uI_Item.SetIndex(index);
        uI_Item.SetItem(inventory.GetItem(index));
        uI_Item.UpdateUI();

        return(uI_Item);
    }
コード例 #3
0
    private void RefreshInventoryItems()
    {
        foreach (Transform child in itemSlotContainer)
        {
            if (child == itemSlotTemplate)
            {
                continue;
            }
            Destroy(child.gameObject);
        }

        int   x = 0;
        int   y = 0;
        float itemSlotCellSize = 54f;

        foreach (Inventory.InventorySlot inventorySlot in inventory.GetInventorySlotArray())
        {
            Item item = inventorySlot.GetItem();

            RectTransform itemSlotRectTransform = Instantiate(itemSlotTemplate, itemSlotContainer).GetComponent <RectTransform>();
            itemSlotRectTransform.gameObject.SetActive(true);

            itemSlotRectTransform.GetComponent <Button_UI>().ClickFunc           = () => {
                // Use item
                //inventory.UseItem(item);
            };
            itemSlotRectTransform.GetComponent <Button_UI>().MouseRightClickFunc = () => {
                // Split item
                if (item.IsStackable())
                {
                    // Is Stackable
                    if (item.amount > 2)
                    {
                        // Can split
                        int splitAmount = Mathf.FloorToInt(item.amount / 2f);
                        item.amount -= splitAmount;
                        Item duplicateItem = new Item {
                            itemType = item.itemType, amount = splitAmount
                        };
                        inventory.AddItem(duplicateItem);
                    }
                }

                // Drop item
                //Item duplicateItem = new Item { itemType = item.itemType, amount = item.amount };
                //inventory.RemoveItem(item);
                //ItemWorld.DropItem(player.GetPosition(), duplicateItem);
            };

            itemSlotRectTransform.anchoredPosition = new Vector2(x * itemSlotCellSize, -y * itemSlotCellSize);

            if (!inventorySlot.IsEmpty())
            {
                // Not Empty, has Item
                Transform uiItemTransform = Instantiate(pfUI_Item, itemSlotContainer);
                uiItemTransform.GetComponent <RectTransform>().anchoredPosition = itemSlotRectTransform.anchoredPosition;
                UI_Item uiItem = uiItemTransform.GetComponent <UI_Item>();
                uiItem.SetItem(item);
            }

            Inventory.InventorySlot tmpInventorySlot = inventorySlot;

            UI_ItemSlot uiItemSlot = itemSlotRectTransform.GetComponent <UI_ItemSlot>();
            uiItemSlot.SetOnDropAction(() => {
                // Dropped on this UI Item Slot
                Item draggedItem = UI_ItemDrag.Instance.GetItem();
                draggedItem.RemoveFromItemHolder();
                inventory.AddItem(draggedItem, tmpInventorySlot);
            });

            /*
             * TextMeshProUGUI uiText = itemSlotRectTransform.Find("amountText").GetComponent<TextMeshProUGUI>();
             * if (inventorySlot.IsEmpty()) {
             *  // Empty
             *  uiText.SetText("");
             * } else {
             *  if (item.amount > 1) {
             *      uiText.SetText(item.amount.ToString());
             *  } else {
             *      uiText.SetText("");
             *  }
             * }
             */

            x++;
            int itemRowMax = 7;
            if (x >= itemRowMax)
            {
                x = 0;
                y++;
            }
        }
    }