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; }
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); }
/// <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); } }
/// <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);
internal static extern int GetMemoryPressureLevel(ref PressureLevel level);
internal static int GetMemoryPressureLevel(ref PressureLevel level) { // there is no memory pressure level on Linux level = PressureLevel.Normal; return(0); }