namespace UnityEditor.Purchasing { internal static class ApplePriceTiers { internal const int kNumTiers = 88; // Cache private static string[] s_Strings; private static int[] s_Dollars; internal static string[] Strings { get { GenerateAppleTierData(); return s_Strings; } } internal static int[] RoundedDollars { get { GenerateAppleTierData(); return s_Dollars; } } internal static double ActualDollarsForAppleTier(int tier) { if (RoundedDollars[tier] == 0) { return 0; } return RoundedDollars[tier] - 0.01; } private static void GenerateAppleTierData() { if (s_Strings == null || s_Dollars == null) { s_Strings = new string[kNumTiers]; s_Dollars = new int[kNumTiers]; var i = 0; s_Dollars[i] = 0; s_Strings[i++] = "Free"; var dollars = 1; for (; i < kNumTiers; ++i) { if (i == 63) { s_Strings[i] = CreateApplePriceTierString(i, 125); s_Dollars[i] = 125; } else if (i == 69) { s_Strings[i] = CreateApplePriceTierString(i, 175); s_Dollars[i] = 175; } else { s_Strings[i] = CreateApplePriceTierString(i, dollars); s_Dollars[i] = dollars; if (i >= 82) { // 82 - 87 USD $100 increments to $1000 dollars += 100; } else if (i >= 77) { // 77 - 82 USD $50 increments to $500 dollars += 50; } else if (i >= 60) { // 60 - 77 $10 increments to $250, except 63 = $125 and 69 = $175 dollars += 10; } else if (i >= 50) { // 50 - 59 USD $5 increments dollars += 5; } else { // 1 - 49 USD $1 increments dollars++; } } } } } private static string CreateApplePriceTierString(int tier, int roundedDollars) { return string.Format("Tier {0} - USD {1:0.00}", tier, roundedDollars - 0.01f); } } }