68 lines
1.9 KiB
C#
68 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UHFPS.Runtime;
|
|
|
|
namespace UHFPS.Scriptable
|
|
{
|
|
[CreateAssetMenu(fileName = "Dialogue", menuName = "UHFPS/Dialogue/Dialogue Asset")]
|
|
public class DialogueAsset : ScriptableObject
|
|
{
|
|
public enum SubtitleTypeEnum { Single, Multiple }
|
|
|
|
[Serializable]
|
|
public sealed class DialogueSubtitle
|
|
{
|
|
public float Time;
|
|
public string Narrator;
|
|
public GString Text;
|
|
}
|
|
|
|
[Serializable]
|
|
public sealed class Dialogue
|
|
{
|
|
public AudioClip DialogueAudio;
|
|
public SubtitleTypeEnum SubtitleType;
|
|
|
|
public DialogueSubtitle SingleSubtitle = new();
|
|
public List<DialogueSubtitle> Subtitles;
|
|
|
|
public Dialogue()
|
|
{
|
|
DialogueAudio = null;
|
|
Subtitles = new();
|
|
}
|
|
|
|
public Dialogue Copy()
|
|
{
|
|
Dialogue copy = new()
|
|
{
|
|
DialogueAudio = DialogueAudio,
|
|
SubtitleType = SubtitleType,
|
|
Subtitles = new(),
|
|
|
|
SingleSubtitle = new()
|
|
{
|
|
Time = SingleSubtitle.Time,
|
|
Narrator = SingleSubtitle.Narrator,
|
|
Text = new(SingleSubtitle.Text),
|
|
}
|
|
};
|
|
|
|
foreach (var subtitle in Subtitles)
|
|
{
|
|
copy.Subtitles.Add(new()
|
|
{
|
|
Time = subtitle.Time,
|
|
Narrator = subtitle.Narrator,
|
|
Text = new(subtitle.Text)
|
|
});
|
|
}
|
|
|
|
return copy;
|
|
}
|
|
}
|
|
|
|
public List<Dialogue> Dialogues = new();
|
|
}
|
|
} |