28 lines
1.1 KiB
C#
28 lines
1.1 KiB
C#
namespace ReactorMaintenance.Simulation;
|
|
|
|
public static class SurfaceStateExtensions
|
|
{
|
|
public static SurfaceState Clamp(this SurfaceState surface)
|
|
{
|
|
var balancing = Balancing.Current;
|
|
return surface with {
|
|
Fuel = balancing.ClampValue(surface.Fuel),
|
|
Coolant = balancing.ClampValue(surface.Coolant),
|
|
Electricity = balancing.ClampValue(surface.Electricity),
|
|
Heat = balancing.ClampValue(surface.Heat),
|
|
FuelBlockTurns = Math.Max(0, surface.FuelBlockTurns),
|
|
CoolantBlockTurns = Math.Max(0, surface.CoolantBlockTurns),
|
|
ElectricityBlockTurns = Math.Max(0, surface.ElectricityBlockTurns)
|
|
};
|
|
}
|
|
|
|
public static bool Blocks(this SurfaceState surface, ECarrierType carrier)
|
|
{
|
|
return carrier switch {
|
|
ECarrierType.Fuel => surface.FuelBlockTurns > 0,
|
|
ECarrierType.Coolant => surface.CoolantBlockTurns > 0,
|
|
ECarrierType.Electricity => surface.ElectricityBlockTurns > 0,
|
|
_ => throw new ArgumentOutOfRangeException(nameof(carrier), carrier, "Unsupported carrier.")
|
|
};
|
|
}
|
|
} |