58 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
} |