using PrizeSystem; using UnityEngine; using UnityEngine.Events; /// ///Кошелек. При использовании предполагается что это единственный глобальный кошелек для всей игры.
///Зависимости:
///- ComWrapper
///- SettingsManager
///
public static class SingleWallet { static bool saveMoneyBetweenSessions = true; //это надо из конфига тянуть! public static int Balance; public static UnityEvent onCoinAdded; public static UnityEvent onCoinRemoved; public static void Initialize() { if (!saveMoneyBetweenSessions) PlayerPrefs.SetInt("CoinsCount", 0); Balance = PlayerPrefs.GetInt("CoinsCount", 0); onCoinAdded = new UnityEvent(); onCoinRemoved = new UnityEvent(); ComWrapper.PaymentReceived += AddCredit; } public static bool Pay(int amount) { //блок проверки оплаты if (SettingsManager.GetBool("Freeplay", false)) { return true; } if (Balance >= amount) { Balance -= amount; PlayerPrefs.SetInt("CoinsCount", Balance); onCoinRemoved?.Invoke(Balance); return true; } return false; } public static void AddCredit() { int recieved = PlayerPrefs.GetInt("ValutaPerImpulse", 10); Balance = Balance + recieved; PlayerPrefs.SetInt("CoinsCount", Balance); //Счетчики выручки PlayerPrefs.SetInt(PrizeSystemManager.key_cash, PlayerPrefs.GetInt(PrizeSystemManager.key_cash) + recieved); PlayerPrefs.SetInt(PrizeSystemManager.key_cashNul, PlayerPrefs.GetInt(PrizeSystemManager.key_cashNul) + recieved); if (SettingsManager.GetString("BaseBotDifficulty", "Фиксированная") == "Повышенная") { int nowPulses = PlayerPrefs.GetInt("PulsesCounter", 0) + 1; PlayerPrefs.SetInt("PulsesCounter", nowPulses); } onCoinAdded?.Invoke(Balance); } public static void AddCreditNoCounters(int amount) { Balance = Balance + amount; PlayerPrefs.SetInt("CoinsCount", Balance); onCoinAdded?.Invoke(Balance); } public static void ReturnCredits(GameMode gameMode) { string gamemodePriceKey = gameMode == GameMode.pvp ? "PricePVP" : "PricePVE"; int gamemodePrice = PlayerPrefs.GetInt(gamemodePriceKey, 10); Balance += gamemodePrice; PlayerPrefs.SetInt("CoinsCount", Balance); onCoinAdded?.Invoke(Balance); } }