Files
aibis-dream/Assets/Scripts/Framework/Config/Character.cs
T
2025-09-23 15:50:54 +08:00

89 lines
2.3 KiB
C#

using AibisDream.Framework;
namespace AibisDream.Kit
{
public class Character
{
public string Key { get; set; }
public string Cn { get; set; }
public string NameColor { get; set; }
public string HeadPicPath { get; set; }
public string VoicePath { get; set; }
public int BubbleIdx { get; set; }
public ActorRole Role { get; set; }
public DialogViewType DialogViewType { get; set; }
/// <summary>
/// 避免干扰,复制结构体出来使用
/// </summary>
/// <returns></returns>
public CharacterVo GetStructVo()
{
CharacterVo vo;
vo.key = Key;
vo.cn = Cn;
vo.nameColor = NameColor;
vo.headPicPath = HeadPicPath;
vo.voicePath = VoicePath;
vo.bubbleIdx = BubbleIdx;
vo.role = Role;
vo.dialogViewType = DialogViewType;
return vo;
}
}
public struct CharacterVo
{
public string key;
public string cn;
public string nameColor;
public string headPicPath;
public string voicePath;
public int bubbleIdx;
public ActorRole role;
public DialogViewType dialogViewType;
/// <summary>
/// 获取角色应该显示的名字
/// </summary>
/// <returns></returns>
public string GetActorName()
{
string rawName;
// 人名部分直接为空
if (string.IsNullOrWhiteSpace(key))
{
rawName = "";
}
else
{
// 人名能找到
var entry = LocalizationKit.ActorTable[key];
rawName = entry == null ? key : entry.LocalizedValue;
}
return string.IsNullOrEmpty(nameColor) ? rawName : $"<color={nameColor}>{rawName}</color>";
}
public string VoicePath
{
get
{
if (!string.IsNullOrEmpty(voicePath) && !voicePath.StartsWith("event:/"))
{
return "event:/" + voicePath;
}
return voicePath;
}
}
}
public enum ActorRole
{
Aside,
Player,
MainActor
}
}