Pickup() публичный Метод

public Pickup ( GameObject _player ) : void
_player GameObject
Результат void
Пример #1
0
 void Pickup(Pickupable objectToPickup)
 {
     heldObject = objectToPickup;
     //Let the Object know it has been picked up
     objectToPickup.Pickup();
     StartCoroutine(ICarryObject(objectToPickup));
 }
Пример #2
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;
        }
        private static IEnumerator SpawnCreature(WaterPark waterPark, WaterParkCreature parkCreature, ItemsContainer container)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(parkCreature.pickupable.GetTechType(), false);

            yield return(task);

            GameObject prefab = task.GetResult();

            prefab.SetActive(false);
            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.AddItem(pickupable);

            yield break;
        }
        public IEnumerable <BioEnergy> GetMaterialsInProcessing()
        {
            foreach (EmModuleSaveData savedItem in _materials.Values)
            {
                var techTypeID = (TechType)savedItem.ItemID;

                GameObject prefab = CraftData.GetPrefabForTechType(techTypeID);

                if (prefab == null)
                {
                    QuickLogger.Warning($"Unable to find prefab for TechType '{techTypeID}'");
                    continue;
                }

                var gameObject = GameObject.Instantiate(prefab);

                Pickupable pickupable = gameObject.GetComponent <Pickupable>();

                if (pickupable == null)
                {
                    QuickLogger.Warning($"Unable to find Pickupable component for item '{techTypeID.AsString()}'");
                    continue;
                }

                pickupable.Pickup(false);

                yield return(new BioEnergy(pickupable, savedItem.RemainingCharge));
            }
        }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        if (!_active)
        {
            return;
        }

        //GetComponent<Animator>().Play(Walking.name);
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 vWorldMousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            vWorldMousePosition.z    = 0.0f;
            mTargetPosition.position = vWorldMousePosition;
            mPlayer.WalkTo(vWorldMousePosition);

            if (mPickupIssued)
            {
                mPickupIssued = false;
            }

            else
            {
                mPickupTarget = null;
            }

            Events.instance.Raise(new PlaySoundEvent(SoundLibrarySelection.Meow));
        }

        else if (mPickupTarget != null && mPlayer.IsWalking() == false)
        {
            mPickupTarget.Pickup();
            mPickupTarget = null;
        }
    }
Пример #6
0
 public void GrabObject(bool lerp = true)
 {
     currentHeld.Pickup(GetParentTransform(currentHeld.holdPosition));
     LerpPositon(currentHeld);
     _handIKController.LerpRotation(1);
     _handIKController.LerpPositon(1);
 }
        public void LoadSave(List <EatableEntities> save)
        {
            if (save == null)
            {
                return;
            }

            foreach (EatableEntities eatableEntities in save)
            {
                QuickLogger.Debug($"Adding entity {eatableEntities.Name}");

                var food = GameObject.Instantiate(CraftData.GetPrefabForTechType(eatableEntities.TechType));

                var eatable = food.gameObject.GetComponent <Eatable>();
                eatable.timeDecayStart = eatableEntities.TimeDecayStart;

#if SUBNAUTICA
                var item = new InventoryItem(food.gameObject.GetComponent <Pickupable>().Pickup(false));
#elif BELOWZERO
                Pickupable pickupable = food.gameObject.GetComponent <Pickupable>();
                pickupable.Pickup(false);
                var item = new InventoryItem(pickupable);
#endif

                AddItem(item, true, eatableEntities.TimeDecayPause);

                QuickLogger.Debug(
                    $"Load Item {item.item.name}|| Decompose: {eatable.decomposes} || DRate: {eatable.kDecayRate}");
            }
        }
Пример #8
0
        public IEnumerable <BioEnergy> GetMaterialsInProcessing()
        {
            foreach (EmModuleSaveData savedItem in _materials.Values)
            {
                var techTypeID = (TechType)savedItem.ItemID;
                var gameObject = GameObject.Instantiate(CraftData.GetPrefabForTechType(techTypeID));

                Pickupable pickupable = gameObject.GetComponent <Pickupable>();
                pickupable.Pickup(false);

                yield return(new BioEnergy(pickupable, savedItem.RemainingCharge));
            }
        }
