From 7ceccc591077b348613dcd1880408b82e2a183d4 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 04 十二月 2025 21:20:41 +0800
Subject: [PATCH] 0312 分包下载初版

---
 Main/System/AssetVersion/InGameDownLoad.cs                                                       |   66 +---
 Main/System/AssetVersion/AssetVersionUtility.cs                                                  |    1 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs      |   12 
 Main/System/AssetVersion/AssetVersion.cs                                                         |    5 
 Main/System/Guild/GuildBossManager.cs                                                            |   13 
 Main/System/AssetVersion/InGameDownLoadWin.cs                                                    |  357 ++++++++++++++-------------
 Main/Config/ConfigManager.cs                                                                     |    3 
 Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs                                        |    5 
 Main/System/Redpoint/MainRedDot.cs                                                               |    3 
 Main/Core/NetworkPackage/ServerPack/HA3_Function/HA319_tagMCPackDownloadRecord.cs                |   28 +-
 Main/Config/PartialConfigs/PriorBundleConfig.cs                                                  |   68 +---
 Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs.meta |   11 
 Main/System/GeneralConfig/GeneralDefine.cs                                                       |    6 
 Main/Config/Configs/priorbundleConfig.cs                                                         |    5 
 Main/System/AssetVersion/InGameDownLoadProgress.cs                                               |  144 +++++++++++
 Main/System/AssetVersion/InGameDownLoadProgress.cs.meta                                          |   11 
 16 files changed, 440 insertions(+), 298 deletions(-)

diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index 47c6024..c6aa9df 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -70,6 +70,7 @@
             typeof(OrderInfoConfig),
             typeof(PlayerAttrConfig),
             typeof(PlayerFaceConfig),
+            typeof(PriorBundleConfig),
             typeof(RandomNameConfig),
             typeof(SignInConfig),
             typeof(StoreConfig),
@@ -296,6 +297,8 @@
         ClearConfigDictionary<PlayerAttrConfig>();
         // 娓呯┖ PlayerFaceConfig 瀛楀吀
         ClearConfigDictionary<PlayerFaceConfig>();
+        // 娓呯┖ PriorBundleConfig 瀛楀吀
+        ClearConfigDictionary<PriorBundleConfig>();
         // 娓呯┖ RandomNameConfig 瀛楀吀
         ClearConfigDictionary<RandomNameConfig>();
         // 娓呯┖ SignInConfig 瀛楀吀
diff --git a/Main/Config/Configs/priorbundleConfig.cs b/Main/Config/Configs/priorbundleConfig.cs
index 752da22..a7cf198 100644
--- a/Main/Config/Configs/priorbundleConfig.cs
+++ b/Main/Config/Configs/priorbundleConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           YYL
-//    [  Date ]:           2025骞�9鏈�11鏃�
+//    [  Date ]:           Thursday, December 4, 2025
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -20,7 +20,6 @@
 	public string AssetABName;
 	public int AssetType;
 	public int Prior;
-	public int mapId;
 
     public override int LoadKey(string _key)
     {
@@ -39,8 +38,6 @@
 			int.TryParse(tables[2],out AssetType); 
 
 			int.TryParse(tables[3],out Prior); 
-
-			int.TryParse(tables[4],out mapId); 
         }
         catch (Exception exception)
         {
diff --git a/Main/Config/PartialConfigs/PriorBundleConfig.cs b/Main/Config/PartialConfigs/PriorBundleConfig.cs
index 8b03721..734624b 100644
--- a/Main/Config/PartialConfigs/PriorBundleConfig.cs
+++ b/Main/Config/PartialConfigs/PriorBundleConfig.cs
@@ -55,8 +55,6 @@
         switch (category)
         {
             case AssetVersion.AssetCategory.Scene:
-                if (fileName == "Map139_Zxt".ToLower())
-                    return 0;
                 return m_Scenes.ContainsKey(fileName) ? m_Scenes[fileName].Prior : 100;
             case AssetVersion.AssetCategory.Mob:
                 return m_Mobs.ContainsKey(fileName) ? m_Mobs[fileName].Prior : 101;
@@ -66,57 +64,35 @@
                 return m_Audios.ContainsKey(fileName) ? m_Audios[fileName].Prior : 103;
             case AssetVersion.AssetCategory.Video:
                 return m_Video.ContainsKey(fileName) ? m_Video[fileName].Prior : 104;
-//             case AssetVersion.AssetCategory.UI:
-//                 {
 
-// #if UNITY_EDITOR
-//                     if (m_UI.ContainsKey(fileName))
-//                     {
-//                         //鏈夐厤缃殑浼樺厛绾т负1鐨� 涔熶笉鍖呭惈鍦ㄥ寘鍐�
-//                         if (Launch.GetLaunchStage() != 0)
-//                         {
-//                             return m_UI[fileName].Prior;
-//                         }
-//                         else
-//                         { 
-//                             return 2;
-//                         }
-//                     }
-//                     return 0;
-// #else
-//                     return 0;
-                    //return m_UI.ContainsKey(fileName) ? m_UI[fileName].Prior : 0;
-// #endif
-
-                // }
             default:
                 return 0;
         }
     }
 
