NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_WriteNameController.cs

133 lines
3.2 KiB
C#
Raw Normal View History

2024-07-03 18:30:08 +08:00
using Code.Scripts.Gameplay.Game;
2024-06-20 16:06:27 +08:00
using Cysharp.Threading.Tasks;
2024-07-03 19:15:36 +08:00
using Framework;
2024-06-20 16:06:27 +08:00
using Gameplay;
2024-07-03 19:15:36 +08:00
using Gameplay.Guide;
2024-06-20 16:06:27 +08:00
using Gameplay.Net;
using Gameplay.Utils;
using PhxhSDK;
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Object = UnityEngine.Object;
/// <summary>
/// 改名UI
/// </summary>
public class UI_WriteNameController : UIWindow
{
/// <summary>
/// 打开改名界面
/// </summary>
/// <returns></returns>
public static async UniTask<UIWindow> Open()
{
CommonUtils.CaptureScreenshot(); // 截取当前屏幕截图
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_WriteName);
}
#region UI
/// <summary>
/// 高斯模糊遮罩
/// </summary>
private RawImage rawImageGaussianBlurMask;
/// <summary>
/// 确定按钮
/// </summary>
private Button buttonConfirm;
/// <summary>
/// 输入框
/// </summary>
private TMP_InputField inputField;
#endregion
/// <summary>
/// 最大长度
/// </summary>
private const int MAX_LENGT = 8;
public override void OnInit()
{
rawImageGaussianBlurMask = GetComponent<RawImage>("GaussianBlurMask");
buttonConfirm = GetComponent<Button>("Image_BG/Button_Confirm");
inputField = GetComponent<TMP_InputField>("Image_BG/InputField (TMP)");
rawImageGaussianBlurMask.texture = CommonUtils.screenTexture;
BindButton(buttonConfirm, OnConfirm);
}
protected override void OnShowWindow(object data = null)
{
base.OnShowWindow(data);
}
protected override void OnHideWindow()
{
base.OnHideWindow();
}
public override void OnRelease()
{
base.OnRelease();
}
/// <summary>
/// 设置名字
/// </summary>
/// <param name="name"></param>
private void SetName(string name)
{
NetHelper.SetPlayerName(name);
2024-07-03 18:30:08 +08:00
2024-06-20 16:06:27 +08:00
OnClose();
2024-07-03 19:15:36 +08:00
if (GuideManager.Instance.IsGuiding)
{
if(GuideManager.Instance.IsSkipStory)
EventManager.Instance.Send(EventManager.EventName.STORY_CLICK_SKIP);
else if (GameStateManager.Instance.GetCurState() is GameStateStory gameStateStory)
gameStateStory.IsReady = true;
}
2024-06-20 16:06:27 +08:00
}
#region 回调方法
/// <summary>
/// 关闭
/// </summary>
private void OnClose()
{
CloseWindow();
}
/// <summary>
/// 确定选择
/// </summary>
private void OnConfirm()
{
if (string.IsNullOrWhiteSpace(inputField.text))
{
UITipsManager.ShowConfirmOne("提示", "输入名字无效", null);
return;
}
if (inputField.text.Length > MAX_LENGT)
{
UITipsManager.ShowConfirmOne("提示", $"长度在1-{MAX_LENGT}个字符", null);
return;
}
if (!MaskWord.Check(inputField.text)) // 屏蔽字校验
{
UITipsManager.ShowConfirmOne("提示", "输入的名字含有屏蔽字", null);
return;
}
UITipsManager.ShowConfirmTwo("tis", $"确定取名'{inputField.text}'吗?", (Action)(() => { SetName(inputField.text); }), null);
}
#endregion
}