Пример #1
0
    /*  private void Debug() {
     *    print("Slot Index " + i);
     *    print("Slot Active " + Slot.Active);
     *    print("Slot Child Count " + Slot.transform.childCount);
     *    print("Item Pickable " + itemPickable.Stackable);
     *    print("Limit of Stack " + limitOfStack);
     *    print("IgnoreCommonItems " + ignoreCommonItems);
     *    print("Quantity " + quantity);
     * }*/

    private void Single_AddToSlot(ItemPickable itemPickable, InventorySlotManager Slot)
    {
        GameObject item       = new GameObject();
        ItemSprite itemSprite = item.AddComponent <ItemSprite>();
        RawImage   image      = item.AddComponent <RawImage>();

        itemSprite.Reference = itemPickable.gameObject;
        itemSprite.Quantity  = 1;
        image.texture        = itemPickable.ItemIcon;
        image.SetNativeSize();
        image.rectTransform.sizeDelta = new Vector2(80, 80);
        if (itemPickable.transform.gameObject.GetComponent <ItemBlock>() != null)
        {
            item.name = itemPickable.transform.gameObject.GetComponent <ItemBlock>().BlockName;
        }
        else
        {
            item.name = itemPickable.gameObject.name;
        }
        item.transform.SetParent(Slot.transform, false);
        try
        {
            itemPickable.gameObject.GetComponent <Collider>().enabled     = false;
            itemPickable.gameObject.GetComponent <MeshRenderer>().enabled = false;
        }
        catch (Exception)
        {
            itemPickable.gameObject.SetActive(false);
        }
        Refresh();
    }
Пример #2
0
    IEnumerator DelayOperation(ItemPickable i, int itemQty)
    {
        yield return(new WaitForEndOfFrame());

        //print("item being transferred " + i.name);
        UI.root.playerInventory.RefreshHeld();
        UI.root.playerInventory.MoveItemToInventory(i, itemQty, false);
    }
Пример #3
0
 private void HandleOnItemUse () {
     foreach (InventorySlot slot in inventorySlots)
     {
         if (activeItem == slot.itemInfo) {
             slot.itemInfo = null;
             slot.GetComponent<Image>().sprite = null;
         }
     }
     activeItem = null;
 }
