From a277a317c827163c595ec1b21247dc820a1a0ff0 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 02 七月 2025 20:23:29 +0800
Subject: [PATCH] 0312 排行榜

---
 Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs.meta              |   11 +
 Main/System/Boss/MainBossEnterWin.cs                                                      |   11 +
 Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs                   |   28 ++
 Main/System/BillboardRank/RankModel.cs                                                    |  309 ++++++++++++++++++++++++++++++
 Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs.meta           |   11 +
 Main/System/BillboardRank/Top3Cell.cs.meta                                                |   11 +
 Main/Manager/UIManager.cs                                                                 |    4 
 Main/System/Boss/MainBossRankWin.cs                                                       |    2 
 Main/System/BillboardRank/RankModel.cs.meta                                               |   12 +
 Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs                                      |    1 
 Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs                |  102 ++++++++++
 Main/System/Main/HomeWin.cs                                                               |    8 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs.meta |   11 +
 Main/Main.cs                                                                              |    1 
 Main/System/BillboardRank/Top3Cell.cs                                                     |   24 ++
 Main/System/BillboardRank.meta                                                            |    8 
 Main/System/Store/StoreModel.cs                                                           |    5 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs      |   13 +
 Main/System/DailyQuest/DailyQuestModel.cs                                                 |    5 
 19 files changed, 574 insertions(+), 3 deletions(-)

