Danro/Assets/Scripts/UI/QRCodeUIController.cs
Danil Iarosh 301e4be47d refactor: LevelFinish — выдача приза и показ QR разделены
- Добавлен LevelFinish.cs: новый компонент финиша уровня
  - выдача маленького приза через PrizeSystemManager (учитывает enableHopper)
  - настройки: enablePrizeOnFinish, prizeEnabledSettingKey, prizeDelay, debugMode
  - защита от двойной выдачи (_prizeGiven)
- PlayerController: закомментирован старый переход на следующий уровень по тегу 'Finish'
  (теперь за это отвечает LevelFinish)
- QRCodeUIController: помечен [Obsolete], QR-коды показываются только при победе
  через WinBannerController.ShowWin() -> PrizeSystemManager.GetQRCodes()
- Finish.prefab: добавлен компонент LevelFinish (enablePrizeOnFinish=true, prizeDelay=0)
- Сцена 1-1: переопределён enablePrizeOnFinish=false для финиша промежуточного уровня
- Сцена 1-3: minor update
- MainMenu: правки якорей UI-элементов и активация скрытого объекта
2026-02-19 15:15:16 +03:00

71 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 RR.Common.Managers;
using RR.Game2D.Core.Managers;
using UnityEngine;
using UnityEngine.UI;
namespace RR.Common.UI
{
/// <summary>
/// УСТАРЕВШИЙ контроллер QR-кодов.
/// Логика отображения QR-кодов полностью перенесена в WinBannerController:
/// QR-коды генерируются в PrizeSystemManager и показываются ТОЛЬКО при победе (GameWonEvent).
/// Удалите этот компонент со сцены и используйте WinBannerController.
/// </summary>
[System.Obsolete("Используйте WinBannerController — QR-коды показываются только при победе через PrizeSystemManager.")]
public class QRCodeUIController : MonoBehaviour
{
[SerializeField] private Transform content;
private PrizeSystemManager _prizeSystemManager;
private GameObject[] _qrCodes;
private void Start()
{
Debug.LogWarning("[QRCodeUIController] Этот компонент устарел. " +
"Удалите его со сцены — QR-коды управляются через WinBannerController.");
_prizeSystemManager = PrizeSystemManager.Instance;
GameManager.Instance.GameWonEvent += AddQRCodes;
}
private void OnDestroy()
{
if (GameManager.Instance != null)
GameManager.Instance.GameWonEvent -= AddQRCodes;
}
private void AddQRCodes(float _)
{
if (_qrCodes != null) ClearQRCodes();
Texture2D[] qrCodesImages = _prizeSystemManager.GetQRCodes();
_qrCodes = new GameObject[qrCodesImages.Length];
for (int i = 0; i < qrCodesImages.Length; i++)
{
_qrCodes[i] = new GameObject("QRCode_" + i, typeof(RectTransform), typeof(Image));
_qrCodes[i].transform.SetParent(content, false);
Sprite sprite = Sprite.Create(qrCodesImages[i],
new Rect(0, 0, qrCodesImages[i].width,
qrCodesImages[i].height),
new Vector2(0.5f, 0.5f));
_qrCodes[i].GetComponent<Image>().sprite = sprite;
}
}
private void ClearQRCodes()
{
if (_qrCodes == null) return;
foreach (GameObject qrCode in _qrCodes)
{
Destroy(qrCode);
}
_qrCodes = null;
}
}
}