private void UpdateUI() { canCool = part.Resources[coolingResource] != null; Fields[nameof(coolingEnabled)].guiActive = canCool; Fields[nameof(coolingEnabled)].guiActiveEditor = canCool; Fields[nameof(coolingRate)].guiActive = canCool && coolingEnabled; Fields[nameof(heaterEnabled)].guiActive = canHeat; Fields[nameof(heaterEnabled)].guiActiveEditor = canHeat; Fields[nameof(heaterRate)].guiActive = canHeat && heaterEnabled; if (part.CrewCapacity > 0) { Fields[nameof(temperatureDisplay)].guiName = "Cabin Temp"; Fields[nameof(ventEnabled)].guiName = "Vent"; } else { Fields[nameof(temperatureDisplay)].guiName = "Compartment Temp"; Fields[nameof(ventEnabled)].guiName = "Louvers"; } Fields[nameof(temperatureDisplay)].guiUnits = BdbTemperature.TempDisplayUnits(); Fields[nameof(thermostatDisplay)].guiUnits = BdbTemperature.TempDisplayUnits(); Fields[nameof(thermostatDisplay)].guiName = "Thermostat (" + BdbTemperature.TempDisplayUnits().Trim() + ")"; Fields[nameof(skinTemperatureDisplay)].guiUnits = BdbTemperature.TempDisplayUnits(); }
public override void OnStart(StartState state) { GameEvents.onVesselWasModified.Add(OnVesselWasModified); useThermal = HighLogic.CurrentGame.Parameters.CustomParams <BdbCustomParams>().useThermal; if (!useThermal) { foreach (BaseField f in Fields) { f.guiActive = false; f.guiActiveEditor = false; f.isPersistant = false; } return; } saveConduction = part.skinInternalConductionMult; if (thermostat < 1.0) { thermostat = part.maxTemp * Math.Min(part.radiatorMax, 1.0); } else { part.radiatorMax = thermostat / part.maxTemp; } UI_FloatRange control; if (state == StartState.Editor) { control = (UI_FloatRange)Fields[nameof(thermostatDisplay)].uiControlEditor; } else { control = (UI_FloatRange)Fields[nameof(thermostatDisplay)].uiControlFlight; } control.minValue = (float)BdbTemperature.KelvinToDisplay(Math.Min(thermostat, BdbTemperature.FtoK(50))); control.maxValue = (float)BdbTemperature.KelvinToDisplay(Math.Max(thermostat, BdbTemperature.FtoK(90))); thermostatDisplay = (float)BdbTemperature.KelvinToDisplay(thermostat); control.onFieldChanged = OnThermostatChanged; UpdatePreLaunch(); UpdateUI(); }
public void Update() { if (!HighLogic.LoadedSceneIsFlight || !useThermal) { return; } temperatureDisplay = BdbTemperature.KelvinToDisplay(part.temperature); //part.radiatorMax = thermostat / part.maxTemp; //thermostatDisplay = KelvinToDisplay(thermostat); if (vessel.staticPressurekPa > 0.0) { outsideTemperatureDisplay = BdbTemperature.KelvinToDisplay(vessel.atmosphericTemperature).ToString("N1") + BdbTemperature.TempDisplayUnits(); // KtoF(vessel.externalTemperature); } else { outsideTemperatureDisplay = "-.-" + BdbTemperature.TempDisplayUnits(); } skinTemperatureDisplay = BdbTemperature.KelvinToDisplay(part.skinTemperature); }
private void OnThermostatChanged(BaseField field, object oldFieldValueObj) { thermostat = BdbTemperature.DisplayToKelvin(thermostatDisplay); part.radiatorMax = thermostat / part.maxTemp; }