public override void TickRare() { if (!compPowerTrader.PowerOn) { return; } IntVec3 intVec3_1 = Position + IntVec3Utility.RotatedBy(IntVec3.South, Rotation); IntVec3 intVec3_2 = Position + IntVec3Utility.RotatedBy(IntVec3.North, Rotation); bool flag = false; if (!GenGrid.Impassable(intVec3_2, Map) && !GenGrid.Impassable(intVec3_1, Map)) { float temperature1 = GridsUtility.GetTemperature(intVec3_2, Map); float temperature2 = GridsUtility.GetTemperature(intVec3_1, Map); //Check for Mode bool _cooling = true; if (m_Mode == EnumCoolerMode.Cooling) { _cooling = true; } else if (m_Mode == EnumCoolerMode.Heating) { _cooling = false; } else if (m_Mode == EnumCoolerMode.Auto) { if (temperature1 > compTempControl.targetTemperature) { //Log.Message("Auto Cooling"); _cooling = true; } else { //Log.Message("Auto Heating"); _cooling = false; } } float a; float energyLimit; float _TemperatureDifferance; float num2; if (_cooling) { //Log.Message("Cooling"); _TemperatureDifferance = temperature1 - temperature2; if (temperature1 - TemperatureDiffThreshold > _TemperatureDifferance) { _TemperatureDifferance = temperature1 - TemperatureDiffThreshold; } num2 = 1.0f - _TemperatureDifferance * EfficiencyLossPerDegreeDifference; if (num2 < 0.0f) { num2 = 0.0f; } energyLimit = (float)(compTempControl.Props.energyPerSecond * (double)num2 * UnknownConst_2); a = GenTemperature.ControlTemperatureTempChange(intVec3_1, Map, energyLimit, compTempControl.targetTemperature); flag = !Mathf.Approximately(a, 0.0f); } else { //Log.Message("Heating"); _TemperatureDifferance = temperature1 - temperature2; if (temperature1 + TemperatureDiffThreshold > _TemperatureDifferance) { _TemperatureDifferance = temperature1 + TemperatureDiffThreshold; } num2 = 1.0f - _TemperatureDifferance * EfficiencyLossPerDegreeDifference; if (num2 < 0.0f) { num2 = 0.0f; } energyLimit = (float)(compTempControl.Props.energyPerSecond * -(double)num2 * UnknownConst_2); a = GenTemperature.ControlTemperatureTempChange(intVec3_1, Map, energyLimit, compTempControl.targetTemperature); flag = !Mathf.Approximately(a, 0.0f); } if (flag) { GridsUtility.GetRoomGroup(intVec3_2, Map).Temperature -= a; GenTemperature.PushHeat(intVec3_1, Map, (float)(+(double)energyLimit * HeatOutputMultiplier)); } } CompProperties_Power props = compPowerTrader.Props; if (flag) { compPowerTrader.PowerOutput = -props.basePowerConsumption; } else { compPowerTrader.PowerOutput = -props.basePowerConsumption * compTempControl.Props.lowPowerConsumptionFactor; } compTempControl.operatingAtHighPower = flag; }
public override void TickRare() { if (!this.compPowerTrader.PowerOn) { return; } IntVec3 intVec3_1 = this.Position + IntVec3.South.RotatedBy(this.Rotation); IntVec3 intVec3_2 = this.Position + IntVec3.North.RotatedBy(this.Rotation); bool flag = false; if (!intVec3_2.Impassable(this.Map) && !intVec3_1.Impassable(this.Map)) { float temperature1 = GridsUtility.GetTemperature(intVec3_2, this.Map); float temperature2 = GridsUtility.GetTemperature(intVec3_1, this.Map); //Check for Mode bool _cooling = true; if (this.m_Mode == enumCoolerMode.Cooling) { _cooling = true; } else if (this.m_Mode == enumCoolerMode.Heating) { _cooling = false; } else if (this.m_Mode == enumCoolerMode.Auto) { //Log.Message("T1: " + temperature1 + "T2: " + temperature2 + "TT: " + this.compTempControl.targetTemperature); if (temperature1 > this.compTempControl.targetTemperature) { //Log.Message("Auto Cooling"); _cooling = true; } else { //Log.Message("Auto Heating"); _cooling = false; } } float a = 0.0f; float energyLimit = 0.0f; if (_cooling) { //Log.Message("Cooling"); float _TemperatureDifferance = temperature1 - temperature2; if ((double)temperature1 - 40.0 > (double)_TemperatureDifferance) { _TemperatureDifferance = temperature1 - 40f; } float num2 = (float)(1.0 - (double)_TemperatureDifferance * (1.0 / 130.0)); if ((double)num2 < 0.0) { num2 = 0.0f; } energyLimit = (float)((double)this.compTempControl.Props.energyPerSecond * (double)num2 * 4.16666650772095); a = GenTemperature.ControlTemperatureTempChange(intVec3_1, this.Map, energyLimit, this.compTempControl.targetTemperature); flag = !Mathf.Approximately(a, 0.0f); } else { //Log.Message("Heating"); float _TemperatureDifferance = temperature1 - temperature2; if ((double)temperature1 + 40.0 > (double)_TemperatureDifferance) { _TemperatureDifferance = temperature1 + 40f; } float num2 = (float)(1.0 - (double)_TemperatureDifferance * (1.0 / 130.0)); if ((double)num2 < 0.0) { num2 = 0.0f; } energyLimit = (float)((double)this.compTempControl.Props.energyPerSecond * -(double)num2 * 4.16666650772095); //energyLimit = (float)((double)this.compTempControl.Props.energyPerSecond * 4.16666650772095 * -1); a = GenTemperature.ControlTemperatureTempChange(intVec3_1, this.Map, energyLimit, this.compTempControl.targetTemperature); flag = !Mathf.Approximately(a, 0.0f); //Log.Message("TempDiff: " + _TemperatureDifferance + " num2: " + num2 + " EnergyLimit: " + energyLimit + " a: " + a); } if (flag) { GridsUtility.GetRoomGroup(intVec3_2, this.Map).Temperature -= a; GenTemperature.PushHeat(intVec3_1, 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; }