namespace Model;

public static class UnitEfficiency
{
    public static double CalculateDpsPerHexite(int damagePerSecond, int hexite) => CalculateEfficiency(damagePerSecond, hexite);
    public static double CalculateDpsPerFlux(int damagePerSecond, int flux) => CalculateEfficiency(damagePerSecond, flux);
    public static double CalculateDpsPerTotalCost(int damagePerSecond, int hexite, int flux) => CalculateEfficiency(damagePerSecond, hexite + flux);

    public static double CalculateHealthPerHexite(int health, int hexite) => CalculateEfficiency(health, hexite);
    public static double CalculateHealthPerFlux(int health, int flux) => CalculateEfficiency(health, flux);
    public static double CalculateHealthPerTotalCost(int health, int hexite, int flux) => CalculateEfficiency(health, hexite + flux);

    private static double CalculateEfficiency(int value, int cost)
    {
        if (cost <= 0)
        {
            return value > 0 ? double.PositiveInfinity : 0;
        }

        return (double)value / cost;
    }
}
