using PrizeSystem; using System; using UnityEngine; using UnityEngine.UI; public abstract class BasePrizeConfigurator : MonoBehaviour, IControlable { public event Action OnPrizeConfigured; [SerializeField] private Button _applyButton; private bool _completed; public bool ControlsEnabled { get; set; } = true; protected virtual void Awake() { if (_applyButton != null) _applyButton.onClick.AddListener(Confirm); } protected virtual void OnDestroy() { if (_applyButton != null) _applyButton.onClick.RemoveListener(Confirm); } public abstract void Configure(PrizeType prizeType); public abstract void Confirm(); public virtual void Complete(Prize prize) { if (_completed) return; _completed = true; ControlsEnabled = false; OnPrizeConfigured?.Invoke(prize); Destroy(gameObject); } public virtual void UpdateControls() { } }