예제 #1
0
        public static bool RemoveItemsThenAdd(ItemAmountRow[] itemsToAdd, params ItemAmountRow[] itemsToRemoveFirst)
        {
            RebuildCounter();
            bool removeSucceeded = _counter.TryRemoveItems(itemsToRemoveFirst);

            if (removeSucceeded == false)
            {
                return(false);
            }

            var unAdded = _counter.TryAdd(itemsToAdd);

            if (unAdded.Length > 0)
            {
                return(false);
            }

            foreach (var item in itemsToRemoveFirst)
            {
                uint removed = RemoveItem(item.item.ID, item.amount, false);
                Assert.IsTrue(removed == item.amount, "Couldn't remove item even though check passed!");
            }

            bool added = AddItems(InventoryItemUtility.RowsToItems(itemsToAdd, true));

            Assert.IsTrue(added);

            return(true);
        }
        public virtual void GiveCraftReward(CraftingProgressContainer.CraftInfo craftInfo)
        {
            var itemsToAdd = InventoryItemUtility.RowsToItems(craftInfo.blueprint.resultItems, true);

#if UFPS_MULTIPLAYER
            foreach (var item in itemsToAdd)
            {
                var i = item as Devdog.InventoryPro.Integration.UFPS.UFPSInventoryItemBase;
                if (i != null && Devdog.InventoryPro.Integration.UFPS.Multiplayer.InventoryMPUFPSPickupManager.instance != null)
                {
                    Devdog.InventoryPro.Integration.UFPS.Multiplayer.InventoryMPUFPSPickupManager.instance.InstantiateAndRegisterPickupOnAllClients(i);
                }
            }
#endif

            if (craftInfo.storeItemsInCollection != null)
            {
                var before = craftInfo.storeItemsInCollection.canPutItemsInCollection;
                craftInfo.storeItemsInCollection.canPutItemsInCollection = true;

                bool added = craftInfo.storeItemsInCollection.AddItems(itemsToAdd);

                craftInfo.storeItemsInCollection.canPutItemsInCollection = before;

                Assert.IsTrue(added, "Couldn't add items even though check passed. Please report this error + stack trace.");
            }
            else
            {
                // Store crafted item
                bool added = InventoryManager.AddItems(itemsToAdd);
                Assert.IsTrue(added, "Couldn't add items even though check passed. Please report this error + stack trace.");
            }
        }
 protected void Awake()
 {
     _items = InventoryItemUtility.RowsToItems(items, true);
     for (int i = 0; i < _items.Length; i++)
     {
         _items[i].transform.SetParent(transform);
         _items[i].gameObject.SetActive(false);
     }
 }