Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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;
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 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));
 }