-    //鑾峰彇璧勬簮褰掑睘鐨勫湴鍥緄d
-    public static int GetAssetBelongToMap(AssetVersion.AssetCategory category, string fileName)
-    {
-        if (!categoryInited)
-        {
-            Init();
-        }
+    // //鑾峰彇璧勬簮褰掑睘鐨勫湴鍥緄d
+    // public static int GetAssetBelongToMap(AssetVersion.AssetCategory category, string fileName)
+    // {
+    //     if (!categoryInited)
+    //     {
+    //         Init();
+    //     }
 
-        fileName = fileName.ToLower();
-        switch (category)
-        {
-            case AssetVersion.AssetCategory.Scene:
-                return m_Scenes.ContainsKey(fileName) ? m_Scenes[fileName].mapId : 0;
-            case AssetVersion.AssetCategory.Mob:
-                return m_Mobs.ContainsKey(fileName) ? m_Mobs[fileName].mapId : 0;
-            case AssetVersion.AssetCategory.Effect:
-                return m_Effects.ContainsKey(fileName) ? m_Effects[fileName].mapId : 0;
-            case AssetVersion.AssetCategory.Audio:
-                return m_Audios.ContainsKey(fileName) ? m_Audios[fileName].mapId : 0;
-            default:
-                return 0;
-        }
-    }
+    //     fileName = fileName.ToLower();
+    //     switch (category)
+    //     {
+    //         case AssetVersion.AssetCategory.Scene:
+    //             return m_Scenes.ContainsKey(fileName) ? m_Scenes[fileName].mapId : 0;
+    //         case AssetVersion.AssetCategory.Mob:
+    //             return m_Mobs.ContainsKey(fileName) ? m_Mobs[fileName].mapId : 0;
+    //         case AssetVersion.AssetCategory.Effect:
+    //             return m_Effects.ContainsKey(fileName) ? m_Effects[fileName].mapId : 0;
+    //         case AssetVersion.AssetCategory.Audio:
+    //             return m_Audios.ContainsKey(fileName) ? m_Audios[fileName].mapId : 0;
+    //         default:
+    //             return 0;
+    //     }
+    // }
 
 
 }
\ No newline at end of file
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs
new file mode 100644
index 0000000..0128790
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+using System.Collections;
+
+// A3 19 鍒嗗寘涓嬭浇濂栧姳璁板綍 #tagMCPackDownloadRecord
+
+public class DTCA319_tagMCPackDownloadRecord : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack) {
+        base.Done(vNetPack);
+        HA319_tagMCPackDownloadRecord vNetData = vNetPack as HA319_tagMCPackDownloadRecord;
+        InGameDownLoad.Instance.UpdateRewardInfo(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs.meta
new file mode 100644
index 0000000..71b8cbe
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA319_tagMCPackDownloadRecord.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f8147ca59895aeb4b8cece6552fcdc46
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA319_tagMCPackDownloadRecord.cs b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA319_tagMCPackDownloadRecord.cs
index 5426a1b..1c88fde 100644
--- a/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA319_tagMCPackDownloadRecord.cs
+++ b/Main/Core/NetworkPackage/ServerPack/HA3_Function/HA319_tagMCPackDownloadRecord.cs
@@ -1,17 +1,17 @@
 using UnityEngine;
 using System.Collections;
 
-// A3 19 鍒嗗寘涓嬭浇濂栧姳璁板綍 #tagMCPackDownloadRecord
-
-public class HA319_tagMCPackDownloadRecord : GameNetPackBasic {
-    public byte Record;    //0-鏈鍙� 1-宸查鍙�	
-
-    public HA319_tagMCPackDownloadRecord () {
-        _cmd = (ushort)0xA319;
-    }
-
-    public override void ReadFromBytes (byte[] vBytes) {
-        TransBytes (out Record, vBytes, NetDataType.BYTE);
-    }
-
-}
+// A3 19 鍒嗗寘涓嬭浇濂栧姳璁板綍 #tagMCPackDownloadRecord
+
+public class HA319_tagMCPackDownloadRecord : GameNetPackBasic {
+    public byte Record;    // 0-鏈鍙� 1-宸查鍙�
+
+    public HA319_tagMCPackDownloadRecord () {
+        _cmd = (ushort)0xA319;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out Record, vBytes, NetDataType.BYTE);
+    }
+
+}
diff --git a/Main/System/AssetVersion/AssetVersion.cs b/Main/System/AssetVersion/AssetVersion.cs
index 4c40478..ea58d10 100644
--- a/Main/System/AssetVersion/AssetVersion.cs
+++ b/Main/System/AssetVersion/AssetVersion.cs
@@ -185,9 +185,8 @@
             else
             {
                 var category = GetAssetCategory();
-                // var prior = PriorBundleConfig.GetAssetPrior(category, AssetVersionUtility.DecodeFileName(m_FileName));
-                // return prior <= 1;
-                return false;
+                var prior = PriorBundleConfig.GetAssetPrior(category, AssetVersionUtility.DecodeFileName(m_FileName));
+                return prior <= 1;
             }
         }
         else
