24 lines
1.2 KiB
C#
24 lines
1.2 KiB
C#
namespace ReactorMaintenance.Simulation;
|
|
|
|
internal static class SurfaceCarrierMath
|
|
{
|
|
public static SurfaceState AddCarrier(SurfaceState surface, ECarrierType carrier, float amount)
|
|
{
|
|
return carrier switch {
|
|
ECarrierType.Fuel => surface with { Fuel = surface.Fuel + amount },
|
|
ECarrierType.Water => surface with { Water = surface.Water + amount },
|
|
ECarrierType.Electricity => surface with { Electricity = surface.Electricity + amount },
|
|
_ => throw new ArgumentOutOfRangeException(nameof(carrier), carrier, "Unsupported carrier.")
|
|
};
|
|
}
|
|
|
|
public static SurfaceState RemoveCarrier(SurfaceState surface, ECarrierType carrier)
|
|
{
|
|
return carrier switch {
|
|
ECarrierType.Fuel => surface with { Fuel = 0, FuelBlockTurns = Balancing.Current.RemedyBlockTurns },
|
|
ECarrierType.Water => surface with { Water = 0, WaterBlockTurns = Balancing.Current.RemedyBlockTurns },
|
|
ECarrierType.Electricity => surface with { Electricity = 0, ElectricityBlockTurns = Balancing.Current.RemedyBlockTurns },
|
|
_ => throw new ArgumentOutOfRangeException(nameof(carrier), carrier, "Unsupported carrier.")
|
|
};
|
|
}
|
|
} |