public bool IsAllowedToAdd(Pickupable pickupable, bool verbose) { var successful = false; var food = pickupable.GetComponentInChildren <Eatable>(); if (food != null) { #if DEBUG QuickLogger.Debug($"Food Check {CanBeStored(DumpContainer.GetCount() + 1, pickupable.GetTechType())}", true); #endif if ((!food.decomposes || AllowedFoodItems.Contains(pickupable.GetTechType())) && CanBeStored(DumpContainer.GetCount() + 1, pickupable.GetTechType())) { successful = true; } else { foreach (KeyValuePair <string, FCSConnectableDevice> seaBreeze in FCSConnectables) { if (seaBreeze.Value.GetTechType() != Mod.GetSeaBreezeTechType()) { continue; } if (!seaBreeze.Value.CanBeStored(1, pickupable.GetTechType())) { continue; } successful = true; } } if (!successful) { QuickLogger.Message(AuxPatchers.NoFoodItems(), true); } QuickLogger.Debug($"Food Allowed Result: {successful}", true); return(successful); } #if DEBUG QuickLogger.Debug($"{DumpContainer.GetCount() + 1}", true); #endif if (!CanBeStored(DumpContainer.GetCount() + 1, pickupable.GetTechType())) { QuickLogger.Message(AuxPatchers.CannotBeStored(), true); return(false); } return(true); }
public bool AddItemToContainer(InventoryItem item) { var food = item.item.GetComponentInChildren <Eatable>(); if (food != null) { bool successful = false; if ((!food.decomposes || item.item.GetTechType() == TechType.CreepvinePiece) && CanBeStored(DumpContainer.GetCount() + 1, item.item.GetTechType())) { var rackController = FindValidRack(item.item.GetTechType(), 1, out var slot); if (rackController == null) { return(false); } rackController.AddItemToAServer(item, slot); successful = true; } else { foreach (KeyValuePair <string, FCSConnectableDevice> fcsConnectable in FCSConnectables) { if (fcsConnectable.Value.CanBeStored(1, item.item.GetTechType()) && fcsConnectable.Value.GetTechType() == Mod.GetSeaBreezeTechType()) { var result = fcsConnectable.Value.AddItemToContainer(new InventoryItem(item.item), out string reason); successful = true; if (!result) { QuickLogger.Error(reason); } break; } } } if (!successful) { QuickLogger.Message(string.Format(AuxPatchers.NoEmptySeaBreezeFormat(), item.item.GetTechType()), true); return(false); } } else { var rackController = FindValidRack(item.item.GetTechType(), 1, out var slot); if (rackController == null) { return(false); } rackController.AddItemToAServer(item, slot); } return(true); }