//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, September 02, 2017 //-------------------------------------------------------- using System.Collections; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.Collections.Generic; namespace vnxbqy.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_JobName; [SerializeField] PositionTween m_LeftPostionTween; [SerializeField] PositionTween m_RightPositionTween; [SerializeField] Image m_SpiritRadar; [SerializeField] SpiritButton[] m_SpiritButtons; 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); }); m_SpiritButtons[0].SetListener(() => { DisplaySpiritRadar(1); SelectSpiritButton(1); }); m_SpiritButtons[1].SetListener(() => { DisplaySpiritRadar(2); SelectSpiritButton(2); }); m_SpiritButtons[2].SetListener(() => { DisplaySpiritRadar(3); SelectSpiritButton(3); }); } private void BackBtn() { GameNetSystem.Instance.LoginOut(); } protected override void OnPreOpen() { model.onCreateRole = true; } protected override void OnAfterOpen() { //代表自动登录测试 if (VersionConfig.Get().versionAuthority == VersionAuthority.InterTest && VersionConfig.Get().banHao == "test") { List abc = new List { "a", "b", "c", "d", "e", "f", "g"}; m_NameInput.text = abc[UnityEngine.Random.Range(0, 6)] + UnityEngine.Random.Range(1, 100000); CreateRole(); } } protected override void OnPreClose() { } protected override void OnAfterClose() { 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(); OnSelectedJobChange(job); } } 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 OnSelectedJobChange(int job) { m_JobSelect1.SetSelected(job == 1); m_JobSelect2.SetSelected(job == 2); var config = CreateRoleConfig.Get(job); m_JobName.SetSprite(config.jobName); InitSpiritButtons(job); DisplaySpiritRadar(1); SelectSpiritButton(1); } private void InitSpiritButtons(int job) { var config = CreateRoleConfig.Get(job); for (int i = 1; i <= 3; i++) { m_SpiritButtons[i - 1].Init(config.spiritSelectedIcons[i - 1], config.spiritUnSelectedIcons[i - 1]); } } private void SelectSpiritButton(int index) { if (index < 1 || index > 3) { return; } for (int i = 1; i <= 3; i++) { m_SpiritButtons[i - 1].SetSelected(i == index); } } private void DisplaySpiritRadar(int index) { if (index < 1 || index > 3) { return; } var config = CreateRoleConfig.Get(CreateRoleManager.Instance.selectedJob.value); m_SpiritRadar.SetSprite(config.spiritRadars[index - 1]); m_SpiritRadar.SetNativeSize(); } 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; } if (!ConfigInitiator.done) { SysNotifyMgr.Instance.ShowTip("configloading"); 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) => { DTC0132_tagCreateRoleSucess.isCreateRole = false; 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 = 0; createRole.FacePic = 0; createRole.PlayerType = 1; GameNetSystem.Instance.SendInfo(createRole);//发送创角包 }); } private void OnCreateRoleSuccess() { if (Application.internetReachability == NetworkReachability.NotReachable) { ServerTipDetails.DisplayNormalTip(Language.Get("L1116")); return; } } [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.SetActive(selected); icon.SetSprite(selected ? config.selectIcon : config.unselectIcon); icon.SetNativeSize(); } } [System.Serializable] public struct SpiritButton { public Button button; public Image selectedImgae; public Image unSelectedImage; public GameObject unSelectedImageFrame; public void Init(string selectIconKey, string unSelectIconKey) { selectedImgae.SetSprite(selectIconKey); unSelectedImage.SetSprite(unSelectIconKey); } public void SetListener(UnityAction action) { button.SetListener(action); } public void SetSelected(bool isSelected) { selectedImgae.SetActive(isSelected); unSelectedImage.SetActive(!isSelected); unSelectedImageFrame.SetActive(!isSelected); } } } }