예제 #1
0
        private void UpdateStatusProperties()
        {
            if (AtmosphericAverage.SampleSize < 1)
            {
                OverallStatus = PressureStatus = TemperatureStatus = CompositionStatus = AcuStatus.Caution;
                return;
            }

            PressureStatus    = GetMetricStatus(Thresholds.Pressure, AtmosphericAverage.Pressure);
            TemperatureStatus = GetMetricStatus(Thresholds.Temperature, AtmosphericAverage.Temperature);
            CompositionStatus = AcuStatus.Nominal;

            // We need to loop over all possible gases (or more specifically, a union of detected gases and recognized gases).
            foreach (GasSO gas in Gas.Gases.Values)
            {
                bool gasDetected = AtmosphericAverage.HasGas(gas);
                if (gasDetected && Thresholds.GasMoles.ContainsKey(gas) == false)
                {
                    // Let thresholds know about this unrecognized gas, but values are undetermined (let a technician set them).
                    Thresholds.GasMoles.Add(gas, AcuThresholds.UnknownValues);
                }

                GasLevelStatus[gas] = gasDetected
                                                ? GetMetricStatus(Thresholds.GasMoles[gas], AtmosphericAverage.GetGasMoles(gas))
                                                : AcuStatus.Nominal;
                CompositionStatus = GasLevelStatus[gas] > CompositionStatus? GasLevelStatus[gas] : CompositionStatus;
            }

            OverallStatus = PressureStatus;
            OverallStatus = TemperatureStatus > OverallStatus ? TemperatureStatus : OverallStatus;
            OverallStatus = CompositionStatus > OverallStatus ? CompositionStatus : OverallStatus;
        }
예제 #2
0
        public void SetValues(string metricName, float ratio, float moles, AcuStatus molStatus)
        {
            var percentString = $"{ratio, 10:P}";
            var molString     = GUI_Acu.ColorStringByStatus($"{moles, 8:N}", molStatus);

            label.SetValueServer($"| {metricName, -18} | {percentString, -13} | {molString, -34} |");
            label.SetValueServer($"| {metricName, -18} | {percentString, -13} | {molString, -34} |");
        }
예제 #3
0
        private void Awake()
        {
            accessRestrictions = GetComponent <AccessRestrictions>();
            spriteHandler      = GetComponentInChildren <SpriteHandler>();

            Thresholds     = initialAcuThresholds.Clone();
            GasLevelStatus = new AcuStatus[Gas.Gases.Count];
            DesiredMode    = initialOperatingMode;
        }
예제 #4
0
        /// <summary>Get the color code associated with the given <c>ACU</c> status.</summary>
        /// <returns>HTML color code as a hexadecimal string</returns>
        public static string GetHtmlColorByStatus(AcuStatus status)
        {
            if (statusColors.ContainsKey(status))
            {
                return(ColorUtility.ToHtmlStringRGB(statusColors[status]));
            }

            // What, write some kind of color code here? Pfft!
            return(ColorUtility.ToHtmlStringRGB(Color.white));
        }
        private void UpdateGasEntry(int index, string name, float ratio, float moles, AcuStatus molStatus)
        {
            DynamicEntry dynamicEntry = metricsContainer.Entries[index];
            var          entry        = dynamicEntry.GetComponent <GUI_AcuGasEntry>();

            entry.SetValues(name, ratio, moles, molStatus);
        }
예제 #6
0
 /// <summary>Color the given string with the associated color of the given <c>ACU</c> status.</summary>
 public static string ColorStringByStatus(string text, AcuStatus status)
 {
     return($"<color=#{GetHtmlColorByStatus(status)}>{text}</color>");
 }