예제 #1
0
 public override void TickRare()
 {
     if (this.compPowerTrader.PowerOn)
     {
         float ambientTemperature = base.AmbientTemperature;
         float num;
         if (ambientTemperature < 20f)
         {
             num = 1f;
         }
         else if (ambientTemperature > 120f)
         {
             num = 0f;
         }
         else
         {
             num = Mathf.InverseLerp(120f, 20f, ambientTemperature);
         }
         float energyLimit          = this.compTempControl.Props.energyPerSecond * num * 4.16666651f;
         float num2                 = GenTemperature.ControlTemperatureTempChange(base.Position, base.Map, energyLimit, this.compTempControl.targetTemperature);
         bool  flag                 = !Mathf.Approximately(num2, 0f);
         CompProperties_Power props = this.compPowerTrader.Props;
         if (flag)
         {
             this.GetRoomGroup().Temperature += num2;
             this.compPowerTrader.PowerOutput = -props.basePowerConsumption;
         }
         else
         {
             this.compPowerTrader.PowerOutput = -props.basePowerConsumption * this.compTempControl.Props.lowPowerConsumptionFactor;
         }
         this.compTempControl.operatingAtHighPower = flag;
     }
 }
예제 #2
0
        public override void Tick()
        {
            base.Tick();
            if (this.compPowerTrader.PowerOn)
            {
                timeTillEval--;
                if (timeTillEval <= 0)
                {
                    IntVec3 intVec3_1 = this.Position + IntVec3.North.RotatedBy(this.Rotation);

                    IntVec3 intVec3_2 = this.Position + IntVec3.South.RotatedBy(this.Rotation);
                    IntVec3 intVec3_3 = this.Position + (IntVec3.South.RotatedBy(this.Rotation) * 2);
                    IntVec3 intVec3_4 = this.Position + (IntVec3.South.RotatedBy(this.Rotation) * 3);
                    bool    flag      = false;
                    if (!intVec3_4.Impassable(this.Map) && !intVec3_3.Impassable(this.Map) && !intVec3_2.Impassable(this.Map) && !intVec3_1.Impassable(this.Map))
                    {
                        float temperature1 = intVec3_2.GetTemperature(this.Map);
                        float temperature2 = intVec3_1.GetTemperature(this.Map);
                        float num1         = temperature1 - temperature2;
                        if ((double)temperature1 - 40.0 > (double)num1)
                        {
                            num1 = temperature1 - 40f;
                        }
                        float num2 = (float)(1.0 - (double)num1 * (1.0 / 130.0));
                        if ((double)num2 < 0.0)
                        {
                            num2 = 0.0f;
                        }
                        float energyLimit = (float)(((double)this.compTempControl.Props.energyPerSecond) * (double)num2 * 4.16666650772095);
                        float a           = GenTemperature.ControlTemperatureTempChange(intVec3_1, this.Map, energyLimit, this.compTempControl.targetTemperature);
                        flag = !Mathf.Approximately(a, 0.0f);
                        if (flag)
                        {
                            intVec3_1.GetRoomGroup(this.Map).Temperature += a;
                            GenTemperature.PushHeat(intVec3_2, this.Map, (float)(-(double)energyLimit * 1.25));
                            GenTemperature.PushHeat(intVec3_3, this.Map, (float)(-(double)energyLimit * 1.25));
                            GenTemperature.PushHeat(intVec3_4, this.Map, (float)(-(double)energyLimit * 1.25));
                        }
                    }
                    CompProperties_Power props = this.compPowerTrader.Props;
                    if (flag)
                    {
                        this.compPowerTrader.PowerOutput = -props.basePowerConsumption;
                    }
                    else
                    {
                        this.compPowerTrader.PowerOutput = -props.basePowerConsumption * this.compTempControl.Props.lowPowerConsumptionFactor;
                    }
                    this.compTempControl.operatingAtHighPower = flag;

                    unfoldComponent.Target = flag ? 1.0f : 0.0f;

                    timeTillEval = EVAL_TIME;
                }
            }
            else
            {
                unfoldComponent.Target = 0.0f;
            }
        }
예제 #3
0
        public override void SetUpPowerVars()
        {
            base.SetUpPowerVars();
            CompProperties_Power props = base.Props;

            this.PowerOutput        = -1f * props.basePowerConsumption;
            this.powerLastOutputted = (props.basePowerConsumption <= 0f);
        }
        public override void SetUpPowerVars()
        {
            base.SetUpPowerVars();
            CompProperties_Power props = base.Props;

            this.PowerOutput        = (float)(-1.0 * props.basePowerConsumption);
            this.powerLastOutputted = (props.basePowerConsumption <= 0.0);
        }
