示例#1
0
 public void LoadInventory(PlayerSaveData saveData)
 {
     itemList.Clear();
     for (int i = 0; i < saveData.items.Count; i++)
     {
         Item          item     = itemDB.GetItem(saveData.items[i].id);
         InventorySlot itemSlot = new InventorySlot(saveData.items[i].id, item, saveData.items[i].amount);
         itemList.Add(itemSlot);
     }
 }
示例#2
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Item")
        {
            if (gameObject.layer == 11)
            {
                return;
            }

            GameObject newItem = collision.gameObject;

            itemDB.GetItem(newItem.GetComponent <ItemPickUp>());

            if (newItem.GetComponent <ItemPickUp>().item.itemType == Item.ItemType.Equipment)
            {
                if (newItem.GetComponent <WeaponController>().weaponType == WeaponController.WeaponType.Shield)
                {
                    currentShield = newItem.GetComponent <WeaponController>();
                    isShield      = true;
                }
                else
                {
                    currentWeapon = newItem.GetComponent <WeaponController>();
                    isWeapon      = true;
                }
            }
        }
    }
示例#3
0
    public bool TryAddItemAtIndex(int ID, int index, int amount = 1, ItemDB dB = null)
    {
        if (dB == null)
        {
            dB = itemDB;
        }

        bool success = false;

        if (index >= 0 && index < slots.Count && amount > 0)
        {
            Item     itemToAdd = dB.GetItem <Item>(ID);
            ItemData existData = GetSlotByIndex(index).GetItemData();
            if (existData)
            {
                if (itemToAdd.Stackable && itemToAdd.ID == existData.item.ID)
                {
                    existData.SetAmount(existData.amount + amount);
                    success = true;
                }
            }
            else
            {
                // Create and add a new Item object
                if (items[index].ID == -1)
                {
                    items[index] = itemToAdd;
                    GameObject itemObj = Instantiate(inventoryItem);
                    ItemData   newData = itemObj.GetComponent <ItemData>();
                    newData.item = itemToAdd;
                    newData.slot = index;
                    newData.inv  = this;
                    newData.SetAmount(1);
                    itemObj.transform.SetParent(slots[index].transform, false);
                    itemObj.transform.position = itemObj.transform.parent.position; // Set object to slot position
                    if (itemToAdd.GetSprite() == null)
                    {
                        itemObj.GetComponent <Image>().sprite = Resources.Load <Sprite>("Sprites/Items/" + itemToAdd.ImgPath);
                    }
                    else
                    {
                        itemObj.GetComponent <Image>().sprite = itemToAdd.GetSprite();
                    }

                    if (amount == 1 || itemToAdd.Stackable)
                    {
                        newData.SetAmount(amount);
                        success = true;
                    }
                }
            }
        }
        return(success);
    }
示例#4
0
    // Add an item to the first available inventory UI slot, or increment the stack.
    public bool TryAddItemByID(int ID, int amount = 1, ItemDB dB = null)
    {
        if (dB == null)
        {
            dB = itemDB;
        }
        Item itemToAdd = dB.GetItem <Item>(ID);
        int  idx       = GetItemIndexByID(ID);
        bool success   = false;

        if (itemToAdd.Stackable && idx >= 0)
        {
            ItemData existData = GetSlotByIndex(idx).GetItemData();
            existData.SetAmount(existData.amount + amount);
            success = true;
        }
        else
        {
            // Create and add a new Item object
            for (int i = 0; i < items.Count && amount > 0; i++)
            {
                if (items[i].ID <= -1)
                {
                    success  = true;
                    items[i] = itemToAdd;
                    GameObject itemObj = Instantiate(inventoryItem);
                    ItemData   newData = itemObj.GetComponent <ItemData>();
                    newData.item = itemToAdd;
                    newData.slot = i;
                    newData.inv  = this;
                    newData.SetAmount(1);
                    itemObj.transform.SetParent(slots[i].transform, false);
                    itemObj.transform.position = itemObj.transform.parent.position; // Set object to slot position
                    if (itemToAdd.GetSprite() == null)
                    {
                        itemObj.GetComponent <Image>().sprite = Resources.Load <Sprite>("Sprites/Items/" + itemToAdd.ImgPath);
                    }
                    else
                    {
                        itemObj.GetComponent <Image>().sprite = itemToAdd.GetSprite();
                    }
                    if (itemToAdd.Stackable)
                    {
                        newData.SetAmount(amount);
                        break;
                    }
                    amount--;
                }
            }
        }
        return(success);
    }
    public TextureRect GrabItem(Vector2 pos)
    {
        var item = GetItemUnderPos(pos);

        if (item == null)
        {
            return(null);
        }
        var itemSlot = ItemDB.GetItem(item.GetMeta("id").ToString()).ItemSlot;

        items[itemSlot] = null;
        return(item);
    }
示例#6
0
    public bool PickUpItem(string itemId)
    {
        var item = (TextureRect)itemBase.Instance();

        item.SetMeta("id", itemId);
        item.Texture = (Texture)GD.Load(ItemDB.GetItem(itemId).ItemPath);
        AddChild(item);
        if (!gridBackpack.InsertItemAtFirstAvailableSpot(item))
        {
            item.QueueFree();
            return(false);   // no space available in the inventory
        }
        return(true);        // item picked up successfully
    }
