using PrizeSystem; using System.Collections.Concurrent; using System.Collections.Generic; using UnityEngine; public class CountersCollector : MonoBehaviour { public static ConcurrentDictionary Counters = new(); void Awake() { InvokeRepeating("Refresh", 0, 5); } private static readonly CounterData[] _counterConfigs = { // Призовые счетчики глобальные new CounterData(PrefsKeyVault.HOPPER_GIVEN_COUNTER, "Хоппер", 0), new CounterData(PrefsKeyVault.TICKET_GIVEN_COUNTER, "Тикетник", 0), new CounterData(PrefsKeyVault.MARBLES_GIVEN_COUNTER, "Марблс", 0), new CounterData(PrefsKeyVault.SPECIAL_GIVEN_COUNTER, "Суперприз", 0), // Призовые счетчики обнуляемые new CounterData($"{PrefsKeyVault.HOPPER_GIVEN_COUNTER}Nullable", "Хоппер (обнуляемый)", 0), new CounterData($"{PrefsKeyVault.TICKET_GIVEN_COUNTER}Nullable", "Тикетник (обнуляемый)", 0), new CounterData($"{PrefsKeyVault.MARBLES_GIVEN_COUNTER}Nullable", "Марблс (обнуляемый)", 0), new CounterData($"{PrefsKeyVault.SPECIAL_GIVEN_COUNTER}Nullable", "Суперприз (обнуляемый)", 0), // Выручка new CounterData(PrefsKeyVault.CASH_COUNTER, "Выручка", 0), new CounterData(PrefsKeyVault.CASH_COUNTER_NUL, "Выручка (обнуляемый)", 0), // Остаток призов new CounterData(PrefsKeyVault.PRIZES_AVAILABLE, "Остаток призов", 0), // Цены new CounterData("PricePVP", "Цена на двоих", 10), new CounterData("PricePVE", "Цена против бота", 10), new CounterData("PriceRevenge", "Цена реванша", 10), // Расчеты new CounterData("ValutaName", "Название валюты", "руб."), new CounterData("ValutaPerImpulse", "Валюта за импульс", 10), // Другое new CounterData("Number", "Номер телефона", "<не указан>"), }; void Refresh() { Counters.Clear(); foreach (var config in _counterConfigs) { AddCounter(config); } } void AddCounter(CounterData counterData) { string value = counterData.Type == SettingType.Int ? PlayerPrefs.GetInt(counterData.PrefsKey, counterData.DefaultIntValue).ToString() : PlayerPrefs.GetString(counterData.PrefsKey, counterData.DefaultStringValue); Counters[counterData.Alias] = value; } struct CounterData { public string PrefsKey; public string Alias; public SettingType Type; public string DefaultStringValue; public int DefaultIntValue; /// Конструктор для строковых счетчиков public CounterData(string prefsKey, string alias, string defaultValue) { PrefsKey = prefsKey; Alias = alias; Type = SettingType.String; DefaultStringValue = defaultValue; DefaultIntValue = 0; } /// Конструктор для целочисленных счетчиков public CounterData(string prefsKey, string alias, int defaultValue) { PrefsKey = prefsKey; Alias = alias; Type = SettingType.Int; DefaultStringValue = string.Empty; DefaultIntValue = defaultValue; } } }