diff --git a/Main/System/AssetVersion/AssetVersionUtility.cs b/Main/System/AssetVersion/AssetVersionUtility.cs
index 0e21a00..5453d52 100644
--- a/Main/System/AssetVersion/AssetVersionUtility.cs
+++ b/Main/System/AssetVersion/AssetVersionUtility.cs
@@ -101,6 +101,7 @@
         {
             assetVersionsLocalMd5 = FileExtersion.GetStringMD5Hash(_result);
             var assetVersions = UpdateAssetVersions(_result);
+            PriorBundleConfig.LazyInit();
             BeginCheckAssets();
         }
         else
diff --git a/Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs b/Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs
index b4a44aa..976abbc 100644
--- a/Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs
+++ b/Main/System/AssetVersion/DownLoadAndDiscompressHotTask.cs
@@ -87,10 +87,7 @@
         step = Step.DownLoad;
 
         Co_StartDownLoad().Forget();
-        // SnxxzGame.Instance.StartCoroutine(Co_StartDownLoad());
-
-        // TODO YYL
-        // GameNotice.OpenGameNotice();
+        GameNotice.OpenGameNotice();
     }
 
     protected async UniTask Co_StartDownLoad()
diff --git a/Main/System/AssetVersion/InGameDownLoad.cs b/Main/System/AssetVersion/InGameDownLoad.cs
index 3a5965e..2edd531 100644
--- a/Main/System/AssetVersion/InGameDownLoad.cs
+++ b/Main/System/AssetVersion/InGameDownLoad.cs
@@ -3,6 +3,7 @@
 using UnityEngine;
 using System;
 using System.Text.RegularExpressions;
+using LitJson;
 
 
 public class InGameDownLoad : SingletonMonobehaviour<InGameDownLoad>
@@ -79,7 +80,7 @@
         }
     }
 
-    public List<Reward> rewards = new List<Reward>();
+    public int[][] rewards;
     public bool hasReward { get; private set; }//鏄惁鏈夊鍔�
     public string completeDownLoadAccount
     {
@@ -87,7 +88,7 @@
         set { LocalSave.SetString("InGameDownLoadCompleteAccount", value); }
     }
 
-    public Redpoint downLoadRedpoint = new Redpoint(116);
+    public Redpoint downLoadRedpoint = new Redpoint(MainRedDot.RedPoint_Download);
 
     private void Awake()
     {
@@ -151,16 +152,7 @@
         {
             var assetVersion = this.assets[i];
             totalSize += assetVersion.size;//缁熻璧勬簮鎬诲ぇ灏�
-            //缁熻鍦板浘涓撳睘鐨勮祫婧� TODO YYL
-            // var mapId = PriorBundleConfig.GetAssetBelongToMap(assetVersion.GetAssetCategory(), AssetVersionUtility.DecodeFileName(assetVersion.fileName));
-            // if (mapId != 0)
-            // {
-            //     if (!mapTasks.ContainsKey(mapId))
-            //     {
-            //         mapTasks[mapId] = new List<AssetVersion>();
-            //     }
-            //     mapTasks[mapId].Add(assetVersion);
-            // }
+
             //娣诲姞涓嬭浇浠诲姟
             var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), Language.fixPath, "/", assetVersion.relativePath);
             var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
@@ -179,15 +171,14 @@
         var categoryA = lhs.GetAssetCategory();
         var categoryB = rhs.GetAssetCategory();
 
-        // TODO YYL
-        // var priorA = PriorBundleConfig.GetAssetPrior(categoryA, AssetVersionUtility.DecodeFileName(lhs.fileName));
-        // var priorB = PriorBundleConfig.GetAssetPrior(categoryB, AssetVersionUtility.DecodeFileName(rhs.fileName));
+        var priorA = PriorBundleConfig.GetAssetPrior(categoryA, AssetVersionUtility.DecodeFileName(lhs.fileName));
+        var priorB = PriorBundleConfig.GetAssetPrior(categoryB, AssetVersionUtility.DecodeFileName(rhs.fileName));
 
-        // if (priorA != priorB)
-        // {
-        //     return priorA < priorB ? -1 : 1;
-        // }
-        // else
+        if (priorA != priorB)
+        {
+            return priorA < priorB ? -1 : 1;
+        }
+        else
         {
             var isManifestA = lhs.extersion == ".manifest";
             var isManifestB = rhs.extersion == ".manifest";
@@ -265,7 +256,7 @@
                     state = State.Prepared;
                 }
                 dominantState = Dominant.Whole;
-                // UIManager.Instance.OpenWindow<InGameDownLoadWin>();
+                UIManager.Instance.OpenWindow<InGameDownLoadWin>();
                 break;
         }
     }
