Beispiel #1
0
 public override void OnSinkConnected(ISink s)
 {
     if (s.HasContainerFor(RedHomestead.Simulation.Matter.CarbonDioxide))
     {
         co2Out = s.Get(RedHomestead.Simulation.Matter.CarbonDioxide);
     }
 }
Beispiel #2
0
 public void AddSink(ISink sink, Matter type)
 {
     if (sink.HasContainerFor(type))
     {
         AddInput(sink.Get(type));
     }
 }
Beispiel #3
0
    private void PushOxygenAndHydrogen()
    {
        OxygenOut.Get(Matter.Oxygen).Push(OxygenPerSecond * Time.fixedDeltaTime);
        Data.MatterHistory.Produce(Matter.Oxygen, OxygenPerSecond * Time.fixedDeltaTime);

        HydrogenOut.Get(Matter.Hydrogen).Push(HydrogenPerSecond * Time.fixedDeltaTime);
        Data.MatterHistory.Produce(Matter.Hydrogen, HydrogenPerSecond * Time.fixedDeltaTime);
    }
    public override void Convert()
    {
        if (HasRover)
        {
            if (HasWater)
            {
#warning needs to only push if amount < max
                AttachedRover.Data.Water.Push(WaterIn.Get(Matter.Water).Pull(WaterPerTickUnits));
            }

            if (HasOxygen)
            {
#warning needs to only push if amount < max
                AttachedRover.Data.Oxygen.Push(OxygenIn.Get(Matter.Oxygen).Pull(OxygenPerTickUnits));
            }
        }
    }
Beispiel #5
0
    private bool PullHydrogen()
    {
        if (HydrogenSource != null)
        {
            float newHydrogen = HydrogenSource.Get(Matter.Hydrogen).Pull(HydrogenPerSecond * Time.fixedDeltaTime);
            hydrogenBuffer += newHydrogen;
            Data.MatterHistory.Consume(Matter.Hydrogen, newHydrogen);

            float hydrogenThisTick = HydrogenPerSecond * Time.fixedDeltaTime;

            if (hydrogenBuffer >= hydrogenThisTick)
            {
                hydrogenBuffer -= hydrogenThisTick;
                return(true);
            }
        }

        return(false);
    }
Beispiel #6
0
    public override void Convert()
    {
        if (IsOn)
        {
            if (HasPower)
            {
                SurvivalTimer.Instance.Power.ResupplySeconds(EVA.PowerResupplySeconds);
            }

            if (OxygenIn != null)
            {
                if (oxygenBuffer < EVA.OxygenResupplyKilogramsPerUnit)
                {
                    oxygenBuffer += OxygenIn.Get(Matter.Oxygen).Pull(EVA.OxygenResupplyKilogramsPerUnit);
                }

                if (oxygenBuffer >= EVA.OxygenResupplyKilogramsPerUnit)
                {
                    SurvivalTimer.Instance.Oxygen.ResupplySeconds(EVA.OxygenResupplySeconds);
                    oxygenBuffer -= EVA.OxygenResupplyKilogramsPerUnit;
                }
            }
        }
    }