//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, September 02, 2017 //-------------------------------------------------------- using System.Collections; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; namespace Snxxz.UI { public class CreateRoleWin : Window { [SerializeField] SelectRoleButton m_JobSelect1; [SerializeField] SelectRoleButton m_JobSelect2; [SerializeField] Button m_Create; [SerializeField] Button m_RandomName; [SerializeField] Button m_Back; [SerializeField] InputField m_NameInput; [SerializeField] Image m_Description; [SerializeField] Image m_JobName; [SerializeField] PositionTween m_LeftPostionTween; [SerializeField] PositionTween m_RightPositionTween; LoginModel model { get { return ModelCenter.Instance.GetModel(); } } string m_MarkName = string.Empty; #region Built-in protected override void BindController() { } protected override void AddListeners() { m_JobSelect1.SetListener(SelectJob1); m_JobSelect2.SetListener(SelectJob2); m_Back.SetListener(BackBtn); m_Create.SetListener(CreateRole); m_RandomName.SetListener(() => { var job = CreateRoleManager.Instance.selectedJob.value; ChangeUserName(job, true); }); } private void BackBtn() { GameNetSystem.Instance.LoginOut(); } protected override void OnPreOpen() { DTC0309_tagPlayerLoginInfo.RoleChange += OnCreateRoleSuccess; model.onCreateRole = true; } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { DTC0309_tagPlayerLoginInfo.RoleChange -= OnCreateRoleSuccess; model.onCreateRole = false; } protected override void OnActived() { base.OnActived(); m_LeftPostionTween.Play(); m_RightPositionTween.Play(); ChangeUserName(CreateRoleManager.Instance.selectedJob.value, true); DisplayDynamicInfo(true); } protected override void LateUpdate() { base.LateUpdate(); DisplayDynamicInfo(false); } #endregion private void DisplayDynamicInfo(bool force) { if (force || CreateRoleManager.Instance.selectedJob.dirty) { var job = CreateRoleManager.Instance.selectedJob.Fetch(); m_JobSelect1.SetSelected(job == 1); m_JobSelect2.SetSelected(job == 2); var config = CreateRoleConfig.Get(job); m_Description.SetSprite(config.description); m_JobName.SetSprite(config.jobName); } } private void SelectJob1() { if (CreateRoleManager.Instance.selectedJob.value == 1) { ChangeUserName(1, true); return; } ChangeUserName(1, false); CreateRoleManager.Instance.View(1, false); } private void SelectJob2() { if (CreateRoleManager.Instance.selectedJob.value == 2) { ChangeUserName(2, true); return; } ChangeUserName(2, false); CreateRoleManager.Instance.View(2, false); } private void ChangeUserName(int job, bool force = true) { if (!force && !m_MarkName.Equals(m_NameInput.text)) { return; } var name = RandomNameConfig.GetFirstName(job) + RandomNameConfig.GetSecondName(job); m_MarkName = name; m_NameInput.text = name; } private void CreateRole() { if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected) { return; } if (m_NameInput.text.Equals(string.Empty)) { ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameNull")); return; } int error = 0; if (!UIHelper.SatisfyNameLength(m_NameInput.text, out error)) { switch (error) { case 1: ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameLimit")); break; case 2: ServerTipDetails.DisplayNormalTip(Language.Get("CreateRole_NameShort")); break; } return; } if (DirtyWordConfig.IsDirtWord(m_NameInput.text) || UIHelper.HasSpecialCharac(m_NameInput.text) || DirtyNameConfig.IsDirtName(m_NameInput.text)) { ServerTipDetails.DisplayNormalTip(Language.Get("L1007")); return; } if (Application.internetReachability == NetworkReachability.NotReachable) { ServerTipDetails.DisplayNormalTip(Language.Get("L1116")); return; } LanguageVerify.Instance.VerifyPlayerName(m_NameInput.text, 0, string.Empty, 0, 0, (bool ok, string name) => { C0105_tagCCreateRole createRole = new C0105_tagCCreateRole();//实例化C0105_tagCCreateRole createRole.Job = (byte)CreateRoleManager.Instance.selectedJob.value; 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);//发送创角包 }); } private void OnCreateRoleSuccess() { if (Application.internetReachability == NetworkReachability.NotReachable) { ServerTipDetails.DisplayNormalTip(Language.Get("L1116")); return; } var tagCRoleLoginAsk = new C0108_tagCRoleLoginAsk(); tagCRoleLoginAsk.Type = 2;//进入游戏 tagCRoleLoginAsk.ClientID = SDKUtility.Instance.RegistrationID; GameNetSystem.Instance.SendInfo(tagCRoleLoginAsk); NetLinkWin.Show(); } [System.Serializable] public struct SelectRoleButton { public int job; public Button select; public Image backGround; public Image icon; public void SetListener(UnityAction action) { select.SetListener(action); } public void SetSelected(bool selected) { var config = CreateRoleConfig.Get(job); backGround.SetSprite(selected ? "CreateRole_ChoosenBottom_a" : "CreateRole_UnChoosenBottom_a"); icon.SetSprite(selected ? config.selectIcon : config.unselectIcon); icon.SetNativeSize(); } } } }