using System; using UnityEngine; using UnityEngine.UI; namespace PrizeSystem { public class TakeOrRiskPanel : MonoBehaviour { [Header("Ссылки на панели")] [SerializeField] private Image CurrentPrizeFrame; [SerializeField] private Image NextPrizeFrame; [SerializeField] private PrizeView CurrentPrizeView; [SerializeField] private PrizeView NextPrizeView; [Header("Цветовая анимация")] [SerializeField] private Color DisabledColor; [SerializeField] float HsvSpeed = 0.3f; [SerializeField] private AudioClip StartAcceptingClip; private TakeOrRiskOption SelectedOption; public event Action OnComplete; private Image activeFrame; private Image inactiveFrame; private void OnEnable() { SelectedOption = TakeOrRiskOption.Take; activeFrame = CurrentPrizeFrame; inactiveFrame = NextPrizeFrame; } private void OnDisable() { ClearPrizes(); } void Update() { if(In.GetButtonDown(ButtonPinMapping.startOnePlayer)) { SelectedOption = TakeOrRiskOption.Take; Accept(); } if (In.GetButtonDown(ButtonPinMapping.startTwoPlayers)) { SelectedOption = TakeOrRiskOption.Risk; Accept(); } DisplayGraphics(); } public void SetPrizes(Prize CurrentPrize, Prize NextPrize) { CurrentPrizeView.SetPrize(CurrentPrize); NextPrizeView.SetPrize(NextPrize); } private void ClearPrizes() { CurrentPrizeView.Clear(); NextPrizeView.Clear(); } private void DisplayGraphics() { //Цвет рамки float hue = (Time.time * HsvSpeed) % 1f; Color animatedColor = Color.HSVToRGB(hue, 1, 1); activeFrame.color = animatedColor; inactiveFrame.color = animatedColor; } private void Accept() { OnComplete?.Invoke(SelectedOption); gameObject.SetActive(false); } } }