using System; using UnityEngine; namespace RR.Common.Prizes { /// /// Абстрактный исполнитель приза. /// Каждый тип приза реализует для своей логики выдачи. /// Исполнители создаются PrizeSystemManager, не хранят конфигурацию — /// получают её через при вызове. /// public abstract class PrizeBase { /// Тип приза, который обрабатывает этот исполнитель. public abstract PrizeType Type { get; } /// Идёт ли процесс выдачи. public virtual bool IsGiving => false; /// /// Вызывается после завершения выдачи. true — успех, false — ошибка. /// public event Action OnPrizeResult; /// /// Выполняет выдачу приза. /// /// MonoBehaviour для запуска корутин. /// Конфигурация приза для текущего уровня. public abstract void Execute(MonoBehaviour host, LevelPrizeConfig config); /// Уведомляет подписчиков о результате. protected void InvokeResult(bool success) { OnPrizeResult?.Invoke(success); } } }