using System; using UnityEngine; using UnityEngine.UI; public class RenameWin : UIBase { [SerializeField] InputField input; [SerializeField] Button btnOk; [SerializeField] Button btnRandom; [SerializeField] TextEx txtFirst; [SerializeField] TextEx txtNeedCount; [SerializeField] ImageEx imgIcon; RenameManager manager { get { return RenameManager.Instance; } } protected override void InitComponent() { base.InitComponent(); btnRandom.SetListener(() => { input.text = manager.GetSafeRandomName(); }); btnOk.SetListener(() => { bool isFirstRename = manager.IsFirstRename(); if (!isFirstRename && !UIHelper.CheckItemCount(manager.costItemID, 1, 2)) return; if (!manager.CheckNameLimit(input.text, out var errorCode)) { manager.ShowNameErrorTip(errorCode); return; } manager.SendRenamePack(input.text); CloseWindow(); }); } protected override void OnPreOpen() { base.OnPreOpen(); manager.OnUpdatePlayerNameCountEvent += OnUpdatePlayerNameCount; manager.OnUpdateRenameResultEvent += OnUpdateRenameResultEvent; PackManager.Instance.RefreshItemEvent += OnRefreshItemEvent; Display(); } protected override void OnPreClose() { base.OnPreClose(); manager.OnUpdatePlayerNameCountEvent -= OnUpdatePlayerNameCount; manager.OnUpdateRenameResultEvent -= OnUpdateRenameResultEvent; PackManager.Instance.RefreshItemEvent -= OnRefreshItemEvent; } private void OnRefreshItemEvent(PackType type, int index, int itemID) { if (type != PackType.Item) return; if (itemID != manager.costItemID) return; Display(); } private void OnUpdateRenameResultEvent() { Display(); } private void OnUpdatePlayerNameCount() { Display(); } void Display() { bool isFirstRename = manager.IsFirstRename(); txtFirst.SetActive(isFirstRename); txtNeedCount.SetActive(!isFirstRename); if (!isFirstRename) { imgIcon.SetItemSprite(manager.costItemID); txtNeedCount.text = UIHelper.ShowUseItem(PackType.Item, manager.costItemID, 1); } } }