sea-battle-vr/Assets/Scripts/Settings/SettingSignalCatcher.cs

33 lines
901 B
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class SettingSignalCatcher : MonoBehaviour
{
[SerializeField] private List<SignalToCallback> signalToCallbackList;
private void OnEnable() => SignalView.SignalEmmited += HandleSignal;
private void OnDisable() => SignalView.SignalEmmited -= HandleSignal;
public void HandleSignal(string entrySignal)
{
foreach (var signalToCallback in signalToCallbackList)
{
if (signalToCallback.Signal == entrySignal)
{
signalToCallback.Callback?.Invoke();
return;
}
}
Debug.LogWarning($"Callback для сигнала {entrySignal} не задан", this);
}
[Serializable]
class SignalToCallback
{
public string Signal;
public UnityEvent Callback;
}
}