NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_EditIntroductionControll...

127 lines
2.9 KiB
C#

using Cysharp.Threading.Tasks;
using Framework;
using Gameplay;
using Gameplay.Net;
using TMPro;
using UnityEngine.UI;
using static UnityEngine.Rendering.DebugUI;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
public class UI_EditIntroductionController : UIWindow
{
//UI GameObj
///Auto Gen Start///
public Image Image_Bg;
public Button Button_Close;
public TMP_Text Text_Title;
public TMP_InputField InputField_Introduction;
public TMP_Text Text_Tip;
public Button Button_Confirm;
public RawImage rawImageGaussianBlurMask;
///Auto Gen End///
private int signMaxLen = 100;
public int maxNewlines = 1; // 最大换行符数量
// deal with input data
public override void PreLoad(object data = null)
{
}
public static async UniTask<UIWindow> Open()
{
CommonUtils.CaptureScreenshot(); // 截取当前屏幕截图
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_EditIntroduction);
}
// Use this for initialization
public override void OnInit()
{
//bind UI GameObj
UI_EditIntroductionBinder.GetComponents(this);
rawImageGaussianBlurMask = GetComponent<RawImage>("GaussianBlurMask");
rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D();
EventManager.Instance.Register(EventManager.EventName.PlayerInfoUpdate, OnChangeInfo);
InputField_Introduction.characterLimit = signMaxLen;
InputField_Introduction.onValueChanged.AddListener(ValidateInput);
BindButton(Button_Close, OnCloseClick);
BindButton(Button_Confirm, OnConfirmClick);
}
//invoke when open window
protected override void OnShowWindow(object data = null)
{
}
//invoke when reload window
protected override void OnReloadWindow(object data = null)
{
}
//invoke when close window
protected override void OnHideWindow()
{
}
//invoke when destroy
public override void OnRelease()
{
base.OnRelease();
EventManager.Instance.Unregister(EventManager.EventName.PlayerInfoUpdate, OnChangeInfo);
InputField_Introduction.onValueChanged.RemoveListener(ValidateInput);
}
protected override void OnCloseClick()
{
base.OnCloseClick();
CloseWindow();
}
void OnConfirmClick()
{
DebugUtil.Log("修改个性签名:" + InputField_Introduction.text);
NetHelper.SetPlayerIntroduction(InputField_Introduction.text);
}
void ValidateInput(string input)
{
int newlineCount = 0;
string sanitizedInput = "";
foreach (char c in input)
{
if (c == '\n' || c == '\r')
{
if (newlineCount < maxNewlines)
{
sanitizedInput += c;
newlineCount++;
}
}
else
{
sanitizedInput += c;
}
}
if (input != sanitizedInput)
{
InputField_Introduction.text = sanitizedInput;
}
}
void OnChangeInfo()
{
CloseWindow();
}
}