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);
}
}
}