47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using System;
|
|
using AibisDream.Framework;
|
|
using AibisDream.Utility;
|
|
using Yarn.Unity;
|
|
using UnityEngine;
|
|
|
|
namespace AibisDream
|
|
{
|
|
public class LineView : DialogueViewBase
|
|
{
|
|
public override void RunLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
|
|
{
|
|
EnumEventSystem.Global.Send(DialogEventEnum.LineStart, DialogText.GetLine(dialogueLine));
|
|
|
|
HandleLineOutput(dialogueLine, onDialogueLineFinished);
|
|
|
|
if (DialogController.Instance.quickRunMode)
|
|
{
|
|
// 在快速模式下,立即跳过到下一行,不等待Yarn命令执行
|
|
StartCoroutine(QuickRunNextStep(onDialogueLineFinished));
|
|
}
|
|
}
|
|
|
|
private System.Collections.IEnumerator QuickRunNextStep(Action onDialogueLineFinished)
|
|
{
|
|
// 在快速模式下,立即跳过,不等待任何延迟
|
|
yield return null;
|
|
|
|
// 立即跳过到下一行
|
|
DialogCanvasManager.Instance.TrySkipLine(true);
|
|
DialogCanvasManager.Instance.NextStep();
|
|
}
|
|
|
|
private void HandleLineOutput(LocalizedLine dialogueLine, Action onDialogueLineFinished)
|
|
{
|
|
DialogCanvasManager.Instance.ShowLine(dialogueLine.TextWithoutCharacterName.Text,
|
|
dialogueLine.GetCharacterVo(), onDialogueLineFinished, dialogueLine.TextID, dialogueLine.IsAutoSkipLine());
|
|
}
|
|
|
|
public override void RunOptions(DialogueOption[] dialogueOptions, Action<int> onOptionSelected)
|
|
{
|
|
EnumEventSystem.Global.Send(DialogEventEnum.OptionShow);
|
|
var options = DialogOption.GeneOptions(dialogueOptions, onOptionSelected);
|
|
DialogCanvasManager.Instance.ShowOptions(options);
|
|
}
|
|
}
|
|
} |