Пример #9
0
        //private void UpdatePickupables(Player player)
        //{
        //    for (int i = 0; i < GameState.Pickupables.Count; i++)
        //    {
        //        Pickupable pickup = GameState.Pickupables[i];
        //        if (CollisionTester.BoundingBoxTest(player, pickup))
        //        {
        //            pickup.Pickup(player);
        //            GameState.Pickupables.RemoveAt(i);
        //        }
        //    }
        //}
        private void UpdatePickupables(Player player)
        {
            var iter = GameState.PickupableRep.GetIterator();

            while (iter.HasNext())
            {
                Pickupable pickup = (Pickupable)iter.Next();
                if (CollisionTester.BoundingBoxTest(player, pickup))
                {
                    pickup.Pickup(player);
                    iter.Remove();
                }
            }
        }
        internal static Pickupable ToPickupable(this TechType techType)
        {
            Pickupable pickupable = null;
            var        prefab     = CraftData.GetPrefabForTechType(techType);

            if (prefab != null)
            {
                var go = GameObject.Instantiate(prefab);
                pickupable = go.GetComponent <Pickupable>();
                pickupable.Pickup(false);
            }

            return(pickupable);
        }
Пример #11
0
        public static IEnumerator AddToReactor(SubRoot subRoot, TechType fishType, Vector2int sizePerFish, BaseBioReactor reactor)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(fishType, false);

            yield return(task);

            GameObject prefab = task.GetResult();

            prefab.SetActive(false);

            if (!reactor.container.HasRoomFor(sizePerFish.x, sizePerFish.y))
            {
                int breedCount = 1;

                if (QModServices.Main.ModPresent("FCSEnergySolutions"))
                {
                    AGCompat.TryOverflowIntoAlterraGens(subRoot, fishType, ref breedCount);
                }

                if (QModServices.Main.ModPresent("CyclopsBioReactor") && breedCount > 0)
                {
                    CBRCompat.TryOverflowIntoCyclopsBioreactors(subRoot, fishType, ref breedCount);
                }

                if (breedCount > 0)
                {
                    Main.TryOverflowIntoBioreactors(subRoot, fishType, ref breedCount);
                }

                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
            reactor.container.AddItem(pickupable);
            yield break;
        }
Пример #12
0
        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;
        }
Пример #13
0
    private void OnTriggerEnter(Collider other)
    {
        if (pickupMode)
        {
            Pickupable pickup = other.gameObject.GetComponent <Pickupable>();
            if (pickup != null && !pickedStuff.Contains(pickup))
            {
                pickup.Pickup(this);
                pickedStuff.Add(pickup);

                // Play sound
                var source = GetComponent <AudioSource>();
                source.clip = clip;
                source.Play();
            }
        }
    }
