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;
}