public void SetBoilerSettingFromPressure(PressureLevel pressure)
        {
            var newBoilerSetting = BoilerSetting.Safe;

            switch (pressure)
            {
            case PressureLevel.Off:
                newBoilerSetting = BoilerSetting.Safe;
                break;

            case PressureLevel.Nominal:
                newBoilerSetting = BoilerSetting.Acceptable;
                break;

            case PressureLevel.Caution:
                newBoilerSetting = BoilerSetting.Caution;
                break;

            case PressureLevel.Danger:
                newBoilerSetting = BoilerSetting.Dangerous;
                break;

            case PressureLevel.Maximum:
                newBoilerSetting = BoilerSetting.SetToBlow;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(pressure), pressure, null);
            }
            CurBoilerSetting = newBoilerSetting;
        }
Exemple #2
0
        public static string GetDescription(this PressureLevel level, bool showPrefix = true)
        {
            string prefix = "Estate_Pressure".Translate();
            string result = "Estate_PressureOff".Translate();

            switch (level)
            {
            case PressureLevel.Off:
                break;

            case PressureLevel.Nominal:
                result = "Estate_PressureNominalDesc".Translate();
                break;

            case PressureLevel.Caution:
                result = "Estate_PressureCautionDesc".Translate();
                break;

            case PressureLevel.Danger:
                result = "Estate_PressureDangerDesc".Translate();
                break;

            case PressureLevel.Maximum:
                result = "Estate_PressureMaximumDesc".Translate();
                break;
            }
            return((showPrefix) ? prefix + " : " + result : result);
        }
Exemple #3
0
        /// <summary>
        ///  Checks each side of the door, returns true if not considered safe and updates pressureLevel.
        ///  Used to allow the player to be made aware of the pressure difference for safety.
        /// </summary>
        /// <returns></returns>
        private bool DoorUnderPressure()
        {
            if (!enablePressureWarning)
            {
                // Pressure warning system is disabled, so pretend everything is fine.
                return(false);
            }

            // Obtain the adjacent tiles to the door.
            var upMetaNode    = MatrixManager.GetMetaDataAt(registerTile.WorldPositionServer + Vector3Int.up);
            var downMetaNode  = MatrixManager.GetMetaDataAt(registerTile.WorldPositionServer + Vector3Int.down);
            var leftMetaNode  = MatrixManager.GetMetaDataAt(registerTile.WorldPositionServer + Vector3Int.left);
            var rightMetaNode = MatrixManager.GetMetaDataAt(registerTile.WorldPositionServer + Vector3Int.right);

            // Only find the pressure comparison if both opposing sides are atmos. passable.
            // If both sides are not atmos. passable, then we don't care about the pressure difference.
            var vertPressureDiff = 0.0;
            var horzPressureDiff = 0.0;

            if (!upMetaNode.IsOccupied || !downMetaNode.IsOccupied)
            {
                vertPressureDiff = Math.Abs(upMetaNode.GasMix.Pressure - downMetaNode.GasMix.Pressure);
            }
            if (!leftMetaNode.IsOccupied || !rightMetaNode.IsOccupied)
            {
                horzPressureDiff = Math.Abs(leftMetaNode.GasMix.Pressure - rightMetaNode.GasMix.Pressure);
            }

            // Set pressureLevel according to the pressure difference found.
            if (vertPressureDiff >= pressureThresholdWarning || horzPressureDiff >= pressureThresholdWarning)
            {
                pressureLevel = PressureLevel.Warning;
                return(true);
            }
            else if (vertPressureDiff >= pressureThresholdCaution || horzPressureDiff >= pressureThresholdCaution)
            {
                pressureLevel = PressureLevel.Caution;
                return(true);
            }
            else
            {
                pressureLevel = PressureLevel.Safe;
                return(false);
            }
        }
Exemple #4
0
 /// <summary>
 /// Returns the current memory pressure level of the VM
 /// </summary>
 /// <param name="level">A PressureLevel pointer to hold the current VM memory pressure level</param>
 public static int GetMemoryPressureLevel(ref PressureLevel level) => IsMacOS
     ? Impl_Mac.GetMemoryPressureLevel(ref level)
     : Impl_Linux.GetMemoryPressureLevel(ref level);
Exemple #5
0
 internal static extern int GetMemoryPressureLevel(ref PressureLevel level);
Exemple #6
0
 internal static int GetMemoryPressureLevel(ref PressureLevel level)
 {
     // there is no memory pressure level on Linux
     level = PressureLevel.Normal;
     return(0);
 }