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