diff --git a/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs
new file mode 100644
index 0000000..862cfff
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs
@@ -0,0 +1,28 @@
+using UnityEngine;
+using System.Collections;
+
+// A1 30 鏌ョ湅姒滃崟 #tagCMViewBillboard
+
+public class CA130_tagCMViewBillboard : GameNetPackBasic {
+    public byte Type;    //姒滃崟绫诲瀷
+    public uint GroupValue1;    //鍒嗙粍鍊�1
+    public uint GroupValue2;    //鍒嗙粍鍊�2锛屼笌鍒嗙粍鍊�1缁勫悎褰掍负鍚岀粍姒滃崟鏁版嵁
+    public ushort StartIndex;    //鏌ョ湅鐨勮捣濮嬬储寮曪紝 榛樿0  闈炲悕娆�
+    public byte ViewCnt;    //鏌ョ湅鏉℃暟锛岄粯璁�20锛屽崟娆℃渶澶т笉瓒呰繃100锛屽拰StartIndex鍏宠仈
+    public uint ViewID;    //闄勫甫鏌ョ湅鎸囧畾ID鎵�鍦ㄥ悕娆″墠鍚庢暟鎹紝濡傜帺瀹禝D銆佸鏃廔D绛夛紝涓嶸iewCnt鏃犲叧锛屾湇鍔$鍥哄畾杩斿洖鏉℃暟
+
+    public CA130_tagCMViewBillboard () {
+        combineCmd = (ushort)0x03FE;
+        _cmd = (ushort)0xA130;
+    }
+
+    public override void WriteToBytes () {
+        WriteBytes (Type, NetDataType.BYTE);
+        WriteBytes (GroupValue1, NetDataType.DWORD);
+        WriteBytes (GroupValue2, NetDataType.DWORD);
+        WriteBytes (StartIndex, NetDataType.WORD);
+        WriteBytes (ViewCnt, NetDataType.BYTE);
+        WriteBytes (ViewID, NetDataType.DWORD);
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs.meta b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs.meta
new file mode 100644
index 0000000..7785dff
--- /dev/null
+++ b/Main/Core/NetworkPackage/ClientPack/CA1_Sys/CA130_tagCMViewBillboard.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 78f2a8b14f2fcf847b334e66a0c8bbcb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs
new file mode 100644
index 0000000..9bf68be
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// A1 30 鏌ョ湅姒滃崟杩斿洖淇℃伅 #tagMCViewBillboardRet
+
+public class DTCA130_tagMCViewBillboardRet : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        HA130_tagMCViewBillboardRet vNetData = vNetPack as HA130_tagMCViewBillboardRet;
+        RankModel.Instance.ReceiveRankPagePackage(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs.meta
new file mode 100644
index 0000000..13c8573
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA1_Sys/DTCA130_tagMCViewBillboardRet.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ec09c0f2356707545b692363b8241ca5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index fcbab53..76c01b0 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -93,6 +93,7 @@
         Register(typeof(HB110_tagMCTaskInfo), typeof(DTCB110_tagMCTaskInfo));
         Register(typeof(HA921_tagUpdatePlayerNameResult), typeof(DTCA921_tagUpdatePlayerNameResult));
         Register(typeof(H3202_tagServerResponse), typeof(DTC3202_tagServerResponse));
+        Register(typeof(HA130_tagMCViewBillboardRet), typeof(DTCA130_tagMCViewBillboardRet));
 
     }
 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs
new file mode 100644
index 0000000..f464d4e
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs
@@ -0,0 +1,102 @@
+using UnityEngine;
+using System.Collections;
+
+// A1 30 鏌ョ湅姒滃崟杩斿洖淇℃伅 #tagMCViewBillboardRet
+
+public class HA130_tagMCViewBillboardRet : GameNetPackBasic {
+    public byte Type;    //姒滃崟绫诲瀷
+    public uint GroupValue1;    //鍒嗙粍鍊�1
+    public uint GroupValue2;    //鍒嗙粍鍊�2锛屼笌鍒嗙粍鍊�1缁勫悎褰掍负鍚岀粍姒滃崟鏁版嵁
+    public ushort DataTotal;    //璇ユ鍗曞疄闄呮�绘暟鎹暟锛屽垎椤垫煡璇㈡椂鍙�氳繃姝ゅ�煎強杩斿洖鐨勫垎椤垫渶鍚庝竴鏉℃鍗曟暟鎹墍鍦ㄧ储寮曞垽鏂槸鍚﹁繕鏈夋湭鏌ヨ鏁版嵁
+    public byte PageDataCnt;
+    public  tagMCViewBillboardData[] PageDataList;    //杩斿洖鍒嗛〉鏁版嵁鍒楄〃
+    public uint ViewID;    //闄勫甫鏌ョ湅鎸囧畾ID鎵�鍦ㄥ悕娆″墠鍚庢暟鎹紝濡傜帺瀹禝D銆佸鏃廔D绛�
+    public byte ViewIDDataCnt;
+    public  tagMCViewBillboardData[] ViewIDDataList;    //ViewID鎵�鍦ㄥ悕娆″墠鍚庢暟鎹垪琛�
+
+    public HA130_tagMCViewBillboardRet () {
+        _cmd = (ushort)0xA130;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out Type, vBytes, NetDataType.BYTE);
+        TransBytes (out GroupValue1, vBytes, NetDataType.DWORD);
+        TransBytes (out GroupValue2, vBytes, NetDataType.DWORD);
+        TransBytes (out DataTotal, vBytes, NetDataType.WORD);
+        TransBytes (out PageDataCnt, vBytes, NetDataType.BYTE);
+        PageDataList = new tagMCViewBillboardData[PageDataCnt];
+        for (int i = 0; i < PageDataCnt; i ++) {
+            PageDataList[i] = new tagMCViewBillboardData();
+            TransBytes (out PageDataList[i].Index, vBytes, NetDataType.WORD);
+            TransBytes (out PageDataList[i].Rank, vBytes, NetDataType.WORD);
+            TransBytes (out PageDataList[i].ID, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].ID2, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Name1, vBytes, NetDataType.Chars, 33);
+            TransBytes (out PageDataList[i].Name2, vBytes, NetDataType.Chars, 65);
+            TransBytes (out PageDataList[i].Type2, vBytes, NetDataType.BYTE);
+            TransBytes (out PageDataList[i].Value1, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value2, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value3, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value4, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value5, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value6, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value7, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].Value8, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].CmpValue, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].CmpValue2, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].CmpValue3, vBytes, NetDataType.DWORD);
+            TransBytes (out PageDataList[i].DataLen, vBytes, NetDataType.WORD);
+            TransBytes (out PageDataList[i].UserData, vBytes, NetDataType.Chars, PageDataList[i].DataLen);
+        }
+        TransBytes (out ViewID, vBytes, NetDataType.DWORD);
+        TransBytes (out ViewIDDataCnt, vBytes, NetDataType.BYTE);
+        ViewIDDataList = new tagMCViewBillboardData[ViewIDDataCnt];
+        for (int i = 0; i < ViewIDDataCnt; i ++) {
+            ViewIDDataList[i] = new tagMCViewBillboardData();
+            TransBytes (out ViewIDDataList[i].Index, vBytes, NetDataType.WORD);
+            TransBytes (out ViewIDDataList[i].Rank, vBytes, NetDataType.WORD);
+            TransBytes (out ViewIDDataList[i].ID, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].ID2, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Name1, vBytes, NetDataType.Chars, 33);
+            TransBytes (out ViewIDDataList[i].Name2, vBytes, NetDataType.Chars, 65);
+            TransBytes (out ViewIDDataList[i].Type2, vBytes, NetDataType.BYTE);
+            TransBytes (out ViewIDDataList[i].Value1, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value2, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value3, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value4, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value5, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value6, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value7, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].Value8, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].CmpValue, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].CmpValue2, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].CmpValue3, vBytes, NetDataType.DWORD);
+            TransBytes (out ViewIDDataList[i].DataLen, vBytes, NetDataType.WORD);
+            TransBytes (out ViewIDDataList[i].UserData, vBytes, NetDataType.Chars, ViewIDDataList[i].DataLen);
+        }
+    }
+
+    public struct tagMCViewBillboardData {
+        public ushort Index;        //鏁版嵁鍦ㄦ鍗曞垪琛ㄤ腑鐨勭储寮曪紝浠�0寮�濮�
+        public ushort Rank;        //鍚嶆锛屼粠1寮�濮嬶紝浠h〃绗�1鍚�
+        public uint ID;
+        public uint ID2;
+        public string Name1;        //鍚嶅瓧1锛岀敤鏉ユ樉绀烘帓搴忓璞″悕瀛� 
+        public string Name2;        //鍚嶅瓧2
+        public byte Type2;        //闄勫姞绫诲瀷锛岀敤鏉ヨ〃绀烘帓搴忓璞$殑绫诲瀷锛屾瘮濡傦紝鐜╁鎵�灞炶亴涓氶棬娲撅紝瀹犵墿绫诲瀷绛�
+        public uint Value1;        //鑷畾涔夊��1
+        public uint Value2;        //鑷畾涔夊��2
+        public uint Value3;
+        public uint Value4;
+        public uint Value5;
+        public uint Value6;
+        public uint Value7;
+        public uint Value8;
+        public uint CmpValue;        // 姣旇緝鏉冨��
+        public uint CmpValue2;        // 姣旇緝鏉冨��
+        public uint CmpValue3;        // 姣旇緝鏉冨��
+        public ushort DataLen;
+        public string UserData;        //闄勫姞淇℃伅
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs.meta b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs.meta
new file mode 100644
index 0000000..235ad6b
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HA1_Sys/HA130_tagMCViewBillboardRet.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9a61e24bf32b41b47acd3b1c74d0e0cd
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Main.cs b/Main/Main.cs
index 38c6032..00311d5 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -68,6 +68,7 @@
         managers.Add(ChatManager.Instance);
         managers.Add(ChatBubbleManager.Instance);
         managers.Add(OfficialRankManager.Instance);
+        managers.Add(RankModel.Instance);
 
         foreach (var manager in managers)
         {
diff --git a/Main/Manager/UIManager.cs b/Main/Manager/UIManager.cs
index a3bee2c..95bebfd 100644
--- a/Main/Manager/UIManager.cs
+++ b/Main/Manager/UIManager.cs
@@ -156,10 +156,10 @@
                 result = BASE_SORTING_ORDER * 1000;
                 break;
             case UILayer.System:
-                result = BASE_SORTING_ORDER * 10000;
+                result = BASE_SORTING_ORDER * 2000;
                 break;
             case UILayer.Loading:
-                result = BASE_SORTING_ORDER * 100000;
+                result = BASE_SORTING_ORDER * 3000;
                 break;
             default:
                 result = BASE_SORTING_ORDER * 10;
diff --git a/Main/System/BillboardRank.meta b/Main/System/BillboardRank.meta
new file mode 100644
index 0000000..cc9414b
--- /dev/null
+++ b/Main/System/BillboardRank.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 08c1d8892b7d07f4da3aa064215c8ce6
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/BillboardRank/RankModel.cs b/Main/System/BillboardRank/RankModel.cs
new file mode 100644
index 0000000..146071a
--- /dev/null
+++ b/Main/System/BillboardRank/RankModel.cs
@@ -0,0 +1,309 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+// 鏀寔鍒嗛〉鏌ヨ鎺掕姒�, 鏈湇/璺ㄦ湇缁熶竴浣跨敤 鍙傝�僎ueryRankByPage  鏂板皝鍖� DTCA130_tagMCViewBillboardRet
+public class RankModel : GameSystemManager<RankModel>
+{
+    public event Action<int> onRankRefresh;
+    public event Action<int> onMyRankRefresh;
+
+    public override void Init()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+    }
+
+    public void OnBeforePlayerDataInitialize()
+    {
+        m_RankPageDatas.Clear();
+        m_RankIDToIndex.Clear();
+        queryRankCD.Clear();
+    }
+
+    public override void Release()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+    }
+
+
+    void ReSetRankDataEx(RankData data, HA130_tagMCViewBillboardRet.tagMCViewBillboardData serverData, int type)
+    {
+        data.id = serverData.ID;
+        data.id2 = (int)serverData.ID2;
+        data.name1 = serverData.Name1.Trim().Replace("\0", "");
+        data.name2 = serverData.Name2.Trim().Replace("\0", "");
+        data.subType = serverData.Type2;
+        data.value1 = serverData.Value1;
+        data.value2 = serverData.Value2;
+        data.value3 = serverData.Value3;
+        data.value4 = serverData.Value4;
+        data.value5 = serverData.Value5;
+        data.value6 = serverData.Value6;
+        data.value7 = serverData.Value7;
+        data.value8 = serverData.Value8;
+        data.cmpValue = serverData.CmpValue;
+        data.cmpValue2 = serverData.CmpValue2;
+        data.cmpValue3 = serverData.CmpValue3;
+        data.userData = serverData.UserData;
+        data.rank = serverData.Rank;
+        data.type = type;
+        data.index = serverData.Index;
+    }
+
+
+    #region 鍒嗛〉鏌ヨ
+    Dictionary<int, int> queryRankCD = new Dictionary<int, int>(); //棣栨鏌ヨCD锛屼笉褰卞搷鍚庣画鐨勫垎椤垫煡璇�
+    //鍒嗛〉鏌ヨ 鎺掑悕绱㈠紩鎸夊瓧娈靛瓨鍌� 1浠h〃绗竴鍚�
+    Dictionary<int, Dictionary<int, RankData>> m_RankPageDatas = new Dictionary<int, Dictionary<int, RankData>>();  
+    //绫诲瀷锛欼D -鎺掑悕绱㈠紩锛岄�氳繃ID杩涜鎺掗噸鍒犻櫎 涓嶅悓鍚嶆 鍚孖D鐨勬暟鎹�
+    Dictionary<int, Dictionary<int, int>> m_RankIDToIndex = new Dictionary<int, Dictionary<int, int>>();
+
+
+    //锛侊紒锛佹湰鏈嶅垎椤垫煡璇娇鐢ㄨ鏄�
+    //1. QueryRankByPage锛氬厛鏌ヨ绗竴椤碉紝startIndex = 0, count = 30, 鍦ㄧ涓�椤垫煡璇㈠墠鍙互閫夋嫨鍒濆鍖朢esetQueryParam
+    //2. ListenRankPage锛氫竴鑸湪婊氬姩鏉nRefreshCell鐩戝惉鎺掕姒滄樉绀哄悕娆★紝鐢ㄤ簬鍒嗛〉鏌ヨ
+    //
+    //  startIndex 鍜� count 閰嶅锛屼笌watchID鏃犲叧鑱�
+    //  watchID;    //鏌ョ湅鎸囧畾ID鍚嶆鍓嶅悗锛屾煡璇㈣寖鍥存湇鍔$宸插浐瀹氾紝濡傛灉鍙鏌ユ寚瀹氱洰鏍囷紝count鍙互璁剧疆1鍑忓皯闄勫姞淇℃伅
+    public void QueryRankByPage(int type, int startIndex = 0, int count = 20, int watchID = 0, bool forceQuery = false, int groupValue1 = 0, int groupValue2 = 0)
+    {
+        if (queryRankCD.ContainsKey(type) && !forceQuery)
+        {
+            if (Time.time - queryRankCD[type] < 2f)
+            {
+                return;
+            }
+        }
+
+        var pak = new CA130_tagCMViewBillboard();
+        pak.Type = (byte)type;
+        pak.GroupValue1 = (byte)groupValue1;
+        pak.GroupValue2 = (uint)groupValue2;
+        pak.StartIndex = (ushort)startIndex;  //鎺掑悕浠�0寮�濮�
+        pak.ViewCnt = (byte)count;
+        pak.ViewID = (uint)watchID;
+
+        GameNetSystem.Instance.SendInfo(pak);
+        queryRankCD[type] = (int)Time.time;
+    }
+
+    //鐩戝惉鎺掕姒滄樉绀哄悕娆★紝鐢ㄤ簬鍒嗛〉鏌ヨ锛岀涓�椤垫煡璇㈢敱澶栭儴瑙﹀彂
+    //浣跨敤鍦烘櫙 濡傜晫闈㈡帓琛屾婊氬姩鐨勬椂鍊欐瘡娆℃煡璇�30涓帓鍚嶅悕棰濓紝鍦ㄦ樉绀哄ぇ浜巑*30 +20鍚嶆椂锛岀洃鍚笅涓�椤碉紝鏌ヨm+1椤�
+    int pageCnt = 20; //姣忛〉鏌ヨ鏉℃暟
+    int queryPointNum = 12;  //鏌ヨ鐐�
+    int queryPageCD = 60; //鍐呴儴鏌ヨ鐐笴D 閬垮厤涓嶆柇涓婁笅婊戝姩鐨勬椂鍊欒繃浜庨绻佹煡璇紝澶栭儴浣跨敤閲嶆柊鎵撳紑鐨勬椂鍊欏彲浠ラ噸缃瓹D
+    Dictionary<int, float> queryPageTimes = new Dictionary<int, float>(); //鏌ヨ椤礐D
+    public void ListenRankPage(int type, int index, int groupValue1 = 0, int groupValue2 = 0)
+    {
+        int page = index / pageCnt;
+        if (index > page * pageCnt + queryPointNum)
+        {
+            if (queryPageTimes.ContainsKey(page) && Time.realtimeSinceStartup - queryPageTimes[page] < queryPageCD)
+                return;
+            Debug.LogFormat("鍒嗛〉鏌ヨ锛歿0} - {1}", index, page);
+            QueryRankByPage(type, pageCnt * (page + 1), pageCnt, 0, true, groupValue1, groupValue2);
+            queryPageTimes[page] = Time.realtimeSinceStartup;
+        }
+    }
+
+    public void ResetQueryParam()
+    {
+        pageCnt = 20;
+        queryPointNum = 12;
+        queryPageCD = 60;
+        queryPageTimes.Clear();
+    }
+
+    public void SetQueryParm(int pageCnt, int queryPointNum, int queryPageCD)
+    {
+        this.pageCnt = pageCnt;
+        this.queryPointNum = queryPointNum;
+        this.queryPageCD = queryPageCD;
+        queryPageTimes.Clear();
+    }
+
+
+
+    //璺ㄦ湇鎺掕姒滀俊鎭�
+    void ReSetRankData(RankData data, HA130_tagMCViewBillboardRet.tagMCViewBillboardData serverData, int type)
+    {
+        data.id = serverData.ID;
+        data.id2 = (int)serverData.ID2;
+        data.name1 = serverData.Name1.Replace("\0", "");
+        data.name2 = serverData.Name2.Replace("\0", "");
+        data.subType = serverData.Type2;
+        data.value1 = serverData.Value1;
+        data.value2 = serverData.Value2;
+        data.value3 = serverData.Value3;
+        data.value4 = serverData.Value4;
+        data.value5 = serverData.Value5;
+        data.value6 = serverData.Value6;
+        data.value7 = serverData.Value7;
+        data.value8 = serverData.Value8;
+        data.cmpValue = serverData.CmpValue;
+        data.cmpValue2 = serverData.CmpValue2;
+        data.cmpValue3 = serverData.CmpValue3;
+        data.userData = serverData.UserData;
+        data.rank = serverData.Rank;
+        data.index = serverData.Index;
+        data.type = type;   //涓庢湇鍔$涓�鑷寸殑璺ㄦ湇鎺掕姒滅被鍨嬶紝澶栭儴鑷澶勭悊涓嶅悓鍒嗙粍鍒嗚禌瀛g瓑鎯呭喌
+    }
+
+    //鏌ヨ鏈湇/璺ㄦ湇鎺掕姒�
+    public void ReceiveRankPagePackage(HA130_tagMCViewBillboardRet package)
+    {
+        int rankType = package.Type;
+        //閮ㄥ垎璺ㄦ湇鎺掕姒滃悓涓�涓瀛樺湪鍒嗙粍鍒嗗尯鐨勬儏鍐� //璧涘尯3浣�+璧涘3浣�+鎺掕姒滅被鍨�3浣�
+        if (rankType == 165)    //CrossServerOneVsOneRewardModel.rankType
+        {
+            rankType = (int)package.GroupValue1 * 1000000 + (int)package.GroupValue2 * 1000 + rankType;
+        }
+
+        if (!m_RankPageDatas.ContainsKey(rankType))
+        {
+            m_RankPageDatas.Add(rankType, new Dictionary<int, RankData>());
+        }
+
+        //鍚孖D鎺掗噸鍒犻櫎
+        if (!m_RankIDToIndex.ContainsKey(rankType))
+        {
+            m_RankIDToIndex.Add(rankType, new Dictionary<int, int>());
+        }
+
+        for (int i = 0; i < package.PageDataCnt; i++)
+        {
+            int id = (int)package.PageDataList[i].ID;
+            int orderIndex = (int)package.PageDataList[i].Rank;
+            if (!m_RankIDToIndex[rankType].ContainsKey(id))
+            {
+                m_RankIDToIndex[rankType][id] = orderIndex;
+            }
+            else if (m_RankIDToIndex[rankType][id] != orderIndex)
+            {
+                m_RankPageDatas[rankType].Remove(m_RankIDToIndex[rankType][id]);
+                m_RankIDToIndex[rankType][id] = orderIndex;
+            }
+        }
+
+
+
+        for (int i = 0; i < package.PageDataCnt; i++)
+        {
+            int orderIndex = (int)package.PageDataList[i].Rank;
+            if (!m_RankPageDatas[rankType].ContainsKey(orderIndex))
+            {
+                m_RankPageDatas[rankType][orderIndex] = new RankData();
+            }
+            ReSetRankDataEx(m_RankPageDatas[rankType][orderIndex], package.PageDataList[i], rankType);
+        }
+
+        if (package.ViewID != 0)
+        {
+            //鏌ヨ鎸囧畾鐩爣鎺掑悕
+            for (int i = 0; i < package.ViewIDDataCnt; i++)
+            {
+                int id = (int)package.ViewIDDataList[i].ID;
+                int orderIndex = (int)package.ViewIDDataList[i].Rank;
+                if (!m_RankIDToIndex[rankType].ContainsKey(id))
+                {
+                    m_RankIDToIndex[rankType][id] = orderIndex;
+                }
+                else if (m_RankIDToIndex[rankType][id] != orderIndex)
+                {
+                    m_RankPageDatas[rankType].Remove(m_RankIDToIndex[rankType][id]);
+                    m_RankIDToIndex[rankType][id] = orderIndex;
+                }
+            }
+
+
+            for (int i = 0; i < package.ViewIDDataCnt; i++)
+            {
+                int orderIndex = (int)package.ViewIDDataList[i].Rank;
+                if (!m_RankPageDatas[rankType].ContainsKey(orderIndex))
+                {
+                    m_RankPageDatas[rankType][orderIndex] = new RankData();
+                }
+                ReSetRankData(m_RankPageDatas[rankType][orderIndex], package.ViewIDDataList[i], package.Type);
+            }
+            onMyRankRefresh?.Invoke(package.Type);
+        }
+        else
+        {
+            onRankRefresh?.Invoke(package.Type);
+        }
+    }
+
+    //鎺掑悕浠�0 寮�濮�
+    //濡傛灉鏄法鏈嶆帓琛屾 绫诲瀷鍙兘鍥犺法鏈嶅姛鑳戒笉鍚� 鐢卞垎缁勫垎璧涘绛夋儏鍐电粍鍚�
+    public Dictionary<int, RankData> GetRankPageDatas(int type)
+    {
+        Dictionary<int, RankData> datas = null;
+        if (m_RankPageDatas.TryGetValue(type, out datas))
+        {
+            return datas;
+        }
+        return null;
+    }
+
+
+    ////濡傛灉鏄法鏈嶆帓琛屾 绫诲瀷鍙兘鍥犺法鏈嶅姛鑳戒笉鍚� 鐢卞垎缁勫垎璧涘绛夋儏鍐电粍鍚�
+    public RankData GetMyRank(int type)
+    {
+        var playerId = PlayerDatas.Instance.baseData.PlayerID;
+        Dictionary<int, RankData> rankDatas = null;
+        if (m_RankPageDatas.TryGetValue(type, out rankDatas))
+        {
+            foreach (var item in rankDatas.Values)
+            {
+                if (item.id == playerId)
+                {
+                    return item;
+                }
+            }
+        }
+        return null;
+    }
+
+    public RankData GetMyRankByID(int type, int queryID)
+    {
+        Dictionary<int, RankData> rankDatas = null;
+        if (m_RankPageDatas.TryGetValue(type, out rankDatas))
+        {
+            foreach (var item in rankDatas.Values)
+            {
+                if (item.id == queryID)
+                {
+                    return item;
+                }
+            }
+        }
+        return null;
+    }
+    #endregion
+}
+
+public class RankData
+{
+    public int type;    //鎺掕姒滅被鍨�
+    public int subType;
+    public uint id;
+    public int id2;
+    public string name1;
+    public string name2;
+    public uint value1;
+    public uint value2;
+    public uint value3;
+    public uint value4;
+    public uint value5;
+    public uint value6;
+    public uint value7;
+    public uint value8;
+    public uint cmpValue;
+    public uint cmpValue2;
+    public uint cmpValue3;
+    public string userData;
+    public int rank;   // 鎺掑悕浠�1寮�濮嬶紝浠h〃绗�1鍚�
+    public int index;	//鏁版嵁鍦ㄦ鍗曞垪琛ㄤ腑鐨勭储寮曪紝浠�0寮�濮� 闈炴帓鍚� 鍒嗛〉鏌ヨ浼氱敤鍒� 
+}
+
diff --git a/Main/System/BillboardRank/RankModel.cs.meta b/Main/System/BillboardRank/RankModel.cs.meta
new file mode 100644
index 0000000..06f9e70
--- /dev/null
+++ b/Main/System/BillboardRank/RankModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f59839e755cb90448af976cf01af3979
+timeCreated: 1508836973
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/BillboardRank/Top3Cell.cs b/Main/System/BillboardRank/Top3Cell.cs
new file mode 100644
index 0000000..fa98695
--- /dev/null
+++ b/Main/System/BillboardRank/Top3Cell.cs
@@ -0,0 +1,24 @@
+锘�//--------------------------------------------------------
+//    [Author]:           鐜╀釜娓告垙
+//    [  Date ]:           Wednesday, September 26, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+
+//閫氱敤鐨勫墠3鎺掑悕
+public class Top3Cell : MonoBehaviour
+{
+    //[SerializeField] Model 鏄剧ずNPC 姝﹀皢妯″瀷
+
+    public void Display(int index)
+    {
+        
+    }
+
+
+}
+
+
+
+
diff --git a/Main/System/BillboardRank/Top3Cell.cs.meta b/Main/System/BillboardRank/Top3Cell.cs.meta
new file mode 100644
index 0000000..9e0aa88
--- /dev/null
+++ b/Main/System/BillboardRank/Top3Cell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 468f1b3d47e8482469eb71131b2e9056
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Boss/MainBossEnterWin.cs b/Main/System/Boss/MainBossEnterWin.cs
index 096abaf..b9ac797 100644
--- a/Main/System/Boss/MainBossEnterWin.cs
+++ b/Main/System/Boss/MainBossEnterWin.cs
@@ -14,8 +14,19 @@
 {
     [SerializeField] Text fbNameText;
     [SerializeField] Button CloseBtn;
+    [SerializeField] Button rankBtn;
 
 
+    protected override void InitComponent()
+    {
+        CloseBtn.AddListener(CloseWindow);
+        rankBtn.AddListener(()=>
+        { 
+            RankModel.Instance.QueryRankByPage(1);
+            UIManager.Instance.OpenWindow<MainBossRankWin>();
+        });
+    }
+
     protected override void OnPreOpen()
     {
 
diff --git a/Main/System/Boss/MainBossRankWin.cs b/Main/System/Boss/MainBossRankWin.cs
index 48679f6..6ed00d3 100644
--- a/Main/System/Boss/MainBossRankWin.cs
+++ b/Main/System/Boss/MainBossRankWin.cs
@@ -12,7 +12,7 @@
 
 public class MainBossRankWin : UIBase
 {
-  
+    // [SerializeField] List
 
     protected override void OnPreOpen()
     {
diff --git a/Main/System/DailyQuest/DailyQuestModel.cs b/Main/System/DailyQuest/DailyQuestModel.cs
index d517c5d..746b3fe 100644
--- a/Main/System/DailyQuest/DailyQuestModel.cs
+++ b/Main/System/DailyQuest/DailyQuestModel.cs
@@ -169,6 +169,11 @@
     {
         var QuestConfig = DailyQuestConfig.Get(id);
         var LVConfig = FuncOpenLVConfig.Get(QuestConfig.UnLockFuncID);
+        if (LVConfig == null)
+        { 
+            Debug.LogError($"DailyQuestConfig.Get({id}) == null");
+            return 9999999;
+        }
         int NeedLV = 0;
         if (LVConfig.LimitLV != 0)
         {
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 7fa90ba..97b94a3 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -28,6 +28,10 @@
     [SerializeField] Text awardCnt;
     [SerializeField] UIEffect taskEffect;
 
+
+    //鍏冲崱
+    [SerializeField] Button bossBtn;
+
     /// <summary>
     /// 鍒濆鍖栫粍浠�
     /// </summary>
@@ -35,6 +39,10 @@
     {
         avatarCell.button.AddListener(() => { });
         taskButton.AddListener(OnClickTaskButton);
+        bossBtn.AddListener(() =>
+        {
+            UIManager.Instance.OpenWindow<MainBossEnterWin>();
+        });
     }
 
 
diff --git a/Main/System/Store/StoreModel.cs b/Main/System/Store/StoreModel.cs
index 4b98aaa..b072931 100644
--- a/Main/System/Store/StoreModel.cs
+++ b/Main/System/Store/StoreModel.cs
@@ -1471,6 +1471,11 @@
             {
                 var redable = false;
                 var config = StoreConfig.Get(shopId);
+                if (config == null)
+                {
+                    Debug.LogError($"StoreConfig {shopId} is null");
+                    continue;
+                }
                 switch (config.ShopType)
                 {
                     case 8:

--
Gitblit v1.8.0