using System.Collections.Generic;
|
/**排行榜信息 */
|
public class PlayerRankData
|
{
|
public delegate void OnRankRefresh(int type);
|
public event OnRankRefresh OnRefreshRank;
|
|
private Dictionary<int, List<RankData>> m_RankDic = new Dictionary<int, List<RankData>>();
|
|
public void OnUpdateRank(H1001_tagBillboard vNetData)
|
{
|
List<RankData> 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>();
|
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<RankData> GetRankList(int type)
|
{
|
List<RankData> list = null;
|
m_RankDic.TryGetValue(type, out list);
|
return list;
|
}
|
|
public int GetSelfRank(int type)
|
{
|
uint player = PlayerDatas.Instance.baseData.PlayerID;
|
List<RankData> 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<RankData> 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, //消费排行榜(仙界盛典)
|
OpenServerRune = 18,
|
OpenServerGodWeapon = 20,
|
OpenServerRecharge = 21,
|
OpenServerPet = 22,
|
JadeDynastyTower=23,//诛仙塔排行榜
|
Def_BT_NewFCCostGold = 24, //消费排行榜(新仙界盛典) 24
|
}
|
|
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;
|
}
|
}
|