예제 #1
0
    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>();
    }
예제 #3
0
            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);
            }