45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
namespace ReactorMaintenance.Simulation;
|
|
|
|
internal static class SimulationBands
|
|
{
|
|
public static EBand SurfaceBand(SurfaceState surface, ECarrierType carrier)
|
|
{
|
|
return carrier switch {
|
|
ECarrierType.Fuel => Fuel(surface.Fuel),
|
|
ECarrierType.Coolant => Coolant(surface.Coolant),
|
|
ECarrierType.Electricity => Electricity(surface.Electricity),
|
|
_ => throw new ArgumentOutOfRangeException(nameof(carrier), carrier, "Unsupported carrier.")
|
|
};
|
|
}
|
|
|
|
public static EBand NetworkBand(UndergroundCell underground, ECarrierType carrier, ENetworkValueKind valueKind)
|
|
{
|
|
var value = valueKind == ENetworkValueKind.Amount ? underground.Amount : underground.Intensity;
|
|
return carrier switch {
|
|
ECarrierType.Fuel => Fuel(value),
|
|
ECarrierType.Coolant => Coolant(value),
|
|
ECarrierType.Electricity => Electricity(value),
|
|
_ => throw new ArgumentOutOfRangeException(nameof(carrier), carrier, "Unsupported carrier.")
|
|
};
|
|
}
|
|
|
|
public static EBand Fuel(float value)
|
|
{
|
|
return Balancing.Current.Band(value, Balancing.Current.FuelCaution, Balancing.Current.FuelCritical);
|
|
}
|
|
|
|
public static EBand Coolant(float value)
|
|
{
|
|
return Balancing.Current.Band(value, Balancing.Current.CoolantCaution, Balancing.Current.CoolantCritical);
|
|
}
|
|
|
|
public static EBand Electricity(float value)
|
|
{
|
|
return Balancing.Current.Band(value, Balancing.Current.ElectricityCaution, Balancing.Current.ElectricityCritical);
|
|
}
|
|
|
|
public static EBand Heat(float value)
|
|
{
|
|
return Balancing.Current.Band(value, Balancing.Current.HeatCaution, Balancing.Current.HeatCritical);
|
|
}
|
|
} |