Beispiel #1
0
 void OnTriggerEnter(Collider collider)
 {
     if (collider.gameObject.tag == "Player")
     {
         Inventory.Instance.AddStack(ItemPrefabsDefinition.StackClone(itemID, 1));
         GameObject.Destroy(this.gameObject);
     }
 }
Beispiel #2
0
    public ItemStack AddStack(ItemStack stack)
    {
        if (stack.num < 1 || stack.item == null)
        {
            Debug.LogError("Trying to add empty stack to inventory.");
            return(null);
        }

        // First run, add to the same item stack in inventory
        foreach (ItemStack st in inventory)
        {
            if (st != null && st.item.itemID == stack.item.itemID)
            {
                while (st.num < st.item.itemMaxStack && stack.num > 0)
                {
                    stack.num--;
                    st.num++;
                }
            }
        }

        // Add to existed item stack complete, return null(nothing left)
        if (stack.num == 0)
        {
            Messenger.Invoke(MyEventType.INVENTORY_CHANGED);
            return(null);
        }

        int stackSplitNum = stack.num / (stack.item.itemMaxStack);;

        for (int i = 0; i < stackSplitNum; i++)
        {
            for (int j = 0; j < inventory.Count && (stack.num > stack.item.itemMaxStack); j++)
            {
                if (inventory[j] == null)
                {
                    inventory[j] = ItemPrefabsDefinition.StackClone(stack.item.itemID, stack.item.itemMaxStack);
                    stack.num   -= stack.item.itemMaxStack;
                }
            }
        }

        // add item left to the first empty inventory slot
        for (int i = 0; i < inventory.Count; i++)
        {
            if (inventory[i] == null)
            {
                inventory[i] = stack;
                Messenger.Invoke(MyEventType.INVENTORY_CHANGED);
                return(null);
            }
        }

        Messenger.Invoke(MyEventType.INVENTORY_CHANGED);
        //return what's left
        return(stack);
    }
    void Awake()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Debug.LogError("Just one ItemPrefabsDefinition allowed.");
        }

        ItemDefinitionInit();
    }
Beispiel #4
0
    void AmyDeadHandler()
    {
        // Add loot
        GameObject itemObject = ItemPrefabsDefinition.ItemClone(lootItemID).itemObject;

        if (itemObject == null)
        {
            return;
        }

        GameObject.Instantiate(itemObject, this.gameObject.transform.position, Quaternion.identity);

        PlayerBase.Instance.PlayerEquip.ReplaceSecondWeapon(new Rifle());
        zombieSpawner.GetComponent <Spawner>().StartSpawner();
    }