public override void Process(FabricatorItemPickup packet) { Optional <GameObject> opGameObject = GuidHelper.GetObjectFrom(packet.FabricatorGuid); if (opGameObject.IsEmpty()) { Console.WriteLine("Could not find fabricator from guid " + packet.FabricatorGuid); return; } GameObject gameObject = opGameObject.Get(); CrafterLogic crafterLogic = gameObject.GetComponentInChildren <CrafterLogic>(true); if (crafterLogic == null) { Console.WriteLine("Game object did not have a crafterLogic component!"); return; } if (crafterLogic.numCrafted > 0) { crafterLogic.numCrafted--; if (crafterLogic.numCrafted == 0) { crafterLogic.Reset(); } } }
static void Prefix(GhostCrafter __instance, TechType techType) { if (techType == TechType.Titanium && extraPowerConsumption > 0f) { CrafterLogic.ConsumeEnergy(__instance.powerRelay, extraPowerConsumption); } }
private Optional <GameObject> CreateVehicle(String techTypeString, String guid) { Optional <TechType> opTechType = ApiHelper.TechType(techTypeString); if (opTechType.IsEmpty()) { Console.WriteLine("Unknown tech type: " + techTypeString); return(Optional <GameObject> .Empty()); } TechType techType = opTechType.Get(); GameObject techPrefab = TechTree.main.GetGamePrefab(techType); if (techPrefab != null) { GameObject gameObject = (GameObject)UnityEngine.Object.Instantiate(techPrefab, Vector3.zero, Quaternion.FromToRotation(Vector3.up, Vector3.up)); gameObject.SetActive(true); CrafterLogic.NotifyCraftEnd(gameObject, techType); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); Rigidbody rigidBody = gameObject.GetComponent <Rigidbody>(); rigidBody.isKinematic = false; GuidHelper.SetNewGuid(gameObject, guid); return(Optional <GameObject> .Of(gameObject)); } else { Console.WriteLine("No prefab for tech type: " + techType); } return(Optional <GameObject> .Empty()); }
private void OnVehiclePrefabLoaded(GameObject prefab, string guid, Vector3 spawnPosition, Quaternion spawnRotation, Optional <List <InteractiveChildObjectIdentifier> > interactiveChildIdentifiers, Optional <string> dockingBayGuid) { // Partially copied from SubConsoleCommand.OnSubPrefabLoaded GameObject gameObject = Utils.SpawnPrefabAt(prefab, null, spawnPosition); gameObject.transform.rotation = spawnRotation; gameObject.SetActive(true); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject)); Rigidbody rigidBody = gameObject.GetComponent <Rigidbody>(); rigidBody.isKinematic = false; GuidHelper.SetNewGuid(gameObject, guid); if (interactiveChildIdentifiers.IsPresent()) { VehicleChildObjectIdentifierHelper.SetInteractiveChildrenGuids(gameObject, interactiveChildIdentifiers.Get()); //Copy From ConstructorBeginCraftingProcessor } if (dockingBayGuid.IsPresent()) { GameObject dockingBayBase = GuidHelper.RequireObjectFrom(dockingBayGuid.Get()); VehicleDockingBay dockingBay = dockingBayBase.GetComponentInChildren <VehicleDockingBay>(); Vehicle vehicle = gameObject.GetComponent <Vehicle>(); dockingBay.DockVehicle(vehicle); } }
public static void Postfix(TechType techType, ref TechUnlockState __result) { if (Main.config.Hardcore && (__result != TechUnlockState.Available || !CrafterLogic.IsCraftRecipeUnlocked(techType))) { __result = TechUnlockState.Hidden; } }
public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent) { TechType techType = entity.TechType.Enum(); GameObject prefab; if (!PrefabDatabase.TryGetPrefab(entity.ClassId, out prefab)) { prefab = CraftData.GetPrefabForTechType(techType, false); if (prefab == null) { return(Optional <GameObject> .Of(Utils.CreateGenericLoot(techType))); } } GameObject gameObject = Utils.SpawnFromPrefab(prefab, null); gameObject.transform.position = entity.Position; gameObject.transform.localScale = entity.Scale; if (parent.IsPresent()) { gameObject.transform.SetParent(parent.Get().transform, true); } gameObject.transform.localRotation = entity.Rotation; GuidHelper.SetNewGuid(gameObject, entity.Guid); gameObject.SetActive(true); LargeWorldEntity.Register(gameObject); CrafterLogic.NotifyCraftEnd(gameObject, techType); return(Optional <GameObject> .Of(gameObject)); }
public static void SpawnPrefab(string objectGuid, ChildGuid[] children, TechType tech, Vector3 position, Quaternion rotation) { if (tech == TechType.None) { return; } if (tech == TechType.Cyclops) { SpawnSub(objectGuid, children, position, rotation); return; } var prefab = CraftData.GetPrefabForTechType(tech); if (prefab == null) { return; } var gameObject = UnityEngine.Object.Instantiate <GameObject>(prefab, position, rotation); gameObject.SetActive(true); GuidHelper.Set(gameObject, objectGuid); GuidHelper.SetChildGuids(gameObject, children); LargeWorldEntity.Register(gameObject); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); CrafterLogic.NotifyCraftEnd(gameObject, tech); SyncedObject.ApplyTo(gameObject); }
public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent) { TechType techType = entity.TechType.Enum(); GameObject prefab; IPrefabRequest prefabRequest = PrefabDatabase.GetPrefabAsync(entity.ClassId); if (!prefabRequest.TryGetPrefab(out prefab)) // I realize its more code but Sorry couldnt stand all the warnings { prefab = CraftData.GetPrefabForTechType(techType, false); if (prefab == null) { return(Optional <GameObject> .Of(Utils.CreateGenericLoot(techType))); } } GameObject gameObject = Utils.SpawnFromPrefab(prefab, null); gameObject.transform.position = entity.Position; gameObject.transform.localScale = entity.Scale; if (parent.IsPresent()) { gameObject.transform.SetParent(parent.Get().transform, true); } gameObject.transform.localRotation = entity.Rotation; gameObject.SetActive(true); NitroxIdentifier.SetNewId(gameObject, entity.Id); LargeWorldEntity.Register(gameObject); CrafterLogic.NotifyCraftEnd(gameObject, techType); return(Optional <GameObject> .Of(gameObject)); }
public static void Postfix(ref string __result, TechType techType) { if (!CrafterLogic.IsCraftRecipeUnlocked(techType)) { __result = Main.config.UnKnownLabel; } }
static void craftUpdateCache(CrafterLogic __instance, TechType techType) { if (isAmountChanged(techType)) { crafterCache[__instance] = currentTechInfo; } }
private void OnVehiclePrefabLoaded(GameObject prefab, string guid, Optional <string> modulesEquipmentGuid, Vector3 spawnPosition, Quaternion spawnRotation, List <InteractiveChildObjectIdentifier> interactiveChildIdentifiers) { // Partially copied from SubConsoleCommand.OnSubPrefabLoaded GameObject gameObject = Utils.SpawnPrefabAt(prefab, null, spawnPosition); gameObject.transform.rotation = spawnRotation; gameObject.SetActive(true); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject)); Rigidbody rigidBody = gameObject.GetComponent <Rigidbody>(); rigidBody.isKinematic = false; GuidHelper.SetNewGuid(gameObject, guid); SetInteractiveChildrenGuids(gameObject, interactiveChildIdentifiers); //Copy From ConstructorBeginCraftingProcessor SubRoot subRoot = gameObject.GetComponent <SubRoot>(); if (subRoot != null) { if (modulesEquipmentGuid.IsPresent()) { GuidHelper.SetNewGuid(subRoot.upgradeConsole.modules.owner, modulesEquipmentGuid.Get()); Log.Info("Cyclop Modules Guid: " + GuidHelper.GetGuid(subRoot.upgradeConsole.modules.owner)); } else { Log.Info("Error Cyclop Modules Guid Missing Cyclop Guid: " + GuidHelper.GetGuid(subRoot.gameObject)); } } }
public override void Process(DroppedItem drop) { Optional <TechType> opTechType = ApiHelper.TechType(drop.TechType); if (opTechType.IsEmpty()) { Console.WriteLine("Attempted to drop unknown tech type: " + drop.TechType); return; } TechType techType = opTechType.Get(); GameObject techPrefab = TechTree.main.GetGamePrefab(techType); if (techPrefab != null) { GameObject gameObject = (GameObject)UnityEngine.Object.Instantiate(techPrefab, ApiHelper.Vector3(drop.ItemPosition), Quaternion.FromToRotation(Vector3.up, Vector3.up)); gameObject.SetActive(true); CrafterLogic.NotifyCraftEnd(gameObject, techType); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); GuidHelper.SetNewGuid(gameObject, drop.Guid); ItemDropAction itemDropAction = ItemDropAction.FromTechType(techType); itemDropAction.ProcessDroppedItem(gameObject); } }
public static void Postfix(ITechData data, ref List <TooltipIcon> icons) { if (data == null) { return; } var ingredientCount = data.ingredientCount; for (var i = 0; i < ingredientCount; i++) { var ingredient = data.GetIngredient(i); var techType = ingredient.techType; if (!KnownTech.Contains(techType) && PDAScanner.ContainsCompleteEntry(techType)) { KnownTech.Add(techType); continue; } if (!CrafterLogic.IsCraftRecipeUnlocked(techType)) { var icon = icons.Find((TooltipIcon) => TooltipIcon.sprite == SpriteManager.Get(techType) && TooltipIcon.text.Contains(Language.main.GetOrFallback(TooltipFactory.techTypeIngredientStrings.Get(techType), techType))); if (icons.Contains(icon)) { icons.Remove(icon); var tooltipIcon = new TooltipIcon() { sprite = SpriteManager.Get(TechType.None), text = Main.Config.UnKnownTitle }; icons.Add(tooltipIcon); } } } }
public override void Process(FabricatorBeginCrafting packet) { Optional <GameObject> opGameObject = GuidHelper.GetObjectFrom(packet.FabricatorGuid); if (opGameObject.IsEmpty()) { Console.WriteLine("Could not find fabricator from guid " + packet.FabricatorGuid); return; } GameObject gameObject = opGameObject.Get(); Fabricator fabricator = gameObject.GetComponentInChildren <Fabricator>(true); if (fabricator == null) { Console.WriteLine("Game object did not have a Fabricator component!"); return; } Optional <TechType> opTechType = ApiHelper.TechType(packet.TechType); if (opTechType.IsEmpty()) { Console.WriteLine("Trying to build unknown tech type: " + packet.TechType + " - ignoring."); return; } TechType techType = opTechType.Get(); float buildDuration = packet.Duration + 0.2f; // small increase to prevent this player from swiping item from remote player FieldInfo logic = typeof(Crafter).GetField("_logic", BindingFlags.Instance | BindingFlags.NonPublic); CrafterLogic crafterLogic = (CrafterLogic)logic.GetValue(fabricator); crafterLogic.Craft(techType, buildDuration); }
public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent) { GameObject prefabForTechType = CraftData.GetPrefabForTechType(entity.TechType, false); if (prefabForTechType == null && !PrefabDatabase.TryGetPrefab(entity.ClassId, out prefabForTechType)) { return(Optional <GameObject> .Of(Utils.CreateGenericLoot(entity.TechType))); } GameObject gameObject = Utils.SpawnFromPrefab(prefabForTechType, null); gameObject.transform.position = entity.Position; gameObject.transform.localScale = entity.Scale; if (parent.IsPresent()) { gameObject.transform.SetParent(parent.Get().transform, true); } gameObject.transform.localRotation = entity.Rotation; GuidHelper.SetNewGuid(gameObject, entity.Guid); gameObject.SetActive(true); // Makes movable objects movable... we can probably do this before the server sends the spawner packet? if (gameObject.GetComponent <Rigidbody>() == null) { gameObject.AddComponent <Rigidbody>(); } LargeWorldEntity.Register(gameObject); CrafterLogic.NotifyCraftEnd(gameObject, entity.TechType); return(Optional <GameObject> .Of(gameObject)); }
static void craftFixAmount(CrafterLogic __instance, TechType techType) { if (isAmountChanged(techType) && originalTechInfo.craftAmount == 0) { __instance.numCrafted = 0; } }
public static void Postfix(ref bool __result) { if (Main.config.Hardcore && __result && Builder.prefab != null) { TechType techType = CraftData.GetTechType(Builder.prefab); __result = CrafterLogic.IsCraftRecipeUnlocked(techType); } }
public static bool OnConsoleCommand_spawn_Prefix(NotificationCenter.Notification n) { if (n != null && n.data != null && n.data.Count > 0) { string text = (string)n.data[0]; if (UWE.Utils.TryParseEnum <TechType>(text, out TechType techType) && techType != TechType.None) { if (CraftData.IsAllowed(techType)) { foreach (IDecorationItem item in DecorationsMod.DecorationItems) { // If item being spawned is one of our decoration items. if (techType == item.TechType) { // If item being spawned is one of our new flora. if (!string.IsNullOrEmpty(item.ClassID) && CustomFlora.AllPlants.Contains(item.ClassID)) { GameObject prefabForTechType = CraftData.GetPrefabForTechType(techType, true); if (prefabForTechType != null) { int num = 1; int num2; if (n.data.Count > 1 && int.TryParse((string)n.data[1], out num2)) { num = num2; } float maxDist = 12f; if (n.data.Count > 2) { maxDist = float.Parse((string)n.data[2]); } Debug.LogFormat("Spawning {0} {1}", new object[] { num, techType }); for (int i = 0; i < num; i++) { GameObject gameObject = global::Utils.CreatePrefab(prefabForTechType, maxDist, i > 0); LargeWorldEntity.Register(gameObject); CrafterLogic.NotifyCraftEnd(gameObject, techType); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); // Hide plant, show seed and enable pickupable PrefabsHelper.HidePlantAndShowSeed(gameObject.transform, item.ClassID); } } else { ErrorMessage.AddDebug("Could not find prefab for TechType = " + techType); } // Dont call original function if item being spawned is one of our new flora. return(false); } break; } } } } } // Give back execution to original function. return(true); }
private static void UpdatePostfix(LeakingRadiation __instance) { if (__instance.radiationFixed && !CrafterLogic.IsCraftRecipeUnlocked(DeathRun.filterChip.TechType) && Config.POISONED.Equals(DeathRun.config.surfaceAir)) { PDAEncyclopedia.Add("FilterChip", true); KnownTech.Add(DeathRun.filterChip.TechType, true); //DeathRun.saveData.playerSave.setCue("FilterChip", 5); } }
public override void Process(VehicleSpawned packet) { vehicles.AddVehicle(packet.VehicleModel); GameObject gameObject = SerializationHelper.GetGameObject(packet.SerializedData); LargeWorldEntity.Register(gameObject); CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject)); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); }
internal static void Prefix(CrafterLogic __instance, GameObject target, TechType techType) { if (techType == SeaTruckScannerModule_Prefab.TechTypeID) { if (!target.activeSelf) { target.SetActive(true); } } }
public static void GivePlayerItem(Pickupable item) { if (Inventory.main.HasRoomFor(item)) { if (Inventory.main.Pickup(item)) { CrafterLogic.NotifyCraftEnd(Player.main.gameObject, item.GetTechType()); } } }
// Token: 0x0600000B RID: 11 RVA: 0x00002A8C File Offset: 0x00000C8C private void OnSubPrefabLoaded(GameObject prefab) { GameObject gameObject = global::Utils.SpawnPrefabAt(prefab, null, this.spawnPosition); gameObject.transform.localScale = new Vector3(this.x, this.y, this.z); gameObject.transform.rotation = this.spawnRotation; gameObject.SetActive(true); gameObject.SendMessage("StartConstruction", 1); LargeWorldEntity.Register(gameObject); CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject)); }
public override void Process(FabricatorBeginCrafting packet) { GameObject gameObject = GuidHelper.RequireObjectFrom(packet.FabricatorGuid); Fabricator fabricator = gameObject.RequireComponentInChildren <Fabricator>(true); float buildDuration = packet.Duration + 0.2f; // small increase to prevent this player from swiping item from remote player FieldInfo logic = typeof(Crafter).GetField("_logic", BindingFlags.Instance | BindingFlags.NonPublic); CrafterLogic crafterLogic = (CrafterLogic)logic.GetValue(fabricator); crafterLogic.Craft(packet.TechType, buildDuration); }
static void craftFixEnergyConsumption(GhostCrafter __instance, TechType techType) { if (!Main.config.bulkCrafting.changePowerConsumption) { return; } if (isAmountChanged(techType)) { CrafterLogic.ConsumeEnergy(__instance.powerRelay, (currentCraftAmount - 1) * 5f); // and 5f also consumed in the vanilla method } }
public static void Postfix(ref StringBuilder sb, TechType techType) { PDAScanner.EntryData entryData = PDAScanner.GetEntryData(techType); if (entryData == null || PDAScanner.ContainsCompleteEntry(techType) || CrafterLogic.IsCraftRecipeUnlocked(techType)) { return; } sb.Clear(); TooltipFactory.WriteTitle(sb, Main.config.UnKnownTitle); TooltipFactory.WriteDescription(sb, Main.config.UnKnownDescription); }
public override void Process(GhostCrafterBeginCrafting packet) { GameObject gameObject = NitroxEntity.RequireObjectFrom(packet.GhostCrafterId); GhostCrafter ghostCrafter = gameObject.RequireComponentInChildren <GhostCrafter>(true); float buildDuration = packet.Duration + 0.2f; // small increase to prevent this player from swiping item from remote player FieldInfo logic = typeof(Crafter).GetField("_logic", BindingFlags.Instance | BindingFlags.NonPublic); CrafterLogic crafterLogic = (CrafterLogic)logic.GetValue(ghostCrafter); crafterLogic.Craft(packet.TechType.ToUnity(), buildDuration); }
public static bool OnConsoleCommand_item_Prefix(NotificationCenter.Notification n) { if (n != null && n.data != null && n.data.Count > 0) { string text = (string)n.data[0]; if (UWE.Utils.TryParseEnum <TechType>(text, out TechType techType) && techType != TechType.None) { if (CraftData.IsAllowed(techType)) { foreach (IDecorationItem item in DecorationsMod.DecorationItems) { // If item being spawned is one of our decoration items. if (techType == item.TechType) { // If item being spawned is one of our new flora. if (!string.IsNullOrEmpty(item.ClassID) && CustomFlora.AllPlants.Contains(item.ClassID)) { int num = 1; if (n.data.Count > 1 && int.TryParse((string)n.data[1], out int num2)) { num = num2; } for (int i = 0; i < num; i++) { GameObject gameObject = CraftData.InstantiateFromPrefab(techType, false); if (gameObject != null) { gameObject.transform.position = MainCamera.camera.transform.position + MainCamera.camera.transform.forward * 3f; CrafterLogic.NotifyCraftEnd(gameObject, techType); Pickupable component = gameObject.GetComponent <Pickupable>(); if (component != null && !Inventory.main.Pickup(component, false)) { ErrorMessage.AddError(Language.main.Get("InventoryFull")); // Hide plant, show seed and enable pickupable PrefabsHelper.HidePlantAndShowSeed(gameObject.transform, item.ClassID); } } } // Dont call original function if item being spawned is one of our new flora. return(false); } break; } } } } } // Give back execution to original function. return(true); }
public override void Process(FabricatorItemPickup packet) { GameObject gameObject = NitroxIdentifier.RequireObjectFrom(packet.FabricatorId); CrafterLogic crafterLogic = gameObject.RequireComponentInChildren <CrafterLogic>(true); if (crafterLogic.numCrafted > 0) { crafterLogic.numCrafted--; if (crafterLogic.numCrafted == 0) { crafterLogic.Reset(); } } }
private void GiveReward(TechType techType) { GameObject gameObject = CraftData.InstantiateFromPrefab(techType, false); if (gameObject != null) { gameObject.transform.position = MainCamera.camera.transform.position + MainCamera.camera.transform.forward * 2f; CrafterLogic.NotifyCraftEnd(gameObject, techType); Pickupable component = gameObject.GetComponent <Pickupable>(); if (component != null && !Inventory.main.Pickup(component, false)) { ErrorMessage.AddError(Language.main.Get("InventoryFull")); } } }