sea-battle-vr/Assets/Scripts/Menu/MenuControllerOneRegime.cs

85 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using TMPro;
using UnityEngine;
public class MenuControllerOneRegime : MonoBehaviour
{
[SerializeField] private string GameplaySceneName = "Gameplay";
[SerializeField] private TextMeshProUGUI BalanceLabel;
[SerializeField] private TextMeshProUGUI GamesPayedLabel;
[SerializeField] private TextMeshProUGUI FreeplayLabel;
[SerializeField] private string BalancePrefix = "Баланс: ";
[SerializeField] private string GamesPayedPrefix = "Оплачено игр: ";
[SerializeField] private GameObject _instructionCommon;
[SerializeField] private GameObject _instructionPeriscope;
private int gamePrice;
private bool initialized = false;
private string valuta;
private bool _freeplay;
private bool EnoughMoney => _freeplay || WalletManager.Balance >= gamePrice;
private int ActualPrice => _freeplay ? 0 : gamePrice;
public void Initialize()
{
gamePrice = SettingsManager.GetInt(SettingKey.GamePrice, 100);
valuta = SettingsManager.GetString(SettingKey.Valuta, "руб.");
_freeplay = SettingsManager.GetBool(SettingKey.Freeplay, false);
InitLayout();
WalletManager.OnBalanceChanged += UpdateUI;
UpdateUI(WalletManager.Balance);
initialized = true;
}
private void Update()
{
if (!initialized) return;
if (EnoughMoney && In.GetButtonDown(InSignal.DownRight))
{
WalletManager.TakeMoney(ActualPrice);
SceneLoader.LoadScene(GameplaySceneName);
}
if (In.GetButtonDown(InSignal.Service))
SceneLoader.LoadScene("Settings");
}
private void OnDestroy()
{
WalletManager.OnBalanceChanged -= UpdateUI;
}
public void UpdateUI(int balance)
{
if (_freeplay)
{
_instructionCommon.SetActive(false);
_instructionPeriscope.SetActive(true);
return;
}
string valutaPluralized = valuta == "руб." ? PluralizeUtil.Rubles(balance) : PluralizeUtil.Tokens(balance);
BalanceLabel.text = $"{BalancePrefix}{balance}/{ActualPrice} {valutaPluralized}";
GamesPayedLabel.text = $"{GamesPayedPrefix}{balance / gamePrice}";
bool enoughMoney = balance >= gamePrice;
_instructionCommon.SetActive(!enoughMoney);
_instructionPeriscope.SetActive(enoughMoney);
}
private void InitLayout()
{
bool needPay = !_freeplay;
BalanceLabel.gameObject.SetActive(needPay);
GamesPayedLabel.gameObject.SetActive(needPay);
FreeplayLabel.gameObject.SetActive(_freeplay);
}
}