58 lines
1.7 KiB
C#
58 lines
1.7 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// Определяет хватает ли денег для прохождения в режимы
|
||
/// </summary>
|
||
public class PaymentGate : MonoBehaviour
|
||
{
|
||
//для каждого режима доступ
|
||
Dictionary<GameMode, bool> gameModeAccess;
|
||
|
||
public event Action<Dictionary<GameMode, bool>> OnGameModeAccessRefreshed;
|
||
|
||
public void Initialize(List<GameMode> 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<GameMode> gameModes)
|
||
{
|
||
gameModeAccess = new Dictionary<GameMode, bool>();
|
||
foreach (GameMode gameMode in gameModes)
|
||
gameModeAccess[gameMode] = EnoughMoney(gameMode, WalletManager.Balance);
|
||
}
|
||
|
||
private bool EnoughMoney(GameMode gameMode, int balance) => balance >= gameMode.Price;
|
||
}
|