Пример #14
0
        private static IEnumerator GiveHardcoreScanner()
        {
            CoroutineTask <GameObject> task1 = CraftData.GetPrefabForTechTypeAsync(TechType.Scanner);

            yield return(task1);

            GameObject scannerPrefab = task1.GetResult();
            GameObject gameObject1   = GameObject.Instantiate(scannerPrefab);
            Pickupable pickupable1   = gameObject1.GetComponent <Pickupable>();

            scannerPrefab.SetActive(false);

            CoroutineTask <GameObject> task2 = CraftData.GetPrefabForTechTypeAsync(TechType.Battery);

            yield return(task2);

            GameObject batteryPrefab = task2.GetResult();
            GameObject gameObject2   = GameObject.Instantiate(batteryPrefab);
            Pickupable pickupable2   = gameObject2.GetComponent <Pickupable>();

            batteryPrefab.SetActive(false);

#if SUBNAUTICA_EXP
            TaskResult <Pickupable> task3 = new TaskResult <Pickupable>();
            yield return(pickupable1.PickupAsync(task3, false));

            yield return(task3);

            pickupable1 = task3.Get();

            TaskResult <Pickupable> task4 = new TaskResult <Pickupable>();
            yield return(pickupable2.PickupAsync(task4, false));

            yield return(task4);

            pickupable2 = task4.Get();
#else
            pickupable1.Pickup(false);
            pickupable2.Pickup(false);
#endif
            ScannerTool scannerTool = pickupable1?.GetComponent <ScannerTool>();
            scannerTool?.energyMixin?.batterySlot?.AddItem(pickupable2);

            Inventory.main.container.AddItem(pickupable1);
            yield break;
        }
        internal void LoadInputContainer(IEnumerable <EatableEntities> dataInput)
        {
            foreach (EatableEntities eatableEntity in dataInput)
            {
                var go   = GameObject.Instantiate(CraftData.GetPrefabForTechType(eatableEntity.TechType));
                var food = go.GetComponent <Eatable>();
                food.waterValue = eatableEntity.GetWaterValue();
                food.foodValue  = eatableEntity.GetFoodValue();
#if SUBNAUTICA
                _container.UnsafeAdd(new InventoryItem(food.GetComponent <Pickupable>().Pickup(false)));
#elif BELOWZERO
                Pickupable pickupable = food.GetComponent <Pickupable>();
                pickupable.Pickup(false);
                _container.UnsafeAdd(new InventoryItem(pickupable));
#endif
            }
        }
        private void AddItem(ItemData itemData)
        {
            var prefab = CraftData.GetPrefabForTechType(itemData.TechType, false);

            if (prefab != null)
            {
                var go = GameObject.Instantiate(prefab);
#if SUBNAUTICA
                var newInventoryItem = new InventoryItem(go.GetComponent <Pickupable>().Pickup(false));
#elif BELOWZERO
                Pickupable pickupable = go.GetComponent <Pickupable>();
                pickupable.Pickup(false);
                var newInventoryItem = new InventoryItem(pickupable);
#endif
                newInventoryItem.SetGhostDims(1, 1);
                _container.container.UnsafeAdd(newInventoryItem);
            }
        }
