using UI.RoleInfo; using System.Text.RegularExpressions; using ET; using UnityEngine; using FairyGUI; using System; using cfg.GfgCfg; 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 = CommonDataManager.Tables.TblItemCfg.GetOrDefault( CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[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() { //邊框左上角特效 EffectUIPool.CreateEffectUI(_ui.m_holderLeftTop, "ui_Activity", "Com_window_L_up", onComplete: (effect) => { if (effect != null) { _effectUI1 = effect; } }); //邊框右下角特效 EffectUIPool.CreateEffectUI(_ui.m_holderRightDowm, "ui_Activity", "Com_window_R_Down", onComplete: (effect) => { if (effect != null) { _effectUI2 = effect; } }); } 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 > GlobalConst.MaxNameLen) { PromptController.Instance.ShowFloatTextPrompt("角色名最多七个字"); return; } if (!Regex.IsMatch(roleName, @"^[\u4e00-\u9fa5_0-9]+$")) //角色起名仅允许汉字、数字、底划线 { PromptController.Instance.ShowFloatTextPrompt("角色名仅允许汉字、数字、下划线"); return; } string costName = ItemUtil.GetItemName(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]); int count = CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[1]; long haveNum = ItemDataManager.GetItemNum(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[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 = CommonDataManager.Tables.TblItemCfg.GetOrDefault( CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[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 != CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]) { return; } UpdateView(); } private void UpdateView() { long haveNum = ItemDataManager.GetItemNum(CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[0]); long needNum = CommonDataManager.Tables.TblGlobalCfg.ChangeNameCost[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); } } } }