private static IEnumerator AddItemToAlterraGen(TechType parkCreatureTechType, IFCSStorage container) { CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(parkCreatureTechType, false); yield return(task); GameObject prefab = task.GetResult(); prefab.SetActive(false); while (!container.CanBeStored(1, parkCreatureTechType)) { yield return(new WaitForSecondsRealtime(1)); } GameObject gameObject = GameObject.Instantiate(prefab); Pickupable pickupable = gameObject.EnsureComponent <Pickupable>(); #if SUBNAUTICA_EXP TaskResult <Pickupable> taskResult = new TaskResult <Pickupable>(); yield return(pickupable.PickupAsync(taskResult, false)); pickupable = taskResult.Get(); #else pickupable.Pickup(false); #endif container.AddItemToContainer(new InventoryItem(pickupable)); yield break; }
private static IEnumerator AddItemToAlterraGen(SubRoot subRoot, TechType fishType, IFCSStorage container) { CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(fishType, false); yield return(task); GameObject prefab = task.GetResult(); prefab.SetActive(false); int breedCount = 1; if (!container.CanBeStored(breedCount, fishType)) { if (QModServices.Main.ModPresent("CyclopsBioReactor")) { CBRCompat.TryOverflowIntoCyclopsBioreactors(subRoot, fishType, ref breedCount); } if (breedCount > 0) { Main.TryOverflowIntoBioreactors(subRoot, fishType, ref breedCount); } yield break; } if (breedCount == 0) { yield break; } GameObject gameObject = GameObject.Instantiate(prefab); Pickupable pickupable = gameObject.EnsureComponent <Pickupable>(); #if SUBNAUTICA_EXP TaskResult <Pickupable> taskResult = new TaskResult <Pickupable>(); yield return(pickupable.PickupAsync(taskResult, false)); pickupable = taskResult.Get(); #else pickupable.Pickup(false); #endif container.AddItemToContainer(new InventoryItem(pickupable)); yield break; }
/// <summary> /// Removes item from container and sends to another device /// </summary> /// <param name="techType"></param> /// <param name="deviceStorage"></param> /// <returns></returns> internal bool TransferItem(TechType techType, IFCSStorage deviceStorage) { try { //Remove item from container var isRemoved = RemoveItemFromContainer(techType); if (isRemoved) { var canBeStored = deviceStorage.CanBeStored(1, techType); if (canBeStored) { deviceStorage.AddItemToContainer(techType.ToInventoryItem()); } } } catch (Exception e) { QuickLogger.Error <FCSDeepDrillerContainer>(e.Message); QuickLogger.Error <FCSDeepDrillerContainer>(e.StackTrace); } return(true); }
public bool CanBeStored(int amount) { return(_storage.CanBeStored(amount)); }
public bool CanBeStored(int amount, TechType techType = TechType.None) { return(_storage.CanBeStored(amount, techType)); }