Encounter / Assets / Scripts / ScriptableObjects / DialogueSO.cs
DialogueSO.cs
Raw
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;
#endif

/// <summary>
/// Handles long instances of dialogue with voice acting included when available
/// </summary>
[CreateAssetMenu(fileName = "New Dialogue", menuName = "Dialogue Config/New Dialogue")]
public class DialogueSO : ScriptableObject
{
    [TextArea(3, 12)]
    public List<string> dialogues;

    public bool HasAudio;
    public List<AudioClip> dialogueClips;
}

#if UNITY_EDITOR
[CustomEditor(typeof(DialogueSO))]
public class DialogueSOEditor : Editor
{
    private DialogueSO container;

    private void OnEnable()
    {
        container = target as DialogueSO;
    }

    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        EditorGUILayout.LabelField("Dialogue", EditorStyles.boldLabel);
        EditorGUILayout.Space(10);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogues"));
        EditorGUILayout.Space(20);
        EditorGUILayout.LabelField("Voice Acting", EditorStyles.boldLabel);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("HasAudio"));

        if (container.HasAudio)
            EditorGUILayout.PropertyField(serializedObject.FindProperty("dialogueClips"));

        serializedObject.ApplyModifiedProperties();
    }
}
#endif