Пример #4
0
 public bool QuantityChange(int change, ItemPickable item)
 {
     if ((Quantity + change) > item.MaxStack)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Пример #5
0
 public void CheckItemPickUp()
 {
     if (PointingAtPickable)
     {
         if (Input.GetKeyDown(Keymap.Interact))
         {
             ItemPickable item = PointingAtObject.GetComponent <ItemPickable>();
             MoveItemToInventory(item, item.Quantity, false);
         }
     }
 }
Пример #6
0
 public void HandleOnItemPickUp (ItemPickable itemPicked) {
     InventorySlot emptySlot;
     int i = 0;
     do {
         emptySlot = inventorySlots[i];
         i++;
     } while (emptySlot.itemInfo);
     emptySlot.itemInfo = itemPicked;
     Image icon = emptySlot.GetComponent<Image>();
     icon.sprite = emptySlot.itemInfo.inUseIcon;
 }
Пример #7
0
 public void RemoveItem(ItemPickable item)       // REMOVE ITEM FROM INVENTORY
 {
     for (int i = 0; i < inventory.Length; i++)
     {
         if (inventory[i] == item)
         {
             inventory[i] = null;
             Destroy(item.gameObject);
             break;
         }
     }
 }
Пример #8
0
 public void DropItem(ItemPickable item)       // DROPS ITEM FROM INVENTORY PHYSICALLY SHOWING
 {
     for (int i = 0; i < inventory.Length; i++)
     {
         if (item == inventory[i])
         {
             item.transform.position = gameObject.transform.position;
             item.gameObject.SetActive(true);
             break;
         }
     }
 }
Пример #9
0
    public void MoveItemToInventory(ItemPickable itemPickable, int quantity, bool ignoreCommonItems)
    {
        //print(" Moving... " + held);
        if (held < ActiveInventorySlots)
        {
            FullInventory = false;
            for (int i = 0; i < UI.root.InventorySlotGrid.transform.childCount; i++)
            {
                InventorySlotManager Slot = UI.root.InventorySlotGrid.transform.GetChild(i).GetComponent <InventorySlotManager>();
                //print("here " + i + " child count: " + Slot.transform.childCount);
                bool limitOfStack = false;
                try
                {
                    limitOfStack = Slot.transform.GetChild(0).GetComponent <ItemSprite>().QuantityChange(quantity, itemPickable); // true --> can change + quantity
                }
                catch (Exception) { }
                if (Slot.Active && Slot.transform.childCount == 0 && quantity == 1)
                { // Checking if Single and not filled
                    Single_AddToSlot(itemPickable, Slot);
                    //print("Here");
                    break;
                }
                if (Slot.Active && (Slot.transform.childCount == 0) && itemPickable.Stackable && !ignoreCommonItems && quantity > 1)
                {
                    MultipleInit_AddToSlot(itemPickable, Slot, quantity);
                    break;
                }

                if (Slot.transform.childCount >= 1)
                {
                    if (Slot.Active && (Slot.transform.GetChild(0).GetComponent <ItemSprite>().Reference.name == itemPickable.name) && itemPickable.Stackable && limitOfStack && !ignoreCommonItems)
                    { // Checking if same item and stackable
                        Multiple_AddToSlot(itemPickable, Slot, quantity);
                        break;
                    }
                }
                if (Slot.Active && (Slot.transform.childCount == 0) && itemPickable.Stackable && limitOfStack && ignoreCommonItems)
                { // Checking if same item and stackable
                    Multiple_AddToSlot(itemPickable, Slot, quantity);
                    break;
                }
            }
        }
        else
        {
            FullInventory = true;
            Show_InventoryFullDialogBox();
        }
    }
Пример #10
0
    public void UseItem(ItemPickable item)       // USE ITEM FROM INVENTORY
    {
        bool exists = false;
        int  index  = -1;

        for (int i = 0; i < inventory.Length; i++)
        {
            if (item == inventory[i])
            {
                exists = true;
                index  = i;
                break;
            }
        }

        if (exists)          // CHECKING IF ITEM EXISTS IN INVENTORY
        {
            if (item.GetComponent <ItemPickable>().itemType == ItemType.Food)
            {
                // NPC WHEN EATING FOOD
            }
            else if (item.GetComponent <ItemPickable>().itemType == ItemType.Drink)
            {
                // NPC WHEN DRINKING
            }
            else if (item.GetComponent <ItemPickable>().itemType == ItemType.Medical)
            {
                // NPC WHEN USING MEDICAL ITEM
            }
            else if (item.GetComponent <ItemPickable>().itemType == ItemType.Ammunition)
            {
                // NPC AMMUNITION AMOUNT (IF YOU WANT TO SYNC THAT IN WITH PROJECTILEWEAPON)
            }
            else if (item.GetComponent <ItemPickable>().itemType == ItemType.Apparel)
            {
                // NPC'S WEARING CLOTHES - APPAREL WEARING NOT IMPLEMENTED YET
            }
            else if (item.GetComponent <ItemPickable>().itemType == ItemType.MeleeWeapon)
            {
                // NPC BEING ABLE TO HOLD GUN
            }
            else if (item.GetComponent <ItemPickable>().itemType == ItemType.ProjectileWeapon)
            {
                // NPC BEING ABLE TO HOLD WEAPON
            }
        }
    }
Пример #11
0
 public void AddItem(ItemPickable item)       // ADD ITEM TO INVENTORY
 {
     print("called");
     if (item.GetComponent <ItemPickable>() == null)
     {
         print("The item trying to be added does not contain ItemPickable script.");
     }
     else if (item.GetComponent <ItemPickable>() != null)
     {
         for (int i = 0; i < inventory.Length; i++)
         {
             if (inventory[i] == null)
             {
                 inventory[i] = item;
                 item.gameObject.SetActive(false);
                 break;
                 print("picked up");
             }
         }
     }
 }
Пример #12
0
 public void DropItem(ItemPickable itemPickable)
 {
     if (itemPickable.transform.GetComponent <ItemBlock>() != null)
     {
         return;
     }
     itemPickable.gameObject.GetComponent <Rigidbody>().drag = 3f;
     itemPickable.transform.position = gameObject.transform.position + gameObject.transform.forward * 1.5f + new Vector3(0, 1.5f, 0);
     try
     {
         itemPickable.gameObject.GetComponent <Collider>().enabled      = true;
         itemPickable.gameObject.GetComponent <MeshRenderer>().enabled  = true;
         itemPickable.gameObject.GetComponent <Rigidbody>().isKinematic = false;
         PointingAtPickable = false;
     }
     catch (Exception)
     {
         itemPickable.gameObject.SetActive(true);
         PointingAtPickable = false;
         itemPickable.gameObject.GetComponent <Rigidbody>().isKinematic = false;
     }
     Refresh();
 }
Пример #13
0
 private void Multiple_AddToSlot(ItemPickable item, InventorySlotManager Slot, int quantity)
 {
     Slot.transform.GetChild(0).GetComponent <ItemSprite>().QuantityChangeImplicit(quantity);
     Destroy(item.gameObject);
 }
Пример #14
0
 public void ExecuteCraft(ItemPickable i, int itemQty)
 {
     StartCoroutine(DelayOperation(i, itemQty));
 }