58 lines
1.2 KiB
C#
58 lines
1.2 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class SignalView : BaseSettingView
|
|
{
|
|
public static event Action<string> SignalEmmited;
|
|
|
|
[Header("Layout ссылки")]
|
|
[SerializeField] private Image ButtonImage;
|
|
|
|
[Header("Настройки анимации")]
|
|
[SerializeField] private Color ButtonColorPressed;
|
|
[SerializeField] private Color ButtonColorNormal;
|
|
|
|
|
|
[Header("Звуки")]
|
|
[SerializeField] private AudioClip AcceptedClip;
|
|
|
|
private string signal;
|
|
private bool pressed;
|
|
private bool acted = false;
|
|
|
|
public override void Initialize(SettingDTO setting)
|
|
{
|
|
base.Initialize(setting);
|
|
signal = setting.SignalValue;
|
|
}
|
|
|
|
public override void TakeInput(int _, bool action)
|
|
{
|
|
pressed = action;
|
|
}
|
|
|
|
private void LateUpdate()
|
|
{
|
|
Display();
|
|
|
|
if (pressed && !acted)
|
|
EmmitSignal();
|
|
|
|
if(!pressed && acted)
|
|
acted = false;
|
|
}
|
|
|
|
private void Display()
|
|
{
|
|
ButtonImage.color = pressed ? ButtonColorPressed : ButtonColorNormal;
|
|
}
|
|
|
|
private void EmmitSignal()
|
|
{
|
|
acted = true;
|
|
SoundManager.instance.playClip(AcceptedClip);
|
|
SignalEmmited?.Invoke(signal);
|
|
}
|
|
}
|