コード例 #1
0
ファイル: Inventory.cs プロジェクト: JoelPlourde/Shore-Squad
        /// <summary>
        /// Remove items from the inventory.
        /// </summary>
        /// <param name="items">Items to remove from the inventory.</param>
        /// <param name="remainingItems">Items that couldn't be removed from the inventory.</param>
        /// <returns>Returns the items that have been removed.</returns>
        public void RemoveItemsFromInventory(List <Item> items, out List <Item> remainingItems)
        {
            remainingItems = new List <Item>();
            List <int> indexes = new List <int>();

            foreach (Item item in items)
            {
                CheckIfItemExistsInInventory(item.ItemData, out int availableAmount);
                if (availableAmount >= item.Amount)
                {
                    RemoveItemFromInventory(item.ItemData, item.Amount, ref indexes);
                }
                else
                {
                    RemoveItemFromInventory(item.ItemData, availableAmount, ref indexes);
                    int diff = item.Amount - availableAmount;
                    if (diff > 0)
                    {
                        remainingItems.Add(new Item(item.ItemData, diff));
                    }
                }
            }

            OnDirtyItemsEvent?.Invoke(indexes, Items);
        }
コード例 #2
0
ファイル: Inventory.cs プロジェクト: JoelPlourde/Shore-Squad
        /// <summary>
        /// Add items to the inventory.
        /// </summary>
        /// <param name="items">Items to add to the inventory.</param>
        /// <param name="remainingItems">Items that couldn't be added to the inventory.</param>
        /// /// <returns>Returns the items that have been added.</returns>
        public void AddItemsToInventory(List <Item> items, out List <Item> remainingItems)
        {
            remainingItems = new List <Item>();
            List <int> indexes = new List <int>();

            foreach (Item item in items)
            {
                int availableAmount = GetNumberOfAvailableSlotForItem(item.ItemData);

                if (availableAmount == 0)
                {
                    remainingItems.Add(new Item(item.ItemData, item.Amount));
                    continue;
                }

                if (availableAmount >= item.Amount)
                {
                    AddItemToInventory(item.ItemData, item.Amount, ref indexes);
                }
                else
                {
                    AddItemToInventory(item.ItemData, availableAmount, ref indexes);
                    int diff = item.Amount - availableAmount;
                    if (diff > 0)
                    {
                        remainingItems.Add(new Item(item.ItemData, diff));
                    }
                }
            }

            OnDirtyItemsEvent?.Invoke(indexes, Items);
        }