@@ -314,7 +305,7 @@
         {
             if (dominantState == Dominant.None)
             {
-                RequestDownLoadReward(false);
+                // RequestDownLoadReward(false);
                 state = State.Completed;
             }
             else
@@ -340,11 +331,9 @@
 
     public void ParseRewardConfig()
     {
-        var rewardString = FuncConfigConfig.Get("DownReward").Numerical1;
-        var matches = Regex.Matches(rewardString, "(\\d+,\\d+,\\d+)");
-        for (int i = 0; i < matches.Count; i++)
+        if (rewards.IsNullOrEmpty())
         {
-            rewards.Add(new Reward(matches[i].Value));
+            rewards = JsonMapper.ToObject<int[][]>(FuncConfigConfig.Get("DownReward").Numerical1);
         }
     }
 
@@ -360,11 +349,11 @@
         downLoadRedpoint.state = state == State.Award ? RedPointState.Simple : RedPointState.None;
     }
 
-    public void RequestDownLoadReward(bool _manual)
+    public void RequestDownLoadReward()
     {
         var send = new CA504_tagCMPlayerGetReward();
         send.RewardType = 15;
-        send.DataEx = (byte)(_manual ? 0 : 1);
+        // send.DataEx = (byte)(_manual ? 0 : 1);
         GameNetSystem.Instance.SendInfo(send);
     }
 
@@ -667,26 +656,5 @@
         Whole = 2,
     }
 
-    #region 鐧诲綍涓嬭浇鐣岄潰 DownLoadWin
-    // 澧炲姞涓嬭浇濂栧姳 鏍规嵁鏍囪瘑鍐冲畾澶氭鍙戞斁;娉ㄦ剰涓嶈涓庢父鎴忓唴鐨勫畬鏁翠笅杞芥贩娣�
-    // 鍚庣画鏀规垚appversion_new澧炲姞鎵╁睍淇℃伅杩斿洖涓嬭浇鏍囪瘑锛岀敤浜庢帶鍒跺綋鍓嶆槸鍚︽樉绀哄鍔�,姝ゅ棣栧寘杩樻湭鍖呭惈鍥剧墖璧勬簮
 
-    public int downloadMark = 0;
-
-    public bool IsShowDownloadAward()
-    {
-        int downloadMark = 0;
-        int.TryParse(VersionUtility.Instance.versionInfo.ResourceAward, out downloadMark);
-        var mark = LocalSave.GetInt("downloadMark");
-        return downloadMark > mark;
-
-    }
-
-    //涓嬭浇瀹屾瘯鎴愬姛鐧诲綍娓告垙鍗冲彲璁剧疆
-    public void SetDownloadMark()
-    {
-        LocalSave.SetInt("downloadMark", int.Parse(FuncConfigConfig.Get("DownReward").Numerical4));
-    }
-
-    #endregion
 }
