Danro/Assets/Scripts/UI/UICreditsTextController.cs
Danil Iarosh 6a4c23c154
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
feat: Add prize status API, fix TextSplash rotation, and update game fonts
- Добавлены публичные методы в PrizeSystem для проверки статуса выдачи приза (WasLastPrizeSuccessful, IsPrizing)
- Сохранение результата последней выдачи приза для внешнего контроля
- Исправлено вращение в TextSplash: теперь оно применяется относительно начального поворота вместо сброса до 0
- Начальное вращение сохраняется в Awake и используется как базовое для анимации покачивания
- Начата глобальная замена шрифтов в игре: добавлены BerlinSansFBCyrillic, Flatiron Casual, Flatiron Regular, RifficFree-Bold
- Заменена часть шрифтов в главном меню на новые
- Добавлены новые тайловые спрайты для фона (Forest, Hills, Sky)
- Удален лишний пробел в PlayerController.cs
- Исправлена BOM-метка в UICreditsTextController.cs
2026-02-17 13:29:26 +03:00

111 lines
3.9 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 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);
}
}
}