Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 private void OnThermostatChanged(BaseField field, object oldFieldValueObj)
 {
     thermostat       = BdbTemperature.DisplayToKelvin(thermostatDisplay);
     part.radiatorMax = thermostat / part.maxTemp;
 }