\ No newline at end of file
diff --git a/Main/System/AssetVersion/InGameDownLoadProgress.cs b/Main/System/AssetVersion/InGameDownLoadProgress.cs
new file mode 100644
index 0000000..884fb7e
--- /dev/null
+++ b/Main/System/AssetVersion/InGameDownLoadProgress.cs
@@ -0,0 +1,144 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Wednesday, May 23, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+
+
+public class InGameDownLoadProgress : MonoBehaviour
+{
+    [SerializeField] Text m_ProgressText;
+    [SerializeField] Button m_ViewDownLoad;
+
+    private void Awake()
+    {
+        if (!InGameDownLoad.Instance.hasReward
+                && InGameDownLoad.Instance.completeDownLoadAccount == PlayerDatas.Instance.baseData.AccID)
+        {
+            m_ProgressText.SetActive(true);
+            m_ProgressText.text = "100%";
+            this.SetActive(true);
+        }
+        else if (InGameDownLoad.Instance.dominantState != InGameDownLoad.Dominant.None)
+        {
+            this.SetActive(true);
+            m_ProgressText.SetActive(true);
+            if (InGameDownLoad.Instance.state != InGameDownLoad.State.Completed)
+            {
+                m_ProgressText.text = "100%";
+            }
+            else
+            {
+                var progress = Mathf.RoundToInt(InGameDownLoad.Instance.progress * 100);
+                m_ProgressText.text = StringUtility.Contact(progress, "%");
+            }
+        }
+        else
+        {
+            this.SetActive(false);
+        }
+
+        InGameDownLoad.Instance.downLoadStateChangeEvent += OnDownLoadStateChange;
+        InGameDownLoad.Instance.dominantDownLoadEvent += OnDownLoadDominantStateChange;
+        m_ViewDownLoad.AddListener(OpenInGameDownloadWin);
+    }
+
+    private void OnEnable()
+    {
+        UpdateDownLoadProgress();
+        GlobalTimeEvent.Instance.secondEvent += OnPerSecond;
+    }
+
+    private void OnDisable()
+    {
+        GlobalTimeEvent.Instance.secondEvent -= OnPerSecond;
+    }
+
+    private void OnDestroy()
+    {
+        m_ViewDownLoad.RemoveAllListeners();
+    }
+
+    private void OnDownLoadDominantStateChange(InGameDownLoad.Dominant _dominant)
+    {
+        UpdateDownLoadProgress();
+        this.SetActive(InGameDownLoad.Instance.dominantState != InGameDownLoad.Dominant.None);
+    }
+
+    private void OnDownLoadStateChange(InGameDownLoad.State _step)
+    {
+        switch (_step)
+        {
+            case InGameDownLoad.State.Completed:
+                this.SetActive(false);
+                break;
+            case InGameDownLoad.State.None:
+            case InGameDownLoad.State.Prepared:
+            case InGameDownLoad.State.DownLoad:
+                if (InGameDownLoad.Instance.dominantState != InGameDownLoad.Dominant.None)
+                {
+                    UpdateDownLoadProgress();
+                    this.SetActive(true);
+                }
+                else
+                {
+                    this.SetActive(false);
+                }
+
+                m_ProgressText.SetActive(true);
+                break;
+            case InGameDownLoad.State.Award:
+                this.SetActive(true);
+                m_ProgressText.SetActive(true);
+                m_ProgressText.text = "100%";
+                break;
+        }
+    }
+
+    private void OnPerSecond()
+    {
+        UpdateDownLoadProgress();
+    }
+
+    private void UpdateDownLoadProgress()
+    {
+        if (m_ProgressText != null)
+        {
+            if (InGameDownLoad.Instance.state == InGameDownLoad.State.Award)
+            {
+                m_ProgressText.text = "100%";
+            }
+            else
+            {
+                var progress = Mathf.RoundToInt(InGameDownLoad.Instance.progress * 100);
+                m_ProgressText.text = StringUtility.Contact(Mathf.Clamp(progress, 0, 99), "%");
+            }
+        }
+    }
+
+    private void OpenInGameDownloadWin()
+    {
+        switch (InGameDownLoad.Instance.state)
+        {
+            case InGameDownLoad.State.DownLoad:
+            case InGameDownLoad.State.None:
+            case InGameDownLoad.State.Pause:
+            case InGameDownLoad.State.Prepared:
+                UIManager.Instance.OpenWindow<InGameDownLoadWin>();
+                break;
+            case InGameDownLoad.State.Award:
+                UIManager.Instance.OpenWindow<InGameDownLoadWin>();
+                break;
+            case InGameDownLoad.State.Completed:
+                break;
+        }
+
+    }
+
+}
+
+
+
+
diff --git a/Main/System/AssetVersion/InGameDownLoadProgress.cs.meta b/Main/System/AssetVersion/InGameDownLoadProgress.cs.meta
new file mode 100644
index 0000000..4e259c1
--- /dev/null
+++ b/Main/System/AssetVersion/InGameDownLoadProgress.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5cdfb6559ac6678419c11ea004a5dd19
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/AssetVersion/InGameDownLoadWin.cs b/Main/System/AssetVersion/InGameDownLoadWin.cs
index 2725c8c..0c6fc46 100644
--- a/Main/System/AssetVersion/InGameDownLoadWin.cs
+++ b/Main/System/AssetVersion/InGameDownLoadWin.cs
@@ -10,196 +10,205 @@
 using UnityEngine.UI;
 
 
