Files
JJBB/Assets/Project/Script/GUI/FactionChallenge/FactionRankPanelCtr.cs
2024-08-23 15:49:34 +08:00

283 lines
7.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<GameObject> _MarkIconList;
public List<GameObject> _CareerMarkIconList;
#endregion
private List<FactionPlayerRankInfoItem> roleInfoPrefabList = new List<FactionPlayerRankInfoItem>();
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<FactionPlayerRankInfoItem>().PlayerNameText.text.Equals(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName))
{
m_RankInfoText.text = roleInfoPrefabList[index].GetComponent<FactionPlayerRankInfoItem>().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<RoleChallengeRankInfo> roleInfoList = new List<RoleChallengeRankInfo>();
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<FactionPlayerRankInfoItem>());
}
public void OnCloseBtnClick()
{
UIManager.CloseUI(UIInfo.FactionRankPanel);
}
}