NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Naming/NamingManager.cs

58 lines
1.7 KiB
C#

using Code.Scripts.Gameplay.Game;
using Gameplay.Net;
using PhxhSDK;
using System.Text.RegularExpressions;
namespace Gameplay.Naming
{
/// <summary>
/// 取名管理器
/// </summary>
public sealed class NamingManager : Singlenton<NamingManager>
{
/// <summary>
/// 有效校验正则表达式(只允许输入英文字符、中文字符和数字)
/// </summary>
private const string PATTERN = @"^[a-zA-Z0-9\u4e00-\u9fa5]*$";
/// <summary>
/// 是否改过名
/// </summary>
public bool IsChangeName
{
get
{
uint time = Actor.Instance.Base.GetProp(NLDPB.ActorProp.SetNickTime);
return 0 != time;
}
}
/// <summary>
/// 从剧情打开改名UI
/// </summary>
public async void OpenNamePanelFromStory()
{
if (GameStateManager.Instance.GetCurState() is GameStateStory gameStateStory)
gameStateStory.IsReady = false;
await UI_WriteNameController.Open(() =>
{
if (GameStateManager.Instance.GetCurState() is GameStateStory gameStateStory)
gameStateStory.IsReady = true;
});
}
/// <summary>
/// 输入校验
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public string ValidateInput(string input)
{
if (!Regex.IsMatch(input, PATTERN))
return Regex.Replace(input, @"[^a-zA-Z0-9\u4e00-\u9fa5]", string.Empty); // 移除不合法的字符
return input;
}
}
}