Пример #17
0
        public List <BioEnergy> GetMaterialsInProcessing()
        {
            var list = new List <BioEnergy>();

            for (int m = 0; m < _materials.Values.Count; m++)
            {
                EmModuleSaveData savedItem = _materials.Values[m];

                if (savedItem.ItemID <= 0)
                {
                    continue;
                }

                GameObject prefab = CraftData.GetPrefabForTechType((TechType)savedItem.ItemID);

                if (prefab == null)
                {
                    continue;
                }

                var gameObject = GameObject.Instantiate(prefab);

                if (gameObject == null)
                {
                    continue;
                }

                Pickupable pickupable = gameObject.GetComponent <Pickupable>();

                if (pickupable == null)
                {
                    continue;
                }

                pickupable.Pickup(false);

                list.Add(new BioEnergy(pickupable, savedItem.RemainingCharge));
            }

            return(list);
        }
        internal void SetEquipment(FuelType tank)
        {
            var techType = TechTypeHelpers.GetTechType(tank);

            if (techType == TechType.None)
            {
                return;
            }

            var getTank = CraftData.GetPrefabForTechType(techType);

#if SUBNAUTICA
            _equipment.AddItem(Configuration.Configuration.SlotIDs[0],
                               new InventoryItem(getTank.GetComponent <Pickupable>().Pickup(false)));
#elif BELOWZERO
            Pickupable pickupable = getTank.GetComponent <Pickupable>();
            pickupable.Pickup(false);
            _equipment.AddItem(Configuration.Configuration.SlotIDs[0],
                               new InventoryItem(pickupable));
#endif
        }
        private void OnFoodCookedAll(TechType oldTechType, List <TechType> cookedTechTypes)
        {
            _mono.AudioManager.StopMachineAudio();

            foreach (TechType type in cookedTechTypes)
            {
                var newFood = GameObject.Instantiate(CraftData.GetPrefabForTechType(type));

#if SUBNAUTICA
                var item = new InventoryItem(newFood.GetComponent <Pickupable>().Pickup(false));
#elif BELOWZERO
                Pickupable pickupable = newFood.GetComponent <Pickupable>();
                pickupable.Pickup(false);
                var item = new InventoryItem(pickupable);
#endif

                _exportContainer.UnsafeAdd(item);

                QuickLogger.Debug($"Food {oldTechType} has been cooked", true);
            }

            if (_exportToSeaBreeze)
            {
                SendToSeaBreeze();
            }

            _container.Clear();
            _lockInputContainer = false;

            //if (_container.count > 0)
            //{
            //    CookStoredFood();
            //    return;
            //}

            _mono.DisplayManager.ToggleProcessDisplay(false);
            _mono.UpdateIsRunning(false);
        }
        internal void LoadPowercellItems(IEnumerable <PowercellData> savedDataPowercellDatas)
        {
            foreach (PowercellData powercellData in savedDataPowercellDatas)
            {
                QuickLogger.Debug($"Adding entity {powercellData.TechType}");

                var prefab = GameObject.Instantiate(CraftData.GetPrefabForTechType(powercellData.TechType));
                prefab.gameObject.GetComponent <PrefabIdentifier>().Id = powercellData.PrefabID;

                var battery = prefab.gameObject.GetComponent <Battery>();
                battery._charge = powercellData.Charge;

#if SUBNAUTICA
                var item = new InventoryItem(prefab.gameObject.GetComponent <Pickupable>().Pickup(false));
#elif BELOWZERO
                Pickupable pickupable = prefab.gameObject.GetComponent <Pickupable>();
                pickupable.Pickup(false);
                var item = new InventoryItem(pickupable);
#endif

                _batteryContainer.UnsafeAdd(item);
                QuickLogger.Debug($"Load Item {item.item.name}");
            }
        }
        internal void LoadData(DeepDrillerPowerData data)
        {
            foreach (PowerUnitData powercellData in data.Batteries)
            {
                QuickLogger.Debug($"Adding entity {powercellData.TechType}");

                var prefab = GameObject.Instantiate(CraftData.GetPrefabForTechType(powercellData.TechType));
                prefab.gameObject.GetComponent <PrefabIdentifier>().Id = powercellData.PrefabID;

                var battery = prefab.gameObject.GetComponent <Battery>();
                battery._charge = powercellData.Charge;

#if SUBNAUTICA
                var item = new InventoryItem(prefab.gameObject.GetComponent <Pickupable>().Pickup(false));
#elif BELOWZERO
                Pickupable pickupable = prefab.gameObject.GetComponent <Pickupable>();
                pickupable.Pickup(false);
                var item = new InventoryItem(pickupable);
#endif

                _equipment.AddItem(powercellData.Slot, item);
                QuickLogger.Debug($"Load Item {item.item.name} to slot {powercellData.Slot}");
            }
        }