예제 #5
0
        private void StartSustainerPoweredIfInactive()
        {
            CompProperties_Power props = base.Props;

            if (!props.soundAmbientPowered.NullOrUndefined() && this.sustainerPowered == null)
            {
                SoundInfo info = SoundInfo.InMap(this.parent, MaintenanceType.None);
                this.sustainerPowered = props.soundAmbientPowered.TrySpawnSustainer(info);
            }
        }
        private void StartSustainerPoweredIfInactive()
        {
            CompProperties_Power props = base.Props;

            if (!props.soundAmbientPowered.NullOrUndefined() && sustainerPowered == null)
            {
                SoundInfo info = SoundInfo.InMap(parent);
                sustainerPowered = props.soundAmbientPowered.TrySpawnSustainer(info);
            }
        }
        public override void TickRare()
        {
            if (!compPowerTrader.PowerOn)
            {
                return;
            }
            IntVec3 intVec  = base.Position + IntVec3.South.RotatedBy(base.Rotation);
            IntVec3 intVec2 = base.Position + IntVec3.North.RotatedBy(base.Rotation);
            bool    flag    = false;

            if (!intVec2.Impassable(base.Map) && !intVec.Impassable(base.Map))
            {
                float temperature  = intVec2.GetTemperature(base.Map);
                float temperature2 = intVec.GetTemperature(base.Map);
                float num          = temperature - temperature2;
                if (temperature - 40f > num)
                {
                    num = temperature - 40f;
                }
                float num2 = 1f - num * 0.0076923077f;
                if (num2 < 0f)
                {
                    num2 = 0f;
                }
                float num3 = compTempControl.Props.energyPerSecond * num2 * 4.16666651f;
                float num4 = GenTemperature.ControlTemperatureTempChange(intVec, base.Map, num3, compTempControl.targetTemperature);
                flag = !Mathf.Approximately(num4, 0f);
                if (flag)
                {
                    intVec.GetRoomGroup(base.Map).Temperature += num4;
                    GenTemperature.PushHeat(intVec2, base.Map, (0f - num3) * 1.25f);
                }
            }
            CompProperties_Power props = compPowerTrader.Props;

            if (flag)
            {
                compPowerTrader.PowerOutput = 0f - props.basePowerConsumption;
            }
            else
            {
                compPowerTrader.PowerOutput = (0f - props.basePowerConsumption) * compTempControl.Props.lowPowerConsumptionFactor;
            }
            compTempControl.operatingAtHighPower = flag;
        }
예제 #8
0
 public override void TickRare()
 {
     if (base.compPowerTrader.PowerOn)
     {
         IntVec3 intVec  = base.Position + IntVec3.South.RotatedBy(base.Rotation);
         IntVec3 intVec2 = base.Position + IntVec3.North.RotatedBy(base.Rotation);
         bool    flag    = false;
         if (!intVec2.Impassable(base.Map) && !intVec.Impassable(base.Map))
         {
             float temperature  = intVec2.GetTemperature(base.Map);
             float temperature2 = intVec.GetTemperature(base.Map);
             float num          = temperature - temperature2;
             if (temperature - 40.0 > num)
             {
                 num = (float)(temperature - 40.0);
             }
             float num2 = (float)(1.0 - num * 0.0076923076994717121);
             if (num2 < 0.0)
             {
                 num2 = 0f;
             }
             float num3 = (float)(base.compTempControl.Props.energyPerSecond * num2 * 4.1666665077209473);
             float num4 = GenTemperature.ControlTemperatureTempChange(intVec, base.Map, num3, base.compTempControl.targetTemperature);
             flag = !Mathf.Approximately(num4, 0f);
             if (flag)
             {
                 intVec.GetRoomGroup(base.Map).Temperature += num4;
                 GenTemperature.PushHeat(intVec2, base.Map, (float)((0.0 - num3) * 1.25));
             }
         }
         CompProperties_Power props = base.compPowerTrader.Props;
         if (flag)
         {
             base.compPowerTrader.PowerOutput = (float)(0.0 - props.basePowerConsumption);
         }
         else
         {
             base.compPowerTrader.PowerOutput = (float)((0.0 - props.basePowerConsumption) * base.compTempControl.Props.lowPowerConsumptionFactor);
         }
         base.compTempControl.operatingAtHighPower = flag;
     }
 }
예제 #9
0
 public override void TickRare()
 {
     if (base.compPowerTrader.PowerOn)
     {
         float ambientTemperature = base.AmbientTemperature;
         float num                  = (float)((!(ambientTemperature < 20.0)) ? ((!(ambientTemperature > 120.0)) ? Mathf.InverseLerp(120f, 20f, ambientTemperature) : 0.0) : 1.0);
         float energyLimit          = (float)(base.compTempControl.Props.energyPerSecond * num * 4.1666665077209473);
         float num2                 = GenTemperature.ControlTemperatureTempChange(base.Position, base.Map, energyLimit, base.compTempControl.targetTemperature);
         bool  flag                 = !Mathf.Approximately(num2, 0f);
         CompProperties_Power props = base.compPowerTrader.Props;
         if (flag)
         {
             this.GetRoomGroup().Temperature += num2;
             base.compPowerTrader.PowerOutput = (float)(0.0 - props.basePowerConsumption);
         }
         else
         {
             base.compPowerTrader.PowerOutput = (float)((0.0 - props.basePowerConsumption) * base.compTempControl.Props.lowPowerConsumptionFactor);
         }
         base.compTempControl.operatingAtHighPower = flag;
     }
 }