using FairyGUI; using UI.CreateRole; using System; using System.Text.RegularExpressions; using ET; using System.Collections.Generic; using UnityEngine; namespace GFGGame { public class CreateRoleView : BaseWindow { public enum State { IN, IDLE, OPEN } private UI_CreateRoleUI _ui; private Dictionary _effectUIDic = new Dictionary(); public override void Dispose() { // Clear Effect foreach(var v in _effectUIDic) { EffectUIPool.Recycle(v.Value); } _effectUIDic.Clear(); if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_CreateRoleUI.PACKAGE_NAME; _ui = UI_CreateRoleUI.Create(); this.viewCom = _ui.target; // this.viewCom.Center(); this.isfullScreen = true; this.clickBlankToClose = false; this.modal = true; _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("bg_yaoqinghan"); _ui.m_envelopeModel.m_btnSure.onClick.Add(OnClickBtnSure); _ui.m_envelopeModel.m_btnDice.onClick.Add(() => { RandomRoleName().Coroutine(); }); } //private bool test = false; private void ChangeAnimationState(State state) { switch (state) { case State.IN: _effectUIDic.Add("FX_Flower", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_envelope.m_flowerEffectHolder, "ui_CreateRoleUI/Before_Open", "FX_Flower")); _effectUIDic.Add("FX_LiuSu", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_envelope.m_LiuSuEffectHolder, "ui_CreateRoleUI/Before_Open", "FX_LiuSu")); _effectUIDic.Add("FX_taril", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_trailEffectHolder, "ui_CreateRoleUI/Before_Open", "FX_taril")); _ui.m_t_In.Play(() => { ChangeAnimationState(State.IDLE); }); break; case State.IDLE: _effectUIDic.Add("FX_XINF", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_envelope.m_XINFEffectHolder, "ui_CreateRoleUI/Before_Open", "FX_XINF")); _effectUIDic.Add("FX_player", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_envelope.m_playerClickTipEffectHolder, "ui_CreateRoleUI/Before_Open", "FX_player")); _ui.m_envelopeModel.m_envelope.target.onClick.Add(OnClickBtnEnvelope); _ui.m_envelopeModel.m_t_Idle.Play(-1, 0, null); break; case State.OPEN: EffectUIPool.Recycle(_effectUIDic["FX_player"]); _effectUIDic.Remove("FX_player"); _effectUIDic.Add("FX_ShanZi", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_ShanZiEffectHolder, "ui_CreateRoleUI/After_Open", "FX_ShanZi")); _effectUIDic.Add("FX_Niao", EffectUIPool.CreateEffectUI(_ui.m_envelopeModel.m_NiaoEffectHolder, "ui_CreateRoleUI/After_Open", "FX_Niao")); _ui.m_envelopeModel.m_envelope.target.touchable = false; _ui.m_envelopeModel.m_t_Idle.Stop(); _ui.m_t_Open.Play(); break; } } protected override void OnShown() { base.OnShown(); RandomRoleName().Coroutine(); LogServerHelper.SendNodeLog((int)LogNode.ShowCreateRole); ChangeAnimationState(State.IN); } protected override void OnHide() { base.OnHide(); } private async void OnClickBtnSure() { string roleName = _ui.m_envelopeModel.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; } bool result = await RoleInfoSProxy.ReqModifyRoleName(roleName); if (result) { StorageSProxy.ReqSetClientValue(ConstStorageId.CHANGE_NAME, 1).Coroutine(); this.Hide(); } } private async ETTask RandomRoleName() { string name = await LoginController.ReqRandomRoleName(); if (_ui != null && _ui.m_envelopeModel.m_inputName != null) { _ui.m_envelopeModel.m_inputName.text = name; } } private void OnClickBtnEnvelope() { ChangeAnimationState(State.OPEN); } } }