using RR.Common.Managers;
using RR.Common.Settings;
using TMPro;
using UnityEngine;
namespace RR.Common.UI
{
///
/// Отображает стоимость одной игры.
/// Значения берутся из настроек: payment.startGameCost, payment.paymentImpulseCost,
/// payment.currency.
///
[AddComponentMenu("RR/UI/Game Price Display")]
[RequireComponent(typeof(TextMeshProUGUI))]
public class GamePriceDisplay : MonoBehaviour
{
[Header("Формат отображения")]
[Tooltip("Формат строки. {0} — стоимость, {1} — валюта")]
[SerializeField] private string format = "{0} {1}";
[Tooltip("Текст при бесплатной игре")]
[SerializeField] private string freeGameText = "Бесплатно";
private TextMeshProUGUI _text;
private SettingsManager _settingsManager;
private void Awake()
{
_text = GetComponent();
}
private void Start()
{
_settingsManager = SettingsManager.Instance;
if (_settingsManager != null)
{
_settingsManager.OnSettingsLoaded += UpdateDisplay;
_settingsManager.OnSettingsSaved += UpdateDisplay;
}
UpdateDisplay();
}
private void OnDestroy()
{
if (_settingsManager != null)
{
_settingsManager.OnSettingsLoaded -= UpdateDisplay;
_settingsManager.OnSettingsSaved -= UpdateDisplay;
}
}
private void UpdateDisplay()
{
if (_text == null) return;
if (_settingsManager == null)
{
_settingsManager = SettingsManager.Instance;
if (_settingsManager == null) return;
}
bool isFreeGame = _settingsManager.GetBool("payment.freeGame");
if (isFreeGame)
{
_text.text = freeGameText;
return;
}
int startGameCost = _settingsManager.GetInt("payment.startGameCost");
int impulseCost = _settingsManager.GetInt("payment.paymentImpulseCost");
if (impulseCost <= 0) impulseCost = 10;
if (startGameCost <= 0) startGameCost = impulseCost;
string currency = _settingsManager.GetString("payment.currency");
_text.text = string.Format(format, startGameCost, currency);
}
}
}