Files
aibis-dream/Assets/Scripts/UI/DialogUI/Options/DialogOption.cs
T

62 lines
1.7 KiB
C#

using System;
using System.Linq;
using System.Collections.Generic;
using AibisDream.Framework;
using AibisDream.Kit;
using AibisDream.Utility;
using UnityEngine;
using Yarn.Unity;
namespace AibisDream
{
public struct DialogOption
{
private Action<int> _onOptionSelected;
private DialogueOption _option;
public bool IsAvailable => _option.IsAvailable;
public string Line => _option.Line.TextWithoutCharacterName.Text;
public CharacterVo Character => _option.Line.GetCharacterVo();
/// <summary>
/// 选择该选项
/// </summary>
public void Select()
{
if (!_option.IsAvailable)
{
Debug.Log($"{_option.Line} 不可用");
return;
}
EnumEventSystem.Global.Send(DialogEventEnum.OptionSelected, TransToLine());
_onOptionSelected.Invoke(_option.DialogueOptionID);
}
private LineInfo TransToLine()
{
return new LineInfo
{
isOption = true,
lineId = _option.TextID,
lineText = _option.Line.TextWithoutCharacterName.Text,
character = _option.Line.GetCharacterVo(),
isAutoSkip = false
};
}
public static DialogOption[] GeneOptions(DialogueOption[] dialogueOptions, Action<int> onOptionSelected)
{
return dialogueOptions
.Select(item => new DialogOption { _option = item, _onOptionSelected = onOptionSelected }).ToArray();
}
}
[Serializable]
public struct TextParam
{
public float charSpace;
public float lineSpace;
public int maxCharNum;
}
}