コード例 #1
0
        public static bool removeItem(this ItemsContainer container, TechType techType, Predicate <Pickupable> predicate)
        {
            if (!container._items.TryGetValue(techType, out ItemsContainer.ItemGroup itemGroup))
            {
                return(false);
            }

            var items = itemGroup.items;

            for (int i = items.Count - 1; i >= 0; i--)
            {
                InventoryItem inventoryItem = items[i];
                Pickupable    item          = inventoryItem.item;
                if (!(container as IItemsContainer).AllowedToRemove(item, true))
                {
                    return(false);
                }

                if (!predicate(item))
                {
                    continue;
                }

                items.RemoveAt(i);
                if (items.Count == 0)
                {
                    container._items.Remove(techType);
                }

                inventoryItem.container = null;

                eventTechTypeChanged.remove <OnTechTypeChanged>(item, container.UpdateItemTechType);

                container.count--;
                container.unsorted = true;
                container.NotifyRemoveItem(inventoryItem);

                Object.Destroy(item.gameObject);
                return(true);
            }

            return(false);
        }
コード例 #2
0
 void OnDestroy() => onBindingsChanged.remove <Action>(clearCachedActions);