Files
aibis-dream/Assets/Scripts/Dialog System/CommandOptionView.cs
T
2024-08-18 11:40:17 +08:00

61 lines
1.8 KiB
C#

using System;
using Yarn.Unity;
namespace AibisDream
{
public class CommandOptionView : DialogueViewBase
{
// 进入指令选项模式
private bool isInCommand;
private string commandName;
public override void RunLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
{
// 判断是否进入Command状态
isInCommand = dialogueLine.Text.TryGetCommandAttr(out var name);
if (isInCommand)
{
// 保存指令
commandName = name;
// 进入下一步
onDialogueLineFinished.Invoke();
}
else
{
base.RunLine(dialogueLine, onDialogueLineFinished);
}
}
public override void RunOptions(DialogueOption[] dialogueOptions, Action<int> onOptionSelected)
{
// 非指令直接跳过
if (!isInCommand)
{
base.RunOptions(dialogueOptions, onOptionSelected);
return;
}
// 传输选项
YarnOption[] options = YarnOption.GeneOptions(dialogueOptions, onOptionSelected);
DialogController.Instance.InvokeOptionCommand(commandName, options);
commandName = null;
}
public override void InterruptLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
{
base.InterruptLine(dialogueLine, onDialogueLineFinished);
}
public override void DismissLine(Action onDismissalComplete)
{
base.DismissLine(onDismissalComplete);
}
public override void UserRequestedViewAdvancement()
{
base.UserRequestedViewAdvancement();
}
}
}