89 lines
2.3 KiB
C#
89 lines
2.3 KiB
C#
using AibisDream.Framework;
|
|
using UnityEngine.Localization.Settings;
|
|
|
|
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.ActorTableName[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
|
|
}
|
|
} |