public static GameObject CreateGasOreEntity(SimHashes elementId, List <Tag> additionalTags = null) { GameObject gameObject = CreateOreEntity(elementId, CollisionShape.RECTANGLE, 0.5f, 0.6f, additionalTags, 293f); Dumpable dumpable = gameObject.AddOrGet <Dumpable>(); dumpable.SetWorkTime(5f); gameObject.AddOrGet <SubstanceChunk>(); return(gameObject); }
private static void Prefix(PlantElementAbsorbers __instance, float dt) { List <PlantElementAbsorber> data = Traverse.Create(__instance).Field("data").GetValue <List <PlantElementAbsorber> >(); int count = data.Count; Traverse.Create(__instance).Field("updating").SetValue(true); for (int i = 0; i < count; ++i) { PlantElementAbsorber plantElementAbsorber = data[i]; if (plantElementAbsorber.storage != null && plantElementAbsorber.consumedElements == null) { float a = plantElementAbsorber.localInfo.massConsumptionRate * dt; PrimaryElement firstWithMass = plantElementAbsorber.storage.FindFirstWithMass(plantElementAbsorber.localInfo.tag); if (firstWithMass != null) { if (firstWithMass.Element.tag.Equals(ElementLoader.FindElementByHash(Elements.MineralWaterElement.SimHash).tag)) { float amount = Mathf.Min(a, firstWithMass.Mass); float convertedAmount = amount * ConversionRate; plantElementAbsorber.storage.AddLiquid(SimHashes.Water, convertedAmount, firstWithMass.Temperature, byte.MaxValue, 0); float availableMass = plantElementAbsorber.storage.GetMassAvailable(SimHashes.Water); Console.WriteLine(string.Format("checking available mass is {0}", availableMass)); if (availableMass >= MinDumpAmount) { PrimaryElement element = plantElementAbsorber.storage.FindFirstWithMass(ElementLoader.FindElementByHash(SimHashes.Water).tag); Dumpable component = element.gameObject.GetComponent <Dumpable>(); if (component == null) { DebugUtil.LogWarningArgs("Was unable to dump water converted from mineral water!"); continue; } component.Dump(plantElementAbsorber.storage.transform.GetPosition()); } } } } } }