82 lines
2.2 KiB
C#

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