public override void DoPostConfigureComplete(GameObject go) { GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_0); go.AddOrGet <LogicOperationalController>(); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false); go.AddOrGet <LoopingSounds>(); Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 50f; ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Gas; conduitConsumer.consumptionRate = 0.900000036f; conduitConsumer.capacityTag = GameTags.CombustibleGas; conduitConsumer.capacityKG = 0.900000036f; conduitConsumer.forceAlwaysSatisfied = true; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>(); energyGenerator.powerDistributionOrder = 8; energyGenerator.ignoreBatteryRefillPercent = true; EnergyGenerator.Formula formula = default(EnergyGenerator.Formula); formula.inputs = new EnergyGenerator.InputItem[1] { new EnergyGenerator.InputItem(GameTags.CombustibleGas, 0.09f, 0.900000036f) }; formula.outputs = new EnergyGenerator.OutputItem[2] { new EnergyGenerator.OutputItem(SimHashes.DirtyWater, 0.0675f, false, new CellOffset(1, 1), 313.15f), new EnergyGenerator.OutputItem(SimHashes.CarbonDioxide, 0.0225f, true, new CellOffset(0, 2), 383.15f) }; energyGenerator.formula = formula; ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>(); conduitDispenser.conduitType = ConduitType.Gas; conduitDispenser.invertElementFilter = true; conduitDispenser.elementFilter = new SimHashes[2] { SimHashes.Methane, SimHashes.Syngas }; Tinkerable.MakePowerTinkerable(go); go.AddOrGetDef <PoweredActiveController.Def>(); }
public override void DoPostConfigureComplete(GameObject go) { GeneratedBuildings.RegisterLogicPorts(go, LogicOperationalController.INPUT_PORTS_0_0); go.AddOrGet <LogicOperationalController>(); go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false); go.AddOrGet <LoopingSounds>(); go.AddOrGet <Storage>(); BuildingDef def = go.GetComponent <Building>().Def; float num = 20f; go.AddOrGet <LoopingSounds>(); ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = def.InputConduitType; conduitConsumer.consumptionRate = 10f; conduitConsumer.capacityTag = GameTags.CombustibleLiquid; conduitConsumer.capacityKG = num; conduitConsumer.forceAlwaysSatisfied = true; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; EnergyGenerator energyGenerator = go.AddOrGet <EnergyGenerator>(); energyGenerator.powerDistributionOrder = 8; energyGenerator.ignoreBatteryRefillPercent = true; energyGenerator.hasMeter = true; EnergyGenerator.Formula formula = default(EnergyGenerator.Formula); formula.inputs = new EnergyGenerator.InputItem[1] { new EnergyGenerator.InputItem(GameTags.CombustibleLiquid, 2f, num) }; formula.outputs = new EnergyGenerator.OutputItem[2] { new EnergyGenerator.OutputItem(SimHashes.CarbonDioxide, 0.5f, false, new CellOffset(0, 3), 383.15f), new EnergyGenerator.OutputItem(SimHashes.DirtyWater, 0.75f, false, new CellOffset(1, 1), 313.15f) }; energyGenerator.formula = formula; Tinkerable.MakePowerTinkerable(go); go.AddOrGetDef <PoweredActiveController.Def>(); }
private static bool Prefix(ref bool __result, float dt, EnergyGenerator.Formula ___formula, Storage ___storage) { bool flag = true; foreach (EnergyGenerator.InputItem inputItem in ___formula.inputs) { float mass = inputItem.consumptionRate * dt; PrimaryElement primaryElement = ___storage.FindFirstWithMass(inputItem.tag, mass); if (primaryElement != null) { flag = (flag && primaryElement.Mass >= mass); } else { flag = false; } if (!flag) { break; } } __result = flag; return(false); }