Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- Добавлены публичные методы в PrizeSystem для проверки статуса выдачи приза (WasLastPrizeSuccessful, IsPrizing) - Сохранение результата последней выдачи приза для внешнего контроля - Исправлено вращение в TextSplash: теперь оно применяется относительно начального поворота вместо сброса до 0 - Начальное вращение сохраняется в Awake и используется как базовое для анимации покачивания - Начата глобальная замена шрифтов в игре: добавлены BerlinSansFBCyrillic, Flatiron Casual, Flatiron Regular, RifficFree-Bold - Заменена часть шрифтов в главном меню на новые - Добавлены новые тайловые спрайты для фона (Forest, Hills, Sky) - Удален лишний пробел в PlayerController.cs - Исправлена BOM-метка в UICreditsTextController.cs
111 lines
3.9 KiB
C#
111 lines
3.9 KiB
C#
using RR.Game2D.Core.Managers;
|
||
using RR.Common.Settings;
|
||
using RR.Common.Managers;
|
||
using TMPro;
|
||
using UnityEngine;
|
||
|
||
namespace RR.Common.UI
|
||
{
|
||
public class UICreditsTextController : MonoBehaviour
|
||
{
|
||
// UI elements
|
||
[SerializeField] private TextMeshProUGUI livesIncreaseText;
|
||
[SerializeField] private TextMeshProUGUI livesText;
|
||
|
||
// Strings to display
|
||
[SerializeField] private string livesIncreaseString = "{0}";
|
||
[SerializeField] private string livesString = "У вас будет {0}";
|
||
|
||
private GameManager _gameManager;
|
||
private SettingsManager _settingsManager;
|
||
private BalanceManager _balanceManager;
|
||
|
||
private void Start()
|
||
{
|
||
_gameManager = GameManager.Instance;
|
||
_balanceManager = BalanceManager.Instance;
|
||
|
||
if (_gameManager == null) return;
|
||
|
||
_settingsManager = _gameManager.Settings;
|
||
|
||
if (_settingsManager == null) _settingsManager = SettingsManager.Instance;
|
||
|
||
UpdateLivesText();
|
||
UpdateLivesIncreaseText();
|
||
|
||
// Подписываемся на изменение баланса для пересчета жизней
|
||
if (_balanceManager != null)
|
||
{
|
||
_balanceManager.OnBalanceChanged.AddListener(OnBalanceChanged);
|
||
}
|
||
|
||
if (_settingsManager != null)
|
||
{
|
||
_settingsManager.OnSettingsLoaded += UpdateLivesIncreaseText;
|
||
_settingsManager.OnSettingsSaved += UpdateLivesIncreaseText;
|
||
_settingsManager.OnSettingsLoaded += OnSettingsChanged;
|
||
_settingsManager.OnSettingsSaved += OnSettingsChanged;
|
||
}
|
||
}
|
||
|
||
private void OnDestroy()
|
||
{
|
||
if (_gameManager == null) _gameManager = GameManager.Instance;
|
||
|
||
if (_balanceManager != null)
|
||
{
|
||
_balanceManager.OnBalanceChanged.RemoveListener(OnBalanceChanged);
|
||
}
|
||
|
||
if (_settingsManager != null)
|
||
{
|
||
_settingsManager.OnSettingsLoaded -= UpdateLivesIncreaseText;
|
||
_settingsManager.OnSettingsSaved -= UpdateLivesIncreaseText;
|
||
_settingsManager.OnSettingsLoaded -= OnSettingsChanged;
|
||
_settingsManager.OnSettingsSaved -= OnSettingsChanged;
|
||
}
|
||
}
|
||
|
||
private void OnBalanceChanged(int newBalance)
|
||
{
|
||
UpdateLivesText();
|
||
}
|
||
|
||
private void OnSettingsChanged()
|
||
{
|
||
UpdateLivesText();
|
||
}
|
||
|
||
private void UpdateLivesIncreaseText()
|
||
{
|
||
if (_settingsManager != null)
|
||
livesIncreaseText.text = string.Format(livesIncreaseString, _settingsManager.GetInt("gameplay.additionalLives"));
|
||
}
|
||
|
||
private void UpdateLivesText()
|
||
{
|
||
if (_gameManager == null || _balanceManager == null || _settingsManager == null)
|
||
return;
|
||
|
||
int currentBalance = _balanceManager.CurrentBalance;
|
||
int impulseCost = _settingsManager.GetInt("payment.paymentImpulseCost");
|
||
int startLives = _settingsManager.GetInt("gameplay.startLives");
|
||
int livesIncrement = _settingsManager.GetInt("gameplay.additionalLives");
|
||
|
||
if (impulseCost <= 0) impulseCost = 10;
|
||
|
||
// Рассчитываем количество жизней на основе баланса
|
||
int totalImpulses = currentBalance / impulseCost;
|
||
int totalLives = startLives;
|
||
|
||
if (totalImpulses > 0)
|
||
{
|
||
int additionalImpulses = totalImpulses - 1;
|
||
totalLives = startLives + (additionalImpulses * livesIncrement);
|
||
}
|
||
|
||
livesText.text = string.Format(livesString, totalLives);
|
||
}
|
||
}
|
||
} |