//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, September 02, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; using System.Text; using System.Text.RegularExpressions; namespace Snxxz.UI { public class CreateRoleWin : Window { [SerializeField] Button qhBtn; [SerializeField] Image qhImg; [SerializeField] Button dsBtn; [SerializeField] Image dsImg; [SerializeField] Button jsBtn; [SerializeField] Image jsImg; [SerializeField] Button createBtn; [SerializeField] Button randomBtn; [SerializeField] Button backBtn; [SerializeField] InputField userNameInput; [SerializeField] Image m_DescImg; private int userJob = 0; CreateRoleHeroShow m_CreateRoleShow; LoginModel m_Model; LoginModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } string m_MarkName = string.Empty; #region Built-in protected override void BindController() { } protected override void AddListeners() { qhBtn.onClick.AddListener(QhBtn); dsBtn.onClick.AddListener(DsBtn); jsBtn.onClick.AddListener(JsBtn); createBtn.onClick.AddListener(CreateBtn); randomBtn.onClick.AddListener(() => { ChangeUserName(true); }); backBtn.onClick.AddListener(BackBtn); } private void BackBtn() { GameNetSystem.Instance.LoginOut(); } protected override void OnPreOpen() { DTC0309_tagPlayerLoginInfo.RoleChange += RoleChage; model.onCreateRole = true; } protected override void OnAfterOpen() { userJob = 1; int _rand = UnityEngine.Random.Range(0, 100); for (int i = 0; i < GeneralConfig.Instance.RandomJobs.Count; i++) { var _value = GeneralConfig.Instance.RandomJobs[i]; if (_value != 0 && _rand < _value) { userJob = i + 1; break; } } ChangeUserName(true); RoleShow(0.2f); } protected override void OnPreClose() { } protected override void OnAfterClose() { DTC0309_tagPlayerLoginInfo.RoleChange -= RoleChage; model.onCreateRole = false; RemoveRoleModel(); } #endregion private void JsBtn() { if (userJob == 3) { ChangeUserName(true); return; } ChangeUserName(false); userJob = 3; RoleShow(0f); } private void DsBtn() { if (userJob == 2) { ChangeUserName(true); return; } ChangeUserName(false); userJob = 2; RoleShow(0f); } private void QhBtn() { if (userJob == 1) { ChangeUserName(true); return; } ChangeUserName(false); userJob = 1; RoleShow(0f); } public void UpdateInfo() { CreateRoleConfig qhCfg = Config.Instance.Get(1); CreateRoleConfig dsCfg = Config.Instance.Get(2); CreateRoleConfig jsCfg = Config.Instance.Get(3); CreateRoleConfig sltCfg = null; switch (userJob) { case 1: sltCfg = qhCfg; break; case 2: sltCfg = dsCfg; break; case 3: sltCfg = jsCfg; break; } qhBtn.image.SetSprite(userJob == 1 ? sltCfg.selectIcon : sltCfg.unselectIcon); dsBtn.image.SetSprite(userJob == 2 ? sltCfg.selectIcon : sltCfg.unselectIcon); jsBtn.image.SetSprite(userJob == 3 ? sltCfg.selectIcon : sltCfg.unselectIcon); qhImg.SetSprite(userJob == 1 ? "CreateRole_Job1_Select" : "CreateRole_Job1_UnSelect"); dsImg.SetSprite(userJob == 2 ? "CreateRole_Job2_Select" : "CreateRole_Job2_UnSelect"); jsImg.SetSprite(userJob == 3 ? "CreateRole_Job3_Select" : "CreateRole_Job3_UnSelect"); m_DescImg.SetSprite(sltCfg.desc); } private void ChangeUserName(bool _force = true) { if (!_force && !m_MarkName.Equals(userNameInput.text)) { return; } var _name = RandomNameConfig.GetFirstName(userJob) + RandomNameConfig.GetSecondName(userJob); m_MarkName = _name; ChangeUserName(_name); } private void ChangeUserName(string _name) { userNameInput.text = _name; } private void CreateBtn() { if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected) { return; } if (userNameInput.text.Equals(string.Empty)) { MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameNull")); return; } if (Encoding.UTF8.GetBytes(userNameInput.text).Length < 6) { MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameShort")); return; } if (!CheckNameLengthLimit(userNameInput.text)) { MessageWin.Inst.ShowFixedTip(Language.Get("CreateRole_NameLimit")); return; } if (DirtyWordConfig.IsDirtWord(userNameInput.text) || UIHelper.HasSpecialCharac(userNameInput.text) || DirtyNameConfig.IsDirtName(userNameInput.text)) { MessageWin.Inst.ShowFixedTip(Language.Get("L1007")); return; } if (Application.internetReachability == NetworkReachability.NotReachable) { MessageWin.Inst.ShowFixedTip(Language.Get("L1116")); return; } LanguageVerify.Instance.VerifyPlayerName(userNameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) => { C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole createRole.Job = (byte)userJob; createRole.Name = name; createRole.Sex = 1; createRole.Hair = 10002; createRole.HairColor = 1; createRole.Face = 10006; createRole.FacePic = 11004; createRole.PlayerType = 1; GameNetSystem.Instance.SendInfo(createRole);//发送创角包 }); //屏蔽职业特效预先加载逻,以减少不必要的内存损耗和获得更快的场景切换速度,资源压缩使用LZ4才行。 // AssetPreLoad.Instance.PreLoadJobEffect(userJob); } private void RoleChage() { if (Application.internetReachability == NetworkReachability.NotReachable) { MessageWin.Inst.ShowFixedTip(Language.Get("L1116")); return; } C0108_tagCRoleLoginAsk tagCRoleLoginAsk = new C0108_tagCRoleLoginAsk(); tagCRoleLoginAsk.Type = 2;//进入游戏 tagCRoleLoginAsk.ClientID = SDKUtility.Instance.RegistrationID; GameNetSystem.Instance.SendInfo(tagCRoleLoginAsk); NetLinkWin.Show(); } private void RoleShow(float _delay) { StopCoroutine("DelayShowActor"); StartCoroutine("DelayShowActor", _delay); } IEnumerator DelayShowActor(float _delay) { m_CreateRoleShow = GameObject.FindObjectOfType(); UpdateInfo(); yield return new WaitForSeconds(_delay); RemoveRoleModel(); ShowRoleModel(); } private void ShowRoleModel() { m_CreateRoleShow.CreateRoleShow(userJob); } private void RemoveRoleModel() { m_CreateRoleShow.Dispose(); } private bool CheckNameLengthLimit(string _value) { var _chs = Regex.Replace(_value, "[^\u4e00-\u9fa5]", string.Empty); if (_chs.Length > GeneralConfig.Instance.playerNameLength / 3) { return false; } if (_value.Length > 6) { return false; } return true; } } }