示例#7
0
    public void AddItem(int ID)
    {
        Item itemToAdd = idb.GetItem <Item>(ID);
        int  index     = AtIndex(itemToAdd);

        if (index > -1)//item exists in inventory
        {
            if (itemToAdd.Stackable)
            {
                ItemData iData = slots[index].GetComponent <Slot>().GetItemData();
                iData.amount++;
                iData.transform.GetChild(0).GetComponent <Text>().text = iData.amount.ToString();
            }
        }
        else//item does not exist in inventory
        {
            for (int i = 0; i < items.Count; i++)//find first open slot for the item
            {
                if (items[i].ID == -1)
                {
                    items[i] = itemToAdd;
                    GameObject itemObj = Instantiate(inventoryItem);
                    ItemData   newData = itemObj.GetComponent <ItemData>();
                    newData.item = itemToAdd;
                    newData.slot = i;
                    newData.inv  = this;
                    newData.SetAmount(1);
                    itemObj.transform.SetParent(slots[i].transform, false);
                    itemObj.transform.position = itemObj.transform.parent.position;
                    if (itemToAdd.GetSprite() == null)
                    {
                        itemObj.GetComponent <Image>().sprite = Resources.Load <Sprite>("Sprites/Items/" + itemToAdd.ImgPath);
                    }
                    else
                    {
                        itemObj.GetComponent <Image>().sprite = itemToAdd.GetSprite();
                    }
                    if (itemToAdd.Stackable)
                    {
                        newData.amount = 1;
                    }
                    break;
                }
            }
        }
    }
    public bool InsertItem(TextureRect item)
    {
        var itemPos = item.RectGlobalPosition + item.RectSize / 2;
        var slot    = GetSlotUnderPos(itemPos);

        if (slot == null)
        {
            return(false);
        }

        var itemSlot = ItemDB.GetItem(item.GetMeta("id").ToString()).ItemSlot;

        if (itemSlot != slot.Name)
        {
            return(false);
        }
        if (items[itemSlot] != null)
        {
            return(false);
        }
        items[itemSlot]         = item;
        item.RectGlobalPosition = slot.RectGlobalPosition + slot.RectSize / 2 - item.RectSize / 2;
        return(true);
    }
示例#9
0
    public void GiveItem(string itemName, int quantity)
    {
        Item itemToAdd = itemDB.GetItem(itemName);

        inventoryItems.Add(itemToAdd);
        if (itemToAdd.forSidescroll == levelController.isSideScroll)
        {
            inventoryUI.AddNewItem(itemToAdd, GetTotalQuantity(itemToAdd.id));
            //toolbarUI.AddNewItem(itemToAdd, GetTotalQuantity(itemToAdd.id));
        }
        int id = itemDB.GetItem(itemName).id;

        GiveQuantity(id, quantity);
    }
示例#10
0
    public void awardLoot()
    {
        int randomNumber   = Random.Range(0, total);
        int quantityToGive = Random.Range(minLoot, maxLoot);

        print(randomNumber);
        foreach (var id in table)
        {
            int index = GetItemId(id.itemIds.Length);
            if (randomNumber <= id.lootProbability)
            {
                Item itemToGive = itemDB.GetItem(id.itemIds[index]);
                if (itemToGive.GetType() == typeof(Map))
                {
                    List <int> mapsTriedToGive       = new List <int>();
                    bool       mapAlreadyInInventory = false;
                    do
                    {
                        Item existingMap = inventory.CheckForItem(id.itemIds[index]);
                        if (existingMap != null)
                        {
                            mapAlreadyInInventory = true;
                            index = GetItemId(id.itemIds.Length);
                        }
                        else
                        {
                            mapAlreadyInInventory = false;
                            inventory.GiveItem(id.itemIds[index], 1);
                            return;
                        }
                        bool mapInList = false;
                        foreach (int map in mapsTriedToGive)
                        {
                            if (map == id.itemIds[index])
                            {
                                mapInList = true;
                            }
                        }
                        if (!mapInList)
                        {
                            mapsTriedToGive.Add(id.itemIds[index]);
                        }
                        if (mapsTriedToGive.Count == id.itemIds.Length)
                        {
                            awardLoot();
                            return;
                        }
                    } while (mapAlreadyInInventory);

                    /* bool noUniqueMap = false;
                     * int[] randomizedIndexes = RandomizeArray(id.itemIds);
                     * foreach(int arrayIndex in randomizedIndexes)
                     * {
                     *   print("Array Index: " + arrayIndex);
                     *   Item existingMap = inventory.CheckForItem(id.itemIds[arrayIndex]);
                     *   if (existingMap != null)
                     *   {
                     *       noUniqueMap = true;
                     *   } else
                     *   {
                     *       inventory.GiveItem(id.itemIds[arrayIndex], 1);
                     *       return;
                     *   }
                     * }
                     * if(noUniqueMap)
                     * {
                     *   awardLoot();
                     *   return;
                     * }*/

                    //RANDOMIZE MAPS

                    /*Item existingMap = inventory.CheckForItem(id.itemIds[index]);
                     * if(existingMap != null)
                     * {
                     *  awardLoot();
                     *  return;
                     * }
                     * else
                     * {
                     *  print("Giving Map");
                     *  inventory.GiveItem(id.itemIds[index], 1);
                     *  return;
                     * }*/
                }
                else
                {
                    //inventory.GiveItem(id.itemIds[index], quantityToGive);
                    FindObjectOfType <Inventory>().GiveItem(id.itemIds[index], quantityToGive);
                    return;
                }
            }
            else
            {
                randomNumber -= id.lootProbability;
            }
        }
    }
示例#11
0
    public void AddItem(int ID)
    {
        Item newItem = idb.GetItem <Item>(ID);

        items.Add(newItem);
    }
示例#12
0
 public void EquipItem(string projectile)
 {
     equippedItem = itemDb.GetItem(projectile);
 }