using System.Globalization;

namespace EDPlayerJournal;

public class Credits {
    public static string FormatCredits(uint amount) {
        return FormatCredits((long)amount);
    }

    public static string FormatCredits(ulong amount) {
        return FormatCredits((long)amount);
    }

    public static string FormatCredits(long amount) {
        var format = new CultureInfo(CultureInfo.CurrentCulture.Name, true).NumberFormat;
        format.NumberGroupSeparator = ",";
        format.NumberDecimalSeparator = ".";
        format.NumberGroupSizes = new int[1] { 3 };
        format.NumberDecimalDigits = 0;
        if (amount > 0 && (amount % 1000000000) == 0) {
            amount /= 1000000000;
            return string.Format("{0}M CR", amount.ToString("N", format));
        } else if (amount > 0 && (amount % 1000000) == 0) {
            amount /= 1000000;
            return string.Format("{0}M CR", amount.ToString("N", format));
        } else if (amount > 0 && (amount % 100000) == 0) {
            double am = ((double)amount) / 1000000;
            format.NumberDecimalDigits = 1;
            return string.Format("{0}M CR", am.ToString("N", format));
        } else if (amount > 0 && (amount % 1000) == 0) {
            amount /= 1000;
            return string.Format("{0}K CR", amount.ToString("N", format));
        }

        return string.Format("{0} CR", amount.ToString("N", format));
    }

    public static string FormatMillions(long amount) {
        double millions = (amount / 1000000.0);

        if (amount >= 100000) {
            return string.Format("{0:0.0}M", millions);
        } else if (amount >= 10000) {
            return string.Format("{0:0.00}M", millions);
        }

        return string.Format("{0}", amount);
    }
}
