示例#1
0
        public override void TickRare()
        {
            if (this.compFlickable.SwitchIsOn)
            {
                float ambientTemperature = base.AmbientTemperature;
                float num;
                if (ambientTemperature > this.compTempControl.targetTemperature - 1f && ambientTemperature < this.compTempControl.targetTemperature + 1f)
                {
                    num = 0f;
                }
                else if (ambientTemperature < this.compTempControl.targetTemperature - 1f)
                {
                    if (ambientTemperature < 20f)
                    {
                        num = 1f;
                    }
                    else if (ambientTemperature > 1000f)
                    {
                        num = 0f;
                    }
                    else
                    {
                        num = Mathf.InverseLerp(1000f, 100f, ambientTemperature);
                    }
                }
                else if (ambientTemperature > this.compTempControl.targetTemperature + 1f)
                {
                    if (ambientTemperature < -50f)
                    {
                        num = -Mathf.InverseLerp(-273f, -50f, ambientTemperature);
                    }
                    else
                    {
                        num = -1f;
                    }
                }
                else
                {
                    num = 0f;
                }
                float energyLimit = this.compTempControl.prop.energyPerSecond * num * 4.16666651f;
                float num2        = GenTemperature.ControlTemperatureTempChange(base.Position, base.Map, energyLimit, this.compTempControl.targetTemperature);
                bool  flag        = !Mathf.Approximately(num2, 0f);

                if (flag)
                {
                    this.energyCostPerSec = compTempControl.prop.energyCostPerSec;
                    if (netPort.TryGetEnergy(energyCostPerSec))
                    {
                        this.GetRoomGroup().Temperature += num2;
                        powerOn = true;
                    }
                    else
                    {
                        powerOn = false;
                    }
                }
                else
                {
                    this.energyCostPerSec = compTempControl.prop.energyCostPerSec * this.compTempControl.prop.lowPowerConsumptionFactor;
                    if (netPort.TryGetEnergy(energyCostPerSec))
                    {
                        powerOn = true;
                    }
                    else
                    {
                        powerOn = false;
                    }
                }
                this.compTempControl.operatingAtHighPower = flag;
            }
        }