using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; public class RoleChallengeRankInfo { public string name; public int curRank; public int totalRnak; public int level; public RoleChallengeRankInfo(string Name, int CurRank, int TotalRank, int Level) { name = Name; curRank = CurRank; totalRnak = TotalRank; level = Level; } } public enum LevelGroup //等级分组 { Level_All, Level_0_69, Level_70_89, Level_90_109, Level_110_129, Level_130_150, } public class FactionRankPanelCtr : MonoBehaviour { #region UI拖拽控件 //初始化玩家自身的信息 public Text m_RankInfoText; public Text m_TotalRankInfoText; //总榜排名 public Text m_NameText; public Text m_LevelInfoText; //预设体 public GameObject PlayerRankInfoItem; public Transform prefabParent; public GameObject MyRankInfoPanel; //个人排名 public GameObject NoPlayerRankInfoPanel; // public GameObject RankInfoPanel; //总榜排名 public GameObject NoInfoObj; //无分组信息的时候显示 public List _MarkIconList; public List _CareerMarkIconList; #endregion private List roleInfoPrefabList = new List(); public static FactionRankPanelCtr Instance; private void Awake() { Instance = this; createPrefab(); //Awake的时候就创建吧(否则:信息同步过来的时候有可能itemPrefab还没有创建出来) } private void OnDestroy() { Instance = null; } bool isSelfGroup() { int profession = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession; if(CurSelectedCarrer == profession) { if(GetLevelGroup() == CurSelectedGroup || CurSelectedGroup == 0)//0为全部的分组 { return true; } } return false; } int GetLevelGroup() { int level = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level; if (level > 0 && level <= 69) { return 1; }else if(level >= 70 && level <= 89) { return 2; }else if(level >= 90 && level <= 109) { return 3; }else if(level >= 110 && level <= 129) { return 4; }else { return 5; } } private void OnEnable() { ShowDefaultFirst(); JudgeShowMySelfInfoPanel(); //每次打开界面的时候都要判断下当前是否在该分组 } private void ShowDefaultFirst() { OnFactionToggleChange(0); OnGroupToggleChange(0); } //初始化玩家自身的信息 public void InitMySelfRankInfo() { int profession = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession; if (profession == CurSelectedCarrer) { for (int index = 0; index < roleInfoPrefabList.Count; index++) { if (roleInfoPrefabList[index].GetComponent().PlayerNameText.text.Equals(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName)) { m_RankInfoText.text = roleInfoPrefabList[index].GetComponent().RankText.text; break; } } if (FactionChallengeCtr.Instace.m_TotalRank != 0) { m_TotalRankInfoText.text = FactionChallengeCtr.Instace.m_TotalRank.ToString(); } else { m_TotalRankInfoText.text = GCGame.Table.StrDictionary.GetClientDictionaryString("#{2049}"); } m_NameText.text = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName; m_LevelInfoText.text = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level.ToString(); } } //是否要显示自身InfoPanel void JudgeShowMySelfInfoPanel() { if(isSelfGroup()) { MyRankInfoPanel.gameObject.SetActive(true); NoPlayerRankInfoPanel.gameObject.SetActive(false); InitMySelfRankInfo(); } else { MyRankInfoPanel.gameObject.SetActive(false); NoPlayerRankInfoPanel.gameObject.SetActive(true); } } //默认选择的都是第一个 private int CurSelectedCarrer = -1; private int CurSelectedGroup = -1; public void AskRankInfo() { CG_REQ_USER_CHALLENGE_RANK_LIST ask = (CG_REQ_USER_CHALLENGE_RANK_LIST)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_USER_CHALLENGE_RANK_LIST); ask.SetCareer(CurSelectedCarrer); ask.SetLevelFlag(CurSelectedGroup); ask.SendPacket(); } public void OnFactionToggleChange(int index) //选择职业 { if(CurSelectedCarrer == index) { return; } for(int _index = 0; _index < _CareerMarkIconList.Count; _index++) { _CareerMarkIconList[_index].SetActive(index == _index); } CurSelectedCarrer = index; if(CurSelectedGroup == -1) { return; } AskRankInfo(); //刷新排行榜信息 } public void OnGroupToggleChange(int index) //选择分组 { if(index == CurSelectedGroup) // 必做判断 不然刷新100个信息会特别卡 { return; } for(int _Index = 0; _Index < _MarkIconList.Count; _Index++) { _MarkIconList[_Index].SetActive(index == _Index); } CurSelectedGroup = index; if(CurSelectedCarrer == -1) { return; } AskRankInfo(); //刷新排行榜信息 } private List roleInfoList = new List(); public void InitRankListInfo(GC_RET_USER_CHALLENGE_RANK_LIST packet) { StartCoroutine(OnPacket(packet)); } IEnumerator OnPacket(GC_RET_USER_CHALLENGE_RANK_LIST packet) { yield return new WaitForEndOfFrame(); for (int index = 0; index < packet.rankListCount; index++) { RoleChallengeRankInfo roleInfo = new RoleChallengeRankInfo(packet.GetRankList(index).Name, packet.GetRankList(index).CurTypeRank + 1, packet.GetRankList(index).TotalRank + 1, packet.GetRankList(index).Level); //roleInfoList.Add(roleInfo); roleInfoPrefabList[index].gameObject.SetActive(true); roleInfoPrefabList[index].SetRoleInfo(roleInfo); } //隐藏剩下的Prefab for (int index = packet.rankListCount; index < roleInfoPrefabList.Count; index++) { roleInfoPrefabList[index].gameObject.SetActive(false); } if (packet.rankListCount == 0) { NoInfoObj.gameObject.SetActive(true); } else { NoInfoObj.gameObject.SetActive(false); } yield return new WaitForEndOfFrame(); JudgeShowMySelfInfoPanel(); yield break; } void createPrefab() { for (int index = 0; index < 100; index++) { CreateRoleInfoItemPrefab(); } } void CreateRoleInfoItemPrefab() { GameObject roleInfoPrefab = GameObject.Instantiate(PlayerRankInfoItem); roleInfoPrefab.transform.SetParent(prefabParent); roleInfoPrefab.transform.localPosition = Vector3.zero; roleInfoPrefab.transform.localRotation = Quaternion.Euler(Vector3.zero); roleInfoPrefab.transform.localScale = Vector3.one; roleInfoPrefabList.Add(roleInfoPrefab.GetComponent()); } public void OnCloseBtnClick() { UIManager.CloseUI(UIInfo.FactionRankPanel); } }