Danro/Assets/Scripts/Managers/HopperCheckController.cs
Danil Iarosh 6da2812c8e
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
feat: add hopper prize system, prize error display, levitator component
Система выдачи призов хоппером:
- PrizeSystemManager теперь читает enableHopper из настройки prizes.giveSmallPrize
  вместо захардкоженного SerializeField (реагирует на изменения в реальном времени)
- LevelFinish: исправлен ключ настройки на prizes.giveSmallPrize
- Добавлен HopperCheckController для тестирования выдачи приза кнопкой в настройках
- Проверка датчика хоппера перенесена в ComDeviceClient (2-й бит INPUT)
- PrizeGivenBuffer заменён с PlayerPrefs на потокобезопасный Interlocked-буфер
  (исправлен краш при вызове PlayerPrefs из фонового потока платы)
- Добавлен PrizeSystem.OnPrizeResult (Action<bool>) — событие результата выдачи

Отображение ошибки выдачи приза:
- Добавлен PrizeErrorDisplay — UI-компонент, подписанный на OnPrizeResult
- Зависит от настройки prizes.showPrizeError (реагирует на изменения в реальном времени)

QR-коды:
- PrizeSystemManager подписан на изменение prizes.phoneNumber — QR-коды
  перегенерируются автоматически при смене номера
- WinBannerController показывает QR-коды только при включённой prizes.giveBigPrize

Прочее:
- Добавлен Levitator — компонент плавной левитации объекта (высота, скорость, плавность)
- Настройки: группы поддержки/тестов реорганизованы, добавлена кнопка btn.hopper_test
2026-03-06 16:47:40 +03:00

25 lines
843 B
C#

using RR.Common.Controls;
using RR.Common.Managers;
using UnityEngine;
namespace RR.Common.UI
{
/// <summary>
/// Простой компонент для проверки выдачи приза хоппером.
/// Повесить на объект в сцене и привязать метод CheckGivePrize() к кнопке через UnityEvent.
/// </summary>
public class HopperCheckController : MonoBehaviour
{
/// <summary>
/// Запускает выдачу приза. Привязать к кнопке в инспекторе.
/// </summary>
public void CheckGivePrize()
{
if (PrizeSystemManager.Instance != null)
PrizeSystemManager.Instance.GivePrize();
else
PrizeSystem.GivePrize();
}
}
}