using UI.RoleInfo; using System.Text.RegularExpressions; using ET; using UnityEngine; using FairyGUI; using System; namespace GFGGame { public class ChangeNameView : BaseWindow { private UI_ChangeNameUI _ui; private EffectUI _effectUI1; private EffectUI _effectUI2; public override void Dispose() { EffectUIPool.Recycle(_effectUI1); _effectUI1 = null; EffectUIPool.Recycle(_effectUI2); _effectUI2 = null; if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_ChangeNameUI.PACKAGE_NAME; _ui = UI_ChangeNameUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_btnSure.onClick.Add(OnClickBtnSureAsync); _ui.m_btnRandom.onClick.Add(RandomRoleName); _ui.m_btnClose.onClick.Add(Hide); AddEffect(); ItemCfg cfg = ItemCfgArray.Instance.GetCfg(GlobalCfgArray.globalCfg.changeNameCostArr[0]); //_ui.m_loaIcon.url = ResPathUtil.GetCommonGameResPath(cfg.res); _ui.m_loaIcon.url = ResPathUtil.GetIconPath(cfg.res, "png"); _ui.m_loaIcon.onClick.Add(OnBtnIconClick); } protected override void OnShown() { base.OnShown(); this._ui.m_inputName.text = ""; UpdateView(); } protected override void OnHide() { base.OnHide(); } private void AddEffect() { //邊框左上角特效 _effectUI1 = EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up"); //邊框右下角特效 _effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down"); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.ITEM_CHANGED, UpdateItem); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.ITEM_CHANGED, UpdateItem); } private void OnClickBtnSureAsync() { string roleName = _ui.m_inputName.text; if (string.IsNullOrEmpty(roleName)) { PromptController.Instance.ShowFloatTextPrompt("角色名不能为空"); return; } if (roleName.Length > GFGGame.GlobalConst.MaxNameLen) { PromptController.Instance.ShowFloatTextPrompt("角色名最多七个字"); return; } if (!Regex.IsMatch(roleName, @"^[\u4e00-\u9fa5_0-9]+$"))//角色起名仅允许汉字、数字、底划线 { PromptController.Instance.ShowFloatTextPrompt("角色名仅允许汉字、数字、下划线"); return; } string costName = ItemUtil.GetItemName(GlobalCfgArray.globalCfg.changeNameCostArr[0]); int count = GlobalCfgArray.globalCfg.changeNameCostArr[1]; long haveNum = ItemDataManager.GetItemNum(GlobalCfgArray.globalCfg.changeNameCostArr[0]); if (haveNum >= count) { AlertUI.Show(string.Format("是否花费{0}个{1}改名1次?", count, costName)) .SetLeftButton(true).SetRightButton(true, "确定", (object data) => { ChangeName(roleName); }); } else { PromptController.Instance.ShowFloatTextPrompt("改名卡数量不足"); } } private async void ChangeName(string roleName) { bool result = await RoleInfoSProxy.ReqModifyRoleName(roleName); if (result) { this.Hide(); } } private async void RandomRoleName() { (int result, string name) = await LoginHelper.ReqRandomRoleName(); if (result == ErrorCode.ERR_Success) { _ui.m_inputName.text = name; } else { ErrorCodeController.Handler(result); } } private void OnBtnIconClick(EventContext context) { ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(GlobalCfgArray.globalCfg.changeNameCostArr[0]); object[] sourceDatas = new object[] { itemCfg.id, new object[] { typeof(ChangeNameView).FullName, this.viewData } }; GoodsItemTipsController.ShowItemTips(itemCfg.id, sourceDatas); } private void UpdateItem(EventContext context) { int itemID = (int)context.data; if(itemID != GlobalCfgArray.globalCfg.changeNameCostArr[0]) { return; } UpdateView(); } private void UpdateView() { long haveNum = ItemDataManager.GetItemNum(GlobalCfgArray.globalCfg.changeNameCostArr[0]); long needNum = GlobalCfgArray.globalCfg.changeNameCostArr[1]; if (haveNum < needNum) { _ui.m_txtNeed.text = string.Format("改名卡:[color=#E26A21]{0}[color]/{1}", haveNum, needNum); } else { _ui.m_txtNeed.text = string.Format("改名卡:{0}/{1}", haveNum, needNum); } } } }