using System; using System.Collections.Generic; using UnityEngine; /// /// Определяет хватает ли денег для прохождения в режимы /// public class PaymentGate : MonoBehaviour { //для каждого режима доступ Dictionary gameModeAccess; public event Action> OnGameModeAccessRefreshed; public void Initialize(List gameModes) { FillAccessDictionary(gameModes); OnGameModeAccessRefreshed?.Invoke(gameModeAccess); } public void Refresh(int currentBalance) { foreach (var gameModeKVP in gameModeAccess) { GameMode gameMode = gameModeKVP.Key; gameModeAccess[gameMode] = EnoughMoney(gameMode, currentBalance); } OnGameModeAccessRefreshed?.Invoke(gameModeAccess); } public void TryEnterGameMode(GameMode gameMode) { if(!gameModeAccess.ContainsKey(gameMode)) { Debug.LogError($"Не найдена запись о доступе в режим {gameMode.name}"); return; } if (gameModeAccess[gameMode]) { SceneLoader.LoadScene(gameMode.SceneName); } else { Debug.Log($"Режим {gameMode.Alias} недоступен"); } } private void FillAccessDictionary(List gameModes) { gameModeAccess = new Dictionary(); foreach (GameMode gameMode in gameModes) gameModeAccess[gameMode] = EnoughMoney(gameMode, WalletManager.Balance); } private bool EnoughMoney(GameMode gameMode, int balance) => balance >= gameMode.Price; }