using UnityEngine;

[CreateAssetMenu(fileName = "New Debug Channel", menuName = "Scriptables/Debug Channel")]
public class DebugChannelSO : ScriptableObject
{
    [SerializeField] bool m_enableDebugMessages;
    [SerializeField] bool m_enableDebugGizmos;
    public bool EnableDebugGizmos { get { return m_enableDebugGizmos; } }

    public enum Severity
    {
        Log,
        Warning,
        Error
    }

    public void Raise(string _message, Severity _severity = Severity.Log)
    {
        if (!m_enableDebugMessages)
            return;

        switch (_severity)
        {
            case (Severity.Log):
                Debug.Log(_message);
                break;
            case (Severity.Warning):
                Debug.LogWarning(_message);
                break;
            case (Severity.Error):
                Debug.LogError(_message);
                break;
        }
    }
    public void Raise(MonoBehaviour _sourceType, string _message, Severity _severity = Severity.Log)
    {
        if (!m_enableDebugMessages)
            return;

        string _combinedMessage = "[" + _sourceType.GetType().ToString() + "] " + _message;

        switch (_severity)
        {
            case (Severity.Log):
                Debug.Log(_combinedMessage);
                break;
            case (Severity.Warning):
                Debug.LogWarning(_combinedMessage);
                break;
            case (Severity.Error):
                Debug.LogError(_combinedMessage);
                break;
        }
    }
}
