From ad3f66509d2e61d8dc6630558153b71b774df20c Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 二月 2025 01:40:56 +0800
Subject: [PATCH] 0312 10349 【越南】【英文】【BT】【砍树】跨服竞技场优化 - 第一版
---
System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs | 175 ++++++++++++++++++++++++++++++++-------------------------
1 files changed, 98 insertions(+), 77 deletions(-)
diff --git a/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs b/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
index 820c0d2..786efcf 100644
--- a/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerOneVsOneRewardModel.cs
@@ -4,6 +4,7 @@
//--------------------------------------------------------
using System;
using System.Collections.Generic;
+using System.Linq;
using vnxbqy.UI;
//璺ㄦ湇PK濂栧姳淇℃伅
@@ -61,9 +62,10 @@
public class CrossServerOneVsOneRewardModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
+ RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
public Dictionary<int, SeasonAwardClass> SegmentRewardDic = new Dictionary<int, SeasonAwardClass>();//娈典綅濂栧姳
public ImpactRankModel.RankAwardItem SeasonRewardDic = new ImpactRankModel.RankAwardItem();//璧涘濂栧姳
- public Dictionary<int, List<Item_Class>> SeasonRewardConfigDic = new Dictionary<int, List<Item_Class>>(); //璧涘濂栧姳
+ public Dictionary<int, List<Item_Class>> SeasonRewardConfigDic = new Dictionary<int, List<Item_Class>>(); //璧涘鐨勬浣嶅鍔憋紙搴熷純锛�
public Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>> ZoneRankingDic = new Dictionary<ZoneRankingStruct, Dictionary<int, RankingInformationClass>>();
private List<CrossRealmPKDanAwardConfig> CrossRealmPKDanAwardList = new List<CrossRealmPKDanAwardConfig>();
public Action CrossRealmPKAwardStateUpdate;//棰嗗彇濂栧姳鍒锋柊
@@ -85,12 +87,20 @@
public string ZoneName = string.Empty;//璧涘尯鍚�
private int currentId = 0;//鑾峰彇褰撳墠璧涘尯ID
private string crossZoneName = string.Empty;//璧涘尯缂栧彿
+ public const int rankType = 165;
+
+
public override void Init()
{
var config = FuncConfigConfig.Get("CrossServerIcon").Numerical1;
MianOpenLV = int.Parse(config);
CrossRealmPKDanAwardList = CrossRealmPKDanAwardConfig.GetValues();
+
+ rankModel.onRankRefresh -= OnRefreshRankList;
+ rankModel.onRankRefresh += OnRefreshRankList;
+ rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
+ rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
}
public void OnBeforePlayerDataInitialize()
@@ -117,10 +127,9 @@
GetZoneName();
RedPointSeg();
RedPointSea();
- bool isbool = IsAwardState(CrossRealmPKAwardStateEnum.SeasonAwardState, -1);
if (CrossServerOneVsOnePKSeason.Instance.SeasonState == 2)
{
- ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID);//鍏充簬璧涘鏌ヨ
+ ViewCrossPKBillboard(CrossServerOneVsOnePKSeason.Instance.ZoneID, CrossServerOneVsOnePKSeason.Instance.SeasonID, true);//鍏充簬璧涘鏌ヨ
}
}
@@ -137,6 +146,24 @@
}
+
+
+ void OnRefreshRankList(int type)
+ {
+ if (type % 1000 == rankType)
+ {
+ CrossRealmPKBillboardInfo(type);
+ }
+ }
+
+ private void RankModel_onMyRankRefresh(int type)
+ {
+ if (type % 1000 == rankType)
+ {
+ CrossRealmPKBillboardInfo(type);
+ }
+ }
+
public override void UnInit()
{
@@ -169,9 +196,8 @@
WindowCenter.Instance.Open<CrossServerSettlementWin>();
}
}
- public void GetSeasonAward()//娈典綅濂栧姳鏁版嵁鑾峰彇
+ public void GetSeasonAward()//璧涘濂栧姳鏁版嵁鑾峰彇
{
-
var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
var configPK = CrossRealmPKDanAwardList;
var result2 = false;
@@ -186,7 +212,6 @@
result2 = true;
}
}
-
}
if (CrossServerOneVsOnePKSeason.Instance.CrossZoneName != null && result2)
{
@@ -236,7 +261,7 @@
}
currentId = seasonID;
}
- public void GetSegmentReward()//璧涘濂栧姳
+ public void GetSegmentReward()//娈典綅濂栧姳
{
var seasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
var configPK = CrossRealmPKDanAwardList;
@@ -261,7 +286,7 @@
{
seasonID += 1;
}
- if (currentId == seasonID && SeasonRewardConfigDic.Count != 0)
+ if (currentId == seasonID && SeasonRewardDic.AwardDic.Count != 0)
{
return;
}
@@ -285,34 +310,33 @@
}
SeasonRewardDic = _award;
}
-
}
//---
- SeasonRewardConfigDic.Clear();
+ //SeasonRewardConfigDic.Clear();
- for (int i = 0; i < configPK.Count; i++)
- {
- var _config = configPK[i];
- bool result = crossZoneName.Equals(_config.CrossZoneName);
- if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result)
- {
- var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
- List<Item_Class> itemClassList = new List<Item_Class>();
- for (int j = 0; j < _jsonDataC.Count; j++)
- {
- Item_Class itemClass = new Item_Class();
- itemClass.ItemId = int.Parse((_jsonDataC[j][0]).ToString());
- itemClass.ItemNumber = int.Parse((_jsonDataC[j][1]).ToString());
- itemClass.Isbind = int.Parse((_jsonDataC[j][2]).ToString());
- itemClassList.Add(itemClass);
- }
- if (itemClassList.Count <= 0)
- {
- continue;
- }
- SeasonRewardConfigDic.Add(_config.DanLV, itemClassList);
- }
- }
+ //for (int i = 0; i < configPK.Count; i++)
+ //{
+ // var _config = configPK[i];
+ // bool result = crossZoneName.Equals(_config.CrossZoneName);
+ // if (!SeasonRewardConfigDic.ContainsKey(_config.DanLV) && _config.SeasonID == seasonID && result)
+ // {
+ // var _jsonDataC = LitJson.JsonMapper.ToObject(_config.SeasonAwardList);
+ // List<Item_Class> itemClassList = new List<Item_Class>();
+ // for (int j = 0; j < _jsonDataC.Count; j++)
+ // {
+ // Item_Class itemClass = new Item_Class();
+ // itemClass.ItemId = int.Parse((_jsonDataC[j][0]).ToString());
+ // itemClass.ItemNumber = int.Parse((_jsonDataC[j][1]).ToString());
+ // itemClass.Isbind = int.Parse((_jsonDataC[j][2]).ToString());
+ // itemClassList.Add(itemClass);
+ // }
+ // if (itemClassList.Count <= 0)
+ // {
+ // continue;
+ // }
+ // SeasonRewardConfigDic.Add(_config.DanLV, itemClassList);
+ // }
+ //}
currentId = seasonID;
}
public void CrossRealmPKAwardState(HC102_tagMCCrossRealmPKAwardState info)//c102璺ㄦ湇PK鐜╁濂栧姳璁板綍
@@ -369,12 +393,12 @@
GameNetSystem.Instance.SendInfo(c103);
}
- public void ViewCrossPKBillboard(int ZoneID, int SeasonID)//(璧涘尯锛岃禌瀛�) 鏌ョ湅璺ㄦ湇绔炴妧鍦鸿禌瀛f帓琛屾
+ public void ViewCrossPKBillboard(int ZoneID, int SeasonID, bool isQuerySelf = false)//(璧涘尯锛岃禌瀛�) 鏌ョ湅璺ㄦ湇绔炴妧鍦鸿禌瀛f帓琛屾
{
ZoneRankingStruct zoneRanking = new ZoneRankingStruct();
zoneRanking.ZoneID = ZoneID;
zoneRanking.SeasonID = SeasonID;
- int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID;
+ //int seasonIDNow = CrossServerOneVsOnePKSeason.Instance.SeasonID;
if (ZoneRankingDic.ContainsKey(zoneRanking))
{
if (RankInformationUpdate != null)
@@ -382,56 +406,53 @@
RankInformationUpdate();
}
}
- CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard();
- c001.ZoneID = (byte)ZoneID;
- c001.SeasonID = (byte)SeasonID;
- GameNetSystem.Instance.SendInfo(c001);
+ //CC001_tagCGViewCrossPKBillboard c001 = new CC001_tagCGViewCrossPKBillboard();
+ //c001.ZoneID = (byte)ZoneID;
+ //c001.SeasonID = (byte)SeasonID;
+ //GameNetSystem.Instance.SendInfo(c001);
+ if (isQuerySelf)
+ rankModel.QueryCrossRank(rankType, ZoneID, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true, groupValue2:SeasonID);
+ else
+ {
+ rankModel.ResetQueryParam();
+ rankModel.QueryCrossRank(rankType, ZoneID, groupValue2: SeasonID);
+ }
}
- public void CrossRealmPKBillboardInfo(HC005_tagGCCrossRealmPKBillboardInfo info)//璺ㄦ湇PK璧涘鎺掕姒�
+ public void CrossRealmPKBillboardInfo(int type)//璺ㄦ湇PK璧涘鎺掕姒�
{
+ var datas = rankModel.GetRankPageDatas(type);
+
Dictionary<int, RankingInformationClass> RankInformationDic = new Dictionary<int, RankingInformationClass>();
- if (info.Count > 0)
+ ZoneRankingStruct zoneRank = new ZoneRankingStruct();
+ if (datas.Count > 0)
{
- for (int i = 0; i < info.Count; i++)
+ var keys = datas.Keys.ToList();
+ for (int i = 0; i < keys.Count; i++)
{
- if (!RankInformationDic.ContainsKey(i))
- {
- RankingInformationClass RankingInformation = new RankingInformationClass();
- RankingInformation.PlayerID = (int)info.PKBillboardList[i].PlayerID;
- RankingInformation.PlayerName = info.PKBillboardList[i].PlayerName;
- RankingInformation.Job = info.PKBillboardList[i].Job;
- RankingInformation.Face = (int)info.PKBillboardList[i].Face;
- RankingInformation.FacePic = (int)info.PKBillboardList[i].FacePic;
- RankingInformation.Power = (int)info.PKBillboardList[i].FightPower;
- RankingInformation.Realm = (int)info.PKBillboardList[i].RealmLV;
- RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV;
- RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore;
- RankInformationDic.Add(i, RankingInformation);
- if (PlayerDatas.Instance.baseData.PlayerID == info.PKBillboardList[i].PlayerID)
- {
- MyRank = i;
- }
- }
- else
- {
- RankingInformationClass RankingInformation = new RankingInformationClass();
- RankingInformation.PlayerID = (int)info.PKBillboardList[i].PlayerID;
- RankingInformation.PlayerName = info.PKBillboardList[i].PlayerName;
- RankingInformation.Job = info.PKBillboardList[i].Job;
- RankingInformation.Face = (int)info.PKBillboardList[i].Face;
- RankingInformation.FacePic = (int)info.PKBillboardList[i].FacePic;
- RankingInformation.Power = (int)info.PKBillboardList[i].FightPower;
- RankingInformation.Realm = (int)info.PKBillboardList[i].RealmLV;
- RankingInformation.DanLv = (int)info.PKBillboardList[i].DanLV;
- RankingInformation.PkScore = (int)info.PKBillboardList[i].PKScore;
- RankInformationDic[i] = RankingInformation;
- }
+ int index = keys[i];
+ var info = datas[index];
+ RankingInformationClass RankingInformation = new RankingInformationClass();
+ RankingInformation.PlayerID = (int)info.id;
+ RankingInformation.PlayerName = info.name1;
+ RankingInformation.Job = info.subType;
+ RankingInformation.Face = (int)info.value3;
+ RankingInformation.FacePic = (int)info.value4;
+ RankingInformation.Power = 0;
+ RankingInformation.Realm = (int)info.value1;
+ RankingInformation.DanLv = (int)info.value2;
+ RankingInformation.PkScore = (int)info.cmpValue;
+ RankInformationDic[index] = RankingInformation;
}
}
- ZoneRankingStruct zoneRank = new ZoneRankingStruct();
- zoneRank.ZoneID = info.ZoneID;
- zoneRank.SeasonID = info.SeasonID;
+
+ var myData = rankModel.GetMyRank(type);
+ MyRank = myData != null ? myData.index : -1;
+
+ //璧涘尯3浣�+璧涘3浣�+鎺掕姒滅被鍨�3浣�
+ zoneRank.ZoneID = type / 1000000;
+ zoneRank.SeasonID = type/1000 % 1000;
+
if (!ZoneRankingDic.ContainsKey(zoneRank))
{
ZoneRankingDic.Add(zoneRank, RankInformationDic);
--
Gitblit v1.8.0