-    public class InGameDownLoadWin : UIBase
+public class InGameDownLoadWin : UIBase
+{
+    [SerializeField] RectTransform m_ContainerHint;
+    [SerializeField] ItemCell[] items;
+    [SerializeField] RectTransform[] m_RewardGotSigns;
+    [SerializeField] RichText m_Content;
+    [SerializeField] Button m_StartDownLoad;
+    [SerializeField] Button m_PauseDownLoad;
+    [SerializeField] Button m_Award;
+
+    [SerializeField] Transform m_ContainerProgress;
+    [SerializeField] SmoothSlider m_ProgressSlider;
+    [SerializeField] Text m_Progress;
+    [SerializeField] Text m_DownLoadSpeed;
+    // [SerializeField] ToggleButton downLoadGo; //鍔犻�熶笅杞�
+    float timer = 1f;
+
+    #region Built-in
+
+    protected override void InitComponent()
     {
-        [SerializeField] RectTransform m_RewardGotSign;
-        // [SerializeField] RewardPreviewGroup m_RewardGroup;
-        [SerializeField] RectTransform m_ContainerHint;
-        [SerializeField] RichText m_Content;
-        [SerializeField] Button m_StartDownLoad;
-        [SerializeField] Button m_PauseDownLoad;
-        [SerializeField] Button m_Award;
-        [SerializeField] Button m_Close;
+        m_StartDownLoad.AddListener(StartDownLoad);
+        m_PauseDownLoad.AddListener(PauseDownLoad);
+        m_Award.AddListener(Award);
+        // downLoadGo.SetListener(() => {
+        //     downLoadGo.isOn = !downLoadGo.isOn;
+        //     InGameDownLoad.Instance.downLoadGo = downLoadGo.isOn;
+        //     DownloadHotMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask();
+        // });
+    }
 
-        [SerializeField] Transform m_ContainerProgress;
-        [SerializeField] SmoothSlider m_ProgressSlider;
-        [SerializeField] Text m_Progress;
-        [SerializeField] Text m_DownLoadSpeed;
-        [SerializeField] ToggleButton downLoadGo; //鍔犻�熶笅杞�
-        float timer = 1f;
-
-        #region Built-in
-
-        protected override void InitComponent()
+    protected override void OnPreOpen()
+    {
+        InGameDownLoad.Instance.ParseRewardConfig();
+        timer = 1f;
+        for (int i = 0;  i < items.Length; i++)
         {
-            m_StartDownLoad.AddListener(StartDownLoad);
-            m_PauseDownLoad.AddListener(PauseDownLoad);
-            m_Award.AddListener(Award);
-            m_Close.AddListener(CloseWindow);
-            downLoadGo.SetListener(() => {
-                downLoadGo.isOn = !downLoadGo.isOn;
-                InGameDownLoad.Instance.downLoadGo = downLoadGo.isOn;
-                DownloadHotMgr.MaxDownLoadTask = InGameDownLoad.Instance.GetMaxTask();
-            });
-        }
-
-        protected override void OnPreOpen()
-        {
-            timer = 1f;
-            m_RewardGotSign.SetActive(InGameDownLoad.Instance.hasReward);
-
-            // var items = new List<Item>();
-            // foreach (var reward in InGameDownLoad.Instance.rewards)
-            // {
-            //     items.Add(new Item(reward.id, reward.count));
-            // }
-
-            // m_RewardGroup.Display(items);
-            OnDownLoadStepChange(InGameDownLoad.Instance.state);
-            downLoadGo.isOn = InGameDownLoad.Instance.downLoadGo;
-        }
-
-        protected override void OnOpen()
-        {
-            InGameDownLoad.Instance.downLoadStateChangeEvent += OnDownLoadStepChange;
-        }
-
-        protected override void OnPreClose()
-        {
-            InGameDownLoad.Instance.downLoadStateChangeEvent -= OnDownLoadStepChange;
-        }
-
-        protected override void OnClose()
-        {
-        }
-        #endregion
-
-        private void OnDownLoadStepChange(InGameDownLoad.State _step)
-        {
-            m_Award.SetActive(_step == InGameDownLoad.State.Award);
-            m_PauseDownLoad.SetActive(_step == InGameDownLoad.State.DownLoad);
-            m_StartDownLoad.SetActive(_step == InGameDownLoad.State.Prepared || _step == InGameDownLoad.State.Pause);
-            m_ContainerProgress.SetActive(_step == InGameDownLoad.State.DownLoad || _step == InGameDownLoad.State.Pause);
-
-            if (_step != InGameDownLoad.State.DownLoad)
+            if (i < InGameDownLoad.Instance.rewards.Length)
             {
-                m_DownLoadSpeed.text = string.Empty;
-            }
-
-            if (_step == InGameDownLoad.State.Prepared || _step == InGameDownLoad.State.Award)
-            {
-                m_ContainerHint.SetActive(true);
-                DisplayHintContent();
+                items[i].SetActive(true);
+                int itemID = InGameDownLoad.Instance.rewards[i][0];
+                items[i].Init(new ItemCellModel(InGameDownLoad.Instance.rewards[i][0], false, InGameDownLoad.Instance.rewards[i][1]));
+                items[i].button.AddListener(() => {
+                    ItemTipUtility.Show(itemID);
+                });
+                m_RewardGotSigns[i].SetActive(InGameDownLoad.Instance.hasReward);
             }
             else
             {
-                m_ContainerHint.SetActive(false);
+                items[i].SetActive(false);
             }
+
         }
 
-        protected void LateUpdate()
-        {
-            var step = InGameDownLoad.Instance.state;
-            if (step == InGameDownLoad.State.DownLoad)
-            {
-                timer += Time.deltaTime;
-                if (timer > 1f)
-                {
-                    timer -= 1f;
-                    m_ProgressSlider.value = InGameDownLoad.Instance.progress;
-                    var totalSizeString = ((float)InGameDownLoad.Instance.showTotalSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
-                    var downLoadedSize = Mathf.Clamp(InGameDownLoad.Instance.showDownLoadedSize, 0, InGameDownLoad.Instance.showTotalSize - 1);
-                    var downLoadedSizeString = ((float)downLoadedSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
-                    m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSizeString, "M", "/", totalSizeString, "M"));
+        OnDownLoadStepChange(InGameDownLoad.Instance.state);
+        // downLoadGo.isOn = InGameDownLoad.Instance.downLoadGo;
+    }
 
-                    if (InGameDownLoad.Instance.showDownLoadedSize >= InGameDownLoad.Instance.showTotalSize)
-                    {
-                        m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10), "KB/S");
-                    }
-                    else
-                    {
-                        m_DownLoadSpeed.text = DownloadHotMgr.Instance.SpeedFormat;
-                    }
+    protected override void OnOpen()
+    {
+        InGameDownLoad.Instance.downLoadStateChangeEvent += OnDownLoadStepChange;
+    }
+
+    protected override void OnPreClose()
+    {
+        InGameDownLoad.Instance.downLoadStateChangeEvent -= OnDownLoadStepChange;
+    }
+
+    protected override void OnClose()
+    {
+    }
+    #endregion
+
+    private void OnDownLoadStepChange(InGameDownLoad.State _step)
+    {
+        m_Award.SetActive(_step == InGameDownLoad.State.Award && !InGameDownLoad.Instance.hasReward);
+        m_PauseDownLoad.SetActive(_step == InGameDownLoad.State.DownLoad);
+        m_StartDownLoad.SetActive(_step == InGameDownLoad.State.Prepared || _step == InGameDownLoad.State.Pause);
+        m_ContainerProgress.SetActive(_step == InGameDownLoad.State.DownLoad || _step == InGameDownLoad.State.Pause);
+
+        if (_step != InGameDownLoad.State.DownLoad)
+        {
+            m_DownLoadSpeed.text = string.Empty;
+        }
+
+        if (_step == InGameDownLoad.State.Prepared || _step == InGameDownLoad.State.Award)
+        {
+            m_ContainerHint.SetActive(true);
+            DisplayHintContent();
+        }
+        else
+        {
+            m_ContainerHint.SetActive(false);
+        }
+    }
+
+    protected void LateUpdate()
+    {
+        var step = InGameDownLoad.Instance.state;
+        if (step == InGameDownLoad.State.DownLoad)
+        {
+            timer += Time.deltaTime;
+            if (timer > 1f)
+            {
+                timer -= 1f;
+                m_ProgressSlider.value = InGameDownLoad.Instance.progress;
+                var totalSizeString = ((float)InGameDownLoad.Instance.showTotalSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
+                var downLoadedSize = Mathf.Clamp(InGameDownLoad.Instance.showDownLoadedSize, 0, InGameDownLoad.Instance.showTotalSize - 1);
+                var downLoadedSizeString = ((float)downLoadedSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
+                m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSizeString, "M", "/", totalSizeString, "M"));
+
+                if (InGameDownLoad.Instance.showDownLoadedSize >= InGameDownLoad.Instance.showTotalSize)
+                {
+                    m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10), "KB/S");
+                }
+                else
+                {
+                    m_DownLoadSpeed.text = DownloadHotMgr.Instance.SpeedFormat;
                 }
             }
         }
-
-        private void DisplayHintContent()
-        {
-            var step = InGameDownLoad.Instance.state;
-
-            switch (step)
-            {
-                case InGameDownLoad.State.Prepared:
-                    var totalCount = InGameDownLoad.Instance.showTotalCount;
-                    var totalSize = InGameDownLoad.Instance.showTotalSize;
-                    if (totalSize > InGameDownLoad.BYTE_PER_MILLIONBYTE)
-                    {
-                        var sizeDescription = ((float)totalSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
-                        m_Content.text = Language.GetFromLocal(19, sizeDescription);
-                    }
-                    else
-                    {
-                        var sizeDescription = ((float)totalSize / InGameDownLoad.BYTE_PER_KILOBYTE).ToString("f1");
-                        m_Content.text = Language.GetFromLocal(20, sizeDescription);
-                    }
-                    break;
-                case InGameDownLoad.State.DownLoad:
-                    m_Content.text = Language.GetFromLocal(3);
-                    break;
-                case InGameDownLoad.State.Pause:
-                    m_Content.text = Language.GetFromLocal(21);
-                    break;
-                case InGameDownLoad.State.Award:
-                    m_Content.text = Language.GetFromLocal(25);
-                    break;
-            }
-        }
-
-        private void StartDownLoad()
-        {
-            timer = 1f;
-            switch (InGameDownLoad.Instance.state)
-            {
-                case InGameDownLoad.State.Prepared:
-                case InGameDownLoad.State.Pause:
-                    if (Application.internetReachability == NetworkReachability.NotReachable)
-                    {
-                        ServerTipDetails.DisplayNormalTip(Language.GetFromLocal(24));
-                    }
-                    else
-                    {
-                        InGameDownLoad.Instance.StartDownLoad();
-                        CloseWindow();
-                    }
-                    break;
-                default:
-                    CloseWindow();
-                    break;
-            }
-        }
-
-        private void PauseDownLoad()
-        {
-            timer = 1f;
-            switch (InGameDownLoad.Instance.state)
-            {
-                case InGameDownLoad.State.DownLoad:
-                    InGameDownLoad.Instance.Pause();
-                    break;
-                default:
-                    break;
-            }
-        }
-
-        private void Award()
-        {
-            InGameDownLoad.Instance.RequestDownLoadReward(true);
-            UIManager.Instance.CloseWindow<InGameDownLoadWin>();
-        }
-
     }
 
+    private void DisplayHintContent()
+    {
+        var step = InGameDownLoad.Instance.state;
+
+        switch (step)
+        {
+            case InGameDownLoad.State.Prepared:
+                var totalCount = InGameDownLoad.Instance.showTotalCount;
+                var totalSize = InGameDownLoad.Instance.showTotalSize;
+                if (totalSize > InGameDownLoad.BYTE_PER_MILLIONBYTE)
+                {
+                    var sizeDescription = ((float)totalSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
+                    m_Content.text = Language.GetFromLocal(19, sizeDescription);
+                }
+                else
+                {
+                    var sizeDescription = ((float)totalSize / InGameDownLoad.BYTE_PER_KILOBYTE).ToString("f1");
+                    m_Content.text = Language.GetFromLocal(20, sizeDescription);
+                }
+                break;
+            case InGameDownLoad.State.DownLoad:
+                m_Content.text = Language.GetFromLocal(3);
+                break;
+            case InGameDownLoad.State.Pause:
+                m_Content.text = Language.GetFromLocal(21);
+                break;
+            case InGameDownLoad.State.Award:
+                m_Content.text = Language.GetFromLocal(25);
+                break;
+        }
+    }
+
+    private void StartDownLoad()
+    {
+        timer = 1f;
+        switch (InGameDownLoad.Instance.state)
+        {
+            case InGameDownLoad.State.Prepared:
+            case InGameDownLoad.State.Pause:
+                if (Application.internetReachability == NetworkReachability.NotReachable)
+                {
+                    ServerTipDetails.DisplayNormalTip(Language.GetFromLocal(24));
+                }
+                else
+                {
+                    InGameDownLoad.Instance.StartDownLoad();
+                    CloseWindow();
+                }
+                break;
+            default:
+                CloseWindow();
+                break;
+        }
+    }
+
+    private void PauseDownLoad()
+    {
+        timer = 1f;
+        switch (InGameDownLoad.Instance.state)
+        {
+            case InGameDownLoad.State.DownLoad:
+                InGameDownLoad.Instance.Pause();
+                break;
+            default:
+                break;
+        }
+    }
+
+    private void Award()
+    {
+        InGameDownLoad.Instance.RequestDownLoadReward();
+        UIManager.Instance.CloseWindow<InGameDownLoadWin>();
+    }
+
+}
+
 
 
 
diff --git a/Main/System/GeneralConfig/GeneralDefine.cs b/Main/System/GeneralConfig/GeneralDefine.cs
index b835f31..1bc4cd7 100644
--- a/Main/System/GeneralConfig/GeneralDefine.cs
+++ b/Main/System/GeneralConfig/GeneralDefine.cs
@@ -23,8 +23,7 @@
     public static int rechargeRedpointMinLv { get; private set; }
 
     
-    public static List<int> inGameDownLoadLevelCheckPoints = null;
-    public static List<int> inGameDownLoadTaskCheckPoints = null;
+    public static List<int> inGameDownLoadLevelCheckPoints = new List<int>();
     public static int inGameDownLoadHighLevel { get; private set; }
     
     public static Dictionary<int, List<int>> itemPutInPackDict { get; private set; }
@@ -84,6 +83,9 @@
 
             config = FuncConfigConfig.Get("MainRightFunc");
             mainRightFuncOpenFuncID = int.Parse(config.Numerical1);
+
+            inGameDownLoadLevelCheckPoints = new List<int>(GetIntArray("InGameDownLoad"));
+            inGameDownLoadHighLevel = GetInt("InGameDownLoad", 2);
         }
         catch (Exception ex)
         {
diff --git a/Main/System/Guild/GuildBossManager.cs b/Main/System/Guild/GuildBossManager.cs
index 107246f..89d1f23 100644
--- a/Main/System/Guild/GuildBossManager.cs
+++ b/Main/System/Guild/GuildBossManager.cs
@@ -1,8 +1,14 @@
 
+using System.Collections.Generic;
 using LitJson;
 
 public class GuildBossManager : GameSystemManager<GuildBossManager>
 {
+
+    public Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction> bossActions = new Dictionary<int, HA513_tagMCFamilyActionInfo.tagMCFamilyAction>();
+
+
+
     //閰嶇疆
     public int initSuperHitRate;
     public int[] bzAddAttrs;
@@ -81,7 +87,6 @@
         return null;
     }
 
-
     // 鑾峰彇鍏細涓殑浼ゅ璁板綍鍋氭帓鍚�
     public bool UpdateGuildBossInfo(HA513_tagMCFamilyActionInfo vNetData)
     {
@@ -90,6 +95,12 @@
             return false;
         }
 
+        for (int i = 0; i < vNetData.Count; i++)
+        {
+            bossActions[(int)vNetData.FamilyActionList[i].Value1] = vNetData.FamilyActionList[i];
+        }
+
+
         return true;
     }
 
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index 0ff1c94..ec63ea3 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -71,7 +71,8 @@
     public const int RedPoint_AutoBattleKey = 110;
     Redpoint autoBattleRedpoint = new Redpoint(RedPoint_AutoBattleKey);
 
-    
+    public const int RedPoint_Download = 116;
+
     //姝﹀皢鍗�
     public const int HeroCardRedpoint = 200;
     public Redpoint HeroListRedpoint = new Redpoint(MainHerosRedpoint, HeroCardRedpoint);

--
Gitblit v1.8.0