57 lines
1.2 KiB
C#
57 lines
1.2 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class SignalView : MonoBehaviour, ISettingView
|
|
{
|
|
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 void Initialize(SettingDTO setting)
|
|
{
|
|
signal = setting.SignalValue;
|
|
}
|
|
|
|
public void TakeInput(int direction)
|
|
{
|
|
pressed = direction != 0;
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|