public float ProducePower(float requestedPower) { if (this.ThermalChargers.Count == 0 && this.ThermalChargerMk2.Count == 0) { ThermalState = ThermalState.None; return(0f); } temperature = GetThermalStatus(Cyclops); float availableThermalEnergy = ThermalChargingFactor * Time.deltaTime * Cyclops.thermalReactorCharge.Evaluate(temperature); if (availableThermalEnergy > PowerManager.MinimalPowerValue) { ThermalState = ThermalState.HeatAvailable; float mk1Power = this.ThermalChargers.Count * availableThermalEnergy; float mk2Power = this.ThermalChargerMk2.Count * availableThermalEnergy * PowerManager.Mk2ChargeRateModifier; this.ThermalChargerMk2.RechargeBatteries(mk1Power + mk2Power); return(mk1Power + mk2Power); } else if (this.SolarCharger.SolarState != SolarState.SunAvailable && this.ThermalChargerMk2.BatteryHasCharge) { ThermalState = ThermalState.BatteryAvailable; return(this.ThermalChargerMk2.GetBatteryPower(PowerManager.BatteryDrainRate, requestedPower)); } else { ThermalState = ThermalState.None; return(0f); } }
/// <summary> /// On each update, query the current thermal state, and fire the state changed event if the thermal state has /// changed since the previous update. /// </summary> void Update() { ThermalState thermalState = currentThermalState; if (m_PreviousThermalState.HasValue && (thermalState != m_PreviousThermalState.Value)) { if (stateChanged != null) { stateChanged(new ThermalStateChange(m_PreviousThermalState.Value, thermalState)); } } m_PreviousThermalState = thermalState; }
/// <summary> /// Constructs a thermal state change with the previous and current thermal states. /// </summary> /// <param name="previousThermalState">The previous thermal state for a state change event.</param> /// <param name="currentThermalState">The current thermal state for a state change event.</param> public ThermalStateChange(ThermalState previousThermalState, ThermalState currentThermalState) { m_PreviousThermalState = previousThermalState; m_CurrentThermalState = currentThermalState; }
public ThermalProgressArgs(float temp, TimeSpan elapsed, ThermalState state) { Temperature = temp; SecondsSinceStarted = elapsed; State = state; }