气泡组件和配置项

This commit is contained in:
2024-09-13 19:39:22 +00:00
parent 4d9de0712e
commit 7adffa4372
73 changed files with 5671 additions and 2047 deletions
+10 -25
View File
@@ -1,13 +1,11 @@
using System;
using System.Linq;
using AibisDream.Utility;
using Yarn.Unity;
namespace AibisDream
{
public class LineView : DialogueViewBase
{
private const string AutoNext = "auto_next";
// 进入指令选项模式
private bool _isInCommand;
@@ -17,11 +15,11 @@ namespace AibisDream
if (_isInCommand)
{
DialogUiViewer.Instance.HideDialog();
DialogCanvasManager.GetCurView().HideDialog();
base.RunLine(dialogueLine, onDialogueLineFinished);
return;
}
HandleLineOutput(dialogueLine, onDialogueLineFinished);
if (DialogController.Instance.quickRunMode)
@@ -35,32 +33,21 @@ namespace AibisDream
// 对话系统正在交谈状态
DialogController.Instance.IsTalking = true;
// 解析LocalizedLine
if (dialogueLine.Metadata != null && dialogueLine.Metadata.Contains(AutoNext))
{
// 自动跳过
DialogUiViewer.Instance.ShowAutoLine(dialogueLine.TextWithoutCharacterName.Text,
dialogueLine.CharacterName, onDialogueLineFinished);
}
else
{
// 需要玩家点击
DialogUiViewer.Instance.ShowLine(dialogueLine.TextWithoutCharacterName.Text,
dialogueLine.CharacterName, onDialogueLineFinished);
}
DialogCanvasManager.GetCurView().ShowLine(dialogueLine.TextWithoutCharacterName.Text,
dialogueLine.GetCharacterVo(), onDialogueLineFinished, dialogueLine.IsAutoSkipLine());
}
public override void RunOptions(DialogueOption[] dialogueOptions, Action<int> onOptionSelected)
{
if (_isInCommand)
{
DialogUiViewer.Instance.HideDialog();
DialogCanvasManager.GetCurView().HideDialog();
base.RunOptions(dialogueOptions, onOptionSelected);
return;
}
DialogController.Instance.IsTalking = true;
DialogUiViewer.Instance.ShowOptions(dialogueOptions, onOptionSelected);
DialogCanvasManager.GetCurView().ShowOptions(dialogueOptions, onOptionSelected);
}
public override void InterruptLine(LocalizedLine dialogueLine, Action onDialogueLineFinished)
@@ -84,13 +71,11 @@ namespace AibisDream
{
return;
}
if (!DialogUiViewer.Instance.TrySkipLine())
if (!DialogCanvasManager.GetCurView().TrySkipLine())
{
DialogUiViewer.Instance.AfterEndLine();
requestInterrupt.Invoke();
}
}
}
}
}