Пример #22
0
        public static bool Prefix(Trashcan __instance)
        {
            if (__instance.biohazard)
            {
                return(true);
            }

            __instance.storageContainer.hoverText        = "Recycling Bin";
            __instance.storageContainer.storageLabel     = "Recycling Bin";
            __instance.storageContainer.container._label = "Recycling Bin";

            inventoryItems   = new List <InventoryItem>();
            forcePickupItems = new List <Pickupable>();

            foreach (Trashcan.Waste waste in __instance.wasteList)
            {
                InventoryItem item = waste.inventoryItem;

                if (item is null)
                {
                    continue;
                }

                TechType techType = item.item.GetTechType();
#if SUBNAUTICA
                TechData techData = CraftDataHandler.GetTechData(techType);
#elif BELOWZERO
                RecipeData techData = CraftDataHandler.GetRecipeData(techType);
#endif

                if (!GameInput.GetButtonHeld(GameInput.Button.Deconstruct) && techType != TechType.Titanium && techData != null && techData.ingredientCount > 0 && Main.BatteryCheck(item.item))
                {
                    if (CheckRequirements(__instance, item.item, techData))
                    {
                        foreach (Ingredient ingredient in techData.Ingredients)
                        {
                            for (int i = ingredient.amount; i > 0; i--)
                            {
                                GameObject gameObject = CraftData.InstantiateFromPrefab(ingredient.techType, false);
                                gameObject.SetActive(true);
                                Pickupable pickupable = gameObject.GetComponent <Pickupable>();
                                pickupable.Pickup(false);
                                if ((item.item.GetComponent <IBattery>() == null && pickupable.GetComponent <IBattery>() != null && QModServices.Main.ModPresent("NoBattery")) || pickupable.GetComponent <LiveMixin>() != null)
                                {
                                    UnityEngine.Object.Destroy(pickupable.gameObject);
                                }
                                else
                                {
                                    forcePickupItems.Add(pickupable);
                                }
                            }
                        }
                        break;
                    }
                }
                else
                {
                    if (GameInput.GetButtonHeld(GameInput.Button.Deconstruct))
                    {
                        inventoryItems.Add(item);
                    }
                    else
                    {
                        forcePickupItems.Add(item.item);
                    }

                    break;
                }
            }
            forcePickupItems.ForEach((rejectedItem) => Inventory.main.ForcePickup(rejectedItem));
            inventoryItems.ForEach((item) => UnityEngine.Object.Destroy(item.item.gameObject));

            return(false);
        }
Пример #23
0
 void DoPickup(Pickupable pickupable)
 {
     pickupable.Pickup(holdPoint.position, transform);
     heldItem = pickupable;
 }
Пример #24
0
        public static bool Prefix(Trashcan __instance)
        {
            if (__instance.biohazard)
            {
                return(true);
            }

            __instance.storageContainer.hoverText        = "Recycling Bin";
            __instance.storageContainer.storageLabel     = "Recycling Bin";
            __instance.storageContainer.container._label = "Recycling Bin";

            inventoryItems   = new List <InventoryItem>();
            forcePickupItems = new List <Pickupable>();

            foreach (Trashcan.Waste waste in __instance.wasteList)
            {
                InventoryItem item = waste.inventoryItem;

                if (item is null)
                {
                    continue;
                }

                TechType techType = item.item.GetTechType();

                ITechData techData = CraftData.Get(techType);

                bool inputcheck = GameInput.GetButtonHeld(GameInput.Button.Deconstruct);

                if (!inputcheck && techType != TechType.Titanium && Main.BatteryCheck(item.item) && techData != null)
                {
                    if (CheckRequirements(__instance, item.item, techData))
                    {
                        for (int i = 0; i < techData.ingredientCount; i++)
                        {
                            IIngredient ingredient = techData.GetIngredient(i);

                            for (int j = 0; j < ingredient.amount; j++)
                            {
                                GameObject gameObject = CraftData.InstantiateFromPrefab(ingredient.techType, false);
                                if (gameObject.GetComponent <LiveMixin>() != null)
                                {
                                    GameObject.Destroy(gameObject);
                                    break;
                                }

                                gameObject.SetActive(true);
                                Pickupable pickupable = gameObject.GetComponent <Pickupable>();
                                pickupable.Pickup(false);
                                forcePickupItems.Add(pickupable);
                            }
                        }
                        break;
                    }
                }
                else
                {
                    if (inputcheck)
                    {
                        inventoryItems.Add(item);
                    }
                    else
                    {
                        forcePickupItems.Add(item.item);
                    }

                    break;
                }
            }
            forcePickupItems.ForEach((rejectedItem) => Inventory.main.ForcePickup(rejectedItem));
            inventoryItems.ForEach((item) => UnityEngine.Object.Destroy(item.item.gameObject));

            return(false);
        }