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 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("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(); } }