//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, September 05, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; namespace Snxxz.UI { public class SelectRoleWin : Window { [SerializeField] Text m_PlayerName; [SerializeField] Text m_PlayerLevel; [SerializeField] Button m_Begin; [SerializeField] Button m_Back; [SerializeField] Image m_JobName; [SerializeField] Image m_SpiritRadar; [SerializeField] SpiritButton[] m_SpiritButtons; LoginModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Begin.onClick.AddListener(BeginBtn); m_Back.onClick.AddListener(BackToLogin); 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 BackToLogin() { GameNetSystem.Instance.LoginOut(); } protected override void OnPreOpen() { InitInfo(); } protected override void OnAfterOpen() { if (VersionConfig.Get().versionAuthority == VersionAuthority.InterTest && VersionConfig.Get().banHao == "test") BeginBtn(); } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion private void BeginBtn() { if (GameNetSystem.Instance.netState == GameNetSystem.NetState.Connected) { return; } if (Application.internetReachability == NetworkReachability.NotReachable) { ConfirmCancel.ShowPopConfirm( Language.Get("Mail101"), Language.Get("L1116") ); NetLinkWin.Hide(); return; } if ((PlayerDatas.Instance.loginInfo.ExAttr17 & (1 << 4)) > 0) { SysNotifyMgr.Instance.ShowTip("LockRole"); return; } LoadingWin.targetMapResId = 2; WindowCenter.Instance.Open(); model.EnterWorld(2); } private void InitInfo() { if (PlayerDatas.Instance.loginInfo == null) { return; } m_PlayerName.text = PlayerDatas.Instance.loginInfo.PlayerName.ToString();//玩家昵称 m_PlayerLevel.text = Language.Get("Z1024", PlayerDatas.Instance.loginInfo.LV);//玩家等级 var config = CreateRoleConfig.Get(PlayerDatas.Instance.loginInfo.Job); m_JobName.SetSprite(config.jobName); InitSpiritButtons(PlayerDatas.Instance.loginInfo.Job); int selectint = InitSelectIndexByData(); SelectSpiritButton(selectint); DisplaySpiritRadar(selectint); new SelectRoleProcessor().Show(); } private int InitSelectIndexByData() { uint maxLG = PlayerDatas.Instance.loginInfo.ExAttr16; if (PlayerDatas.Instance.loginInfo.Job == 1) { switch (maxLG) { case 201: case 203: case 204: return 1; case 202: return 2; case 205: return 3; } } else { switch (maxLG) { case 201: case 202: case 205: return 1; case 204: return 2; case 203: return 3; } } return 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(PlayerDatas.Instance.loginInfo.Job); m_SpiritRadar.SetSprite(config.spiritRadars[index - 1]); } [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); } } } }