void Pickup(Pickupable objectToPickup) { heldObject = objectToPickup; //Let the Object know it has been picked up objectToPickup.Pickup(); StartCoroutine(ICarryObject(objectToPickup)); }
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)); } }
// 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; } }
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}"); } }
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)); } }
//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); }
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; }
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; }
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(); } } }
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); } }
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}"); } }
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); }
void DoPickup(Pickupable pickupable) { pickupable.Pickup(holdPoint.position, transform); heldItem = pickupable; }
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); }