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; }
internal virtual void OnDumpClose(PDA pda) { QuickLogger.Debug($"Store Items Dump Count: {_dumpContainer.count}"); OnDumpContainerClosed?.Invoke(); var amount = _dumpContainer.count; for (int i = amount - 1; i > -1; i--) { QuickLogger.Debug($"Number of iteration: {i}"); var item = _dumpContainer.ElementAt(0); _dumpContainer.RemoveItem(item.item, true); _storage.AddItemToContainer(item); } }
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); }
private void DumpContainerOnOnAddItem(InventoryItem item) { _storage.AddItemToContainer(item); }
public virtual bool AddItemToContainer(InventoryItem item, out string reason) { reason = null;//Todo add needed thibgsb return(_storage.AddItemToContainer(item)); }