82 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|
|
} |