using System.Collections.Generic; /**排行榜信息 */ public class PlayerRankData { public delegate void OnRankRefresh(int type); public event OnRankRefresh OnRefreshRank; private Dictionary> m_RankDic = new Dictionary>(); public void OnUpdateRank(H1001_tagBillboard vNetData) { List list = null; m_RankDic.TryGetValue(vNetData.Type, out list); for (int i = 0; i < vNetData.BillboardCount; i++) { if (list != null) { RankData data = null; if (i < list.Count) { data = list[i]; } else { data = new RankData(); list.Add(data); } data.type = vNetData.Type; SetRankData(data, vNetData.Billboard[i]); } else { list = new List(); RankData data = new RankData(); data.type = vNetData.Type; SetRankData(data, vNetData.Billboard[i]); list.Add(data); m_RankDic.Add(data.type, list); } } if (list != null && list.Count > vNetData.BillboardCount) { for (int k = list.Count - 1; k >= vNetData.BillboardCount; k--) { RankData data = list[k]; list.RemoveAt(k); data = null; } } if (OnRefreshRank != null) OnRefreshRank(vNetData.Type); } private void SetRankData(RankData data, H1001_tagBillboard.tagBillboardList vNetData) { data.ID = vNetData.ID; data.Name1 = vNetData.Name1; data.Name2 = vNetData.Name2; data.subType = vNetData.Type2; data.value1 = vNetData.Value1; data.value2 = vNetData.Value2; data.cmpValue = vNetData.CmpValue; data.cmpValue2 = vNetData.CmpValue2; data.cmpValue3 = vNetData.CmpValue3; } public List GetRankList(int type) { List list = null; m_RankDic.TryGetValue(type, out list); return list; } public int GetSelfRank(int type) { uint player = PlayerDatas.Instance.baseData.PlayerID; List list = GetRankList(type); if (list != null) { for (int i = 0; i < list.Count; i++) { if (list[i].ID == player) { return i + 1; } } } return -1; } public RankData GetSelfRankData(int type) { List list = GetRankList(type); if (list == null) { return null; } return list.Find((x) => { return x.ID == PlayerDatas.Instance.PlayerId; }); } public enum RankType { FightPower = 0, Job1FightPower = 1, Job2FightPower = 2, Job3FightPower = 3, Level = 4, Mount = 5, Pet = 6, RuneTower = 7, OfflineExp = 8, Realm = 9, OpenServerStrengthen = 11, OpenServerMount = 12, OpenServerGem = 13, OpenServerLv = 14, OpenServerRealm = 15, OpenServerFightPower = 16, Def_BT_FCCostGold = 17, //消费排行榜(仙界盛典) } public class RankData { public int type; public uint ID; public string Name1; public string Name2; public byte subType; public uint value1; public uint value2; public uint cmpValue; public uint cmpValue2; public uint cmpValue3; } }