From 91f6a3eb7961367d942b232ed3ea8810a6bf488a Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 05 十一月 2025 21:32:12 +0800
Subject: [PATCH] 236 子 【福利内容】每周任务

---
 Main/Config/PartialConfigs/ZhanlingConfig.cs.meta                                 |   11 
 Main/Config/Configs/ZhanlingConfig.cs.meta                                        |   11 
 Main/System/DayMission/DayMissionManager.cs                                       |    6 
 Main/Config/ConfigManager.cs                                                      |    5 
 Main/System/BattlePass/BattlePassManager.Week.cs.meta                             |   11 
 Main/System/DayMission/WeekBattlePassCell.cs                                      |   88 +++++++
 Main/System/DayMission/WeekBattlePassCell.cs.meta                                 |   11 
 Main/System/DayMission/DayMissionBaseWin.cs                                       |    3 
 Main/System/DayMission/WeekBattlePassWin.cs                                       |  116 +++++++++
 Main/System/BattlePass/BattlePassManager.Week.cs                                  |   31 ++
 Main/System/BattlePass/BattlePassManager.cs.meta                                  |   11 
 Main/System/DayMission/WeekBattlePassWin.cs.meta                                  |   11 
 Main/System/BattlePass.meta                                                       |    8 
 Main/System/BattlePass/BattlePassManager.cs                                       |  277 +++++++++++++++++++++++
 Main/Config/Configs/ZhanlingConfig.cs                                             |   56 ++++
 Main/Config/PartialConfigs/ZhanlingConfig.cs                                      |   25 ++
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB120_tagMCZhanlingInfo.cs |    7 
 Main/Main.cs                                                                      |    1 
 18 files changed, 681 insertions(+), 8 deletions(-)

diff --git a/Main/Config/ConfigManager.cs b/Main/Config/ConfigManager.cs
index bf3639b..581039f 100644
--- a/Main/Config/ConfigManager.cs
+++ b/Main/Config/ConfigManager.cs
@@ -75,7 +75,8 @@
             typeof(TreasureSetConfig),
             typeof(TreeLVConfig),
             typeof(WindowSearchConfig),
-            typeof(XBGetItemConfig)
+            typeof(XBGetItemConfig),
+            typeof(ZhanlingConfig)
         };
 
 #if UNITY_EDITOR
@@ -301,6 +302,8 @@
         ClearConfigDictionary<WindowSearchConfig>();
         // 娓呯┖ XBGetItemConfig 瀛楀吀
         ClearConfigDictionary<XBGetItemConfig>();
+        // 娓呯┖ ZhanlingConfig 瀛楀吀
+        ClearConfigDictionary<ZhanlingConfig>();
     }
 
 #if UNITY_EDITOR
diff --git a/Main/Config/Configs/ZhanlingConfig.cs b/Main/Config/Configs/ZhanlingConfig.cs
new file mode 100644
index 0000000..1be0f26
--- /dev/null
+++ b/Main/Config/Configs/ZhanlingConfig.cs
@@ -0,0 +1,56 @@
+锘�//--------------------------------------------------------
+//    [Author]:           YYL
+//    [  Date ]:           Tuesday, November 4, 2025
+//--------------------------------------------------------
+
+using System.Collections.Generic;
+using System;
+using UnityEngine;
+using LitJson;
+
+public partial class ZhanlingConfig : ConfigBase<int, ZhanlingConfig>
+{
+    static ZhanlingConfig()
+    {
+        // 璁块棶杩囬潤鎬佹瀯閫犲嚱鏁�
+        visit = true; 
+    }
+
+    public int ZhanlingId;
+	public int ZhanlingType;
+	public int NeedValue;
+	public int RewardIndex;
+	public int[][] FreeRewardItemList;
+	public int[][] ZLRewardItemList;
+	public int[][] ZLRewardItemListH;
+
+    public override int LoadKey(string _key)
+    {
+        int key = GetKey(_key);
+        return key;
+    }
+
+    public override void LoadConfig(string input)
+    {
+        try {
+        string[] tables = input.Split('\t');
+        int.TryParse(tables[0],out ZhanlingId); 
+
+			int.TryParse(tables[1],out ZhanlingType); 
+
+			int.TryParse(tables[2],out NeedValue); 
+
+			int.TryParse(tables[3],out RewardIndex); 
+
+			FreeRewardItemList = JsonMapper.ToObject<int[][]>(tables[4].Replace("(", "[").Replace(")", "]")); 
+
+			ZLRewardItemList = JsonMapper.ToObject<int[][]>(tables[5].Replace("(", "[").Replace(")", "]")); 
+
+			ZLRewardItemListH = JsonMapper.ToObject<int[][]>(tables[6].Replace("(", "[").Replace(")", "]")); 
+        }
+        catch (Exception exception)
+        {
+            Debug.LogError(exception);
+        }
+    }
+}
diff --git a/Main/Config/Configs/ZhanlingConfig.cs.meta b/Main/Config/Configs/ZhanlingConfig.cs.meta
new file mode 100644
index 0000000..82d4398
--- /dev/null
+++ b/Main/Config/Configs/ZhanlingConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0a982bd9a3eaef84fa25269ec4301050
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Config/PartialConfigs/ZhanlingConfig.cs b/Main/Config/PartialConfigs/ZhanlingConfig.cs
new file mode 100644
index 0000000..f7335b7
--- /dev/null
+++ b/Main/Config/PartialConfigs/ZhanlingConfig.cs
@@ -0,0 +1,25 @@
+using System.Collections.Generic;
+public partial class ZhanlingConfig : ConfigBase<int, ZhanlingConfig>
+{
+    //鎴樹护绫诲瀷: 鎵�闇�鍊� :ZhanlingId
+    static Dictionary<int, Dictionary<int, int>> typeToIDDict = new Dictionary<int, Dictionary<int, int>>();
+    
+    protected override void OnConfigParseCompleted()
+    {
+        if (!typeToIDDict.ContainsKey(ZhanlingType))
+        {
+            typeToIDDict[ZhanlingType] = new Dictionary<int, int>();
+        }
+        typeToIDDict[ZhanlingType][NeedValue] = ZhanlingId;
+    }
+
+    public static Dictionary<int, int> GetTypeToIDDict(int zhanLingType)
+    {
+        return typeToIDDict[zhanLingType];
+    }
+
+    public static Dictionary<int, Dictionary<int, int>> GetAllTypeToIDListDict()
+    {
+        return typeToIDDict;
+    }
+}
diff --git a/Main/Config/PartialConfigs/ZhanlingConfig.cs.meta b/Main/Config/PartialConfigs/ZhanlingConfig.cs.meta
new file mode 100644
index 0000000..78107e3
--- /dev/null
+++ b/Main/Config/PartialConfigs/ZhanlingConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8aa62178ddc66b2479b841083ee2b290
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB120_tagMCZhanlingInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB120_tagMCZhanlingInfo.cs
index a62b0ca..ecb46c1 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB120_tagMCZhanlingInfo.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB120_tagMCZhanlingInfo.cs
@@ -1,11 +1,12 @@
-using UnityEngine;
-using System.Collections;
-
+using UnityEngine;
+using System.Collections;
+
 // B1 20 鎴樹护淇℃伅 #tagMCZhanlingInfo
 
 public class DTCB120_tagMCZhanlingInfo : DtcBasic {
     public override void Done(GameNetPackBasic vNetPack) {
         base.Done(vNetPack);
         HB120_tagMCZhanlingInfo vNetData = vNetPack as HB120_tagMCZhanlingInfo;
+        BattlePassManager.Instance.UpdateBattlePassInfo(vNetData);
     }
 }
diff --git a/Main/Main.cs b/Main/Main.cs
index 2568c99..88c6ada 100644
--- a/Main/Main.cs
+++ b/Main/Main.cs
@@ -82,6 +82,7 @@
         managers.Add(BoneFieldManager.Instance);
         managers.Add(ArenaManager.Instance);
         managers.Add(DayMissionManager.Instance);
+        managers.Add(BattlePassManager.Instance);
         
         foreach (var manager in managers)
         {
diff --git a/Main/System/BattlePass.meta b/Main/System/BattlePass.meta
new file mode 100644
index 0000000..6371536
--- /dev/null
+++ b/Main/System/BattlePass.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7f66ce03cd8564847bcbc69378d900d9
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/BattlePass/BattlePassManager.Week.cs b/Main/System/BattlePass/BattlePassManager.Week.cs
new file mode 100644
index 0000000..d8abbc0
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassManager.Week.cs
@@ -0,0 +1,31 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+using System.Linq;
+
+//鍛ㄦ垬浠�
+public partial class BattlePassManager : GameSystemManager<BattlePassManager>
+{
+    public const int WeekBattlePassType = 6;
+
+    Redpoint redpoint = new Redpoint(MainRedDot.RedPoint_DailyKey, MainRedDot.RedPoint_WeekBPFuncKey);
+    void UpdateWeekRedPoint()
+    {
+        redpoint.state = RedPointState.None;
+        //璐拱锛屾椿璺�
+        battlePassDataDict.TryGetValue(WeekBattlePassType, out BattlePassData battlePassData);
+        if (battlePassData == null) return;
+
+
+        if (HasAnyAward(WeekBattlePassType, (int)battlePassData.value1))
+        {
+            redpoint.state = RedPointState.Simple;
+        }
+
+    }
+
+
+
+}
+
diff --git a/Main/System/BattlePass/BattlePassManager.Week.cs.meta b/Main/System/BattlePass/BattlePassManager.Week.cs.meta
new file mode 100644
index 0000000..a264966
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassManager.Week.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ed678a9060fddbf41adb9d9102d62514
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/BattlePass/BattlePassManager.cs b/Main/System/BattlePass/BattlePassManager.cs
new file mode 100644
index 0000000..173a2fd
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassManager.cs
@@ -0,0 +1,277 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+using System.Linq;
+
+
+public partial class BattlePassManager : GameSystemManager<BattlePassManager>
+{
+    //鎴樹护绫诲瀷锛氭垬浠ゆ暟鎹�
+    Dictionary<int, BattlePassData> battlePassDataDict = new Dictionary<int, BattlePassData>();
+    public event Action<int> BattlePassDataUpdateEvent;
+
+    Dictionary<int, int[]> buyZhanlingTypeDict = new Dictionary<int, int[]>();
+
+    public override void Init()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        ParseConfig();
+    }
+
+    public override void Release()
+    {
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
+    }
+
+    void OnBeforePlayerDataInitialize()
+    {
+        battlePassDataDict.Clear();
+    }
+
+    void ParseConfig()
+    {
+        var config = FuncConfigConfig.Get("Zhanling");
+        buyZhanlingTypeDict = ConfigParse.ParseIntArrayDict(config.Numerical1);
+    }
+
+
+    public void UpdateBattlePassInfo(HB120_tagMCZhanlingInfo netPack)
+    {
+        if (!battlePassDataDict.ContainsKey(netPack.ZhanlingType))
+        {
+            battlePassDataDict[netPack.ZhanlingType] = new BattlePassData();
+        }
+
+        BattlePassData battlePassData = battlePassDataDict[netPack.ZhanlingType];
+        battlePassData.isActivite = netPack.IsActivite;
+        battlePassData.isActiviteH = netPack.IsActiviteH;
+        battlePassData.allFinishTime = netPack.AllFinishTime;
+        battlePassData.value1 = netPack.Value1;
+
+        for (int i = 0; i < netPack.RewardCount; i++)
+        {
+            HB120_tagMCZhanlingInfo.tagMCZhanling reward = netPack.RewardList[i];
+            if (!battlePassData.battlePassCellDict.ContainsKey((int)reward.NeedValue))
+            {
+                battlePassData.battlePassCellDict[(int)reward.NeedValue] = new BattlePassCell();
+            }
+
+            BattlePassCell battlePassCell = battlePassData.battlePassCellDict[(int)reward.NeedValue];
+            battlePassCell.freeRewardState = reward.FreeRewardState;
+            battlePassCell.zlRewardState = reward.ZLRewardState;
+            battlePassCell.zlRewardStateH = reward.ZLRewardStateH;
+        }
+
+        UpdateRedpoint(netPack.ZhanlingType);
+        BattlePassDataUpdateEvent?.Invoke(netPack.ZhanlingType);
+    }
+
+
+    void UpdateRedpoint(int type)
+    {
+        switch (type)
+        {
+            case WeekBattlePassType:
+                {
+                    UpdateWeekRedPoint();
+                    break;
+                }
+        }
+    }
+
+    //鏄惁鏈変换浣曞鍔卞彲浠ラ鍙�
+    public bool HasAnyAward(int type, int totalValue)
+    {
+        battlePassDataDict.TryGetValue(type, out BattlePassData battlePassData);
+        if (battlePassData == null)
+            return false;
+        if (battlePassData.allFinishTime != 0)
+            return false;
+        var allZhanling = ZhanlingConfig.GetTypeToIDDict(type);
+
+        var keys = allZhanling.Keys.ToList();
+        keys.Sort();
+        foreach (var needValue in keys)
+        {
+            if (totalValue < needValue)
+            {
+                return false;
+            }
+
+            if (battlePassData.battlePassCellDict.ContainsKey(needValue))
+            {
+                if (battlePassData.battlePassCellDict[needValue].freeRewardState == 0)
+                {
+                    return true;
+                }
+                else if (battlePassData.isActivite != 0 && battlePassData.battlePassCellDict[needValue].zlRewardState == 0)
+                {
+                    return true;
+                }
+                else if (battlePassData.isActiviteH != 0 && battlePassData.battlePassCellDict[needValue].zlRewardStateH == 0)
+                {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    /// <summary>
+    /// 鏄惁鏈夋煇涓鍔卞彲浠ラ鍙�
+    /// </summary>
+    /// <param name="battlePassData"></param>
+    /// <param name="totalValue"></param>
+    /// <param name="needValue"></param>
+    /// <param name="awardType">0 鍏嶈垂 1 鏅�� 2 楂樼骇</param>
+    /// <returns>0 鏈揪鏍� 1 鍙鍙� 2 宸查鍙�</returns>
+    public int GetBPCellAwardState(BattlePassData battlePassData, int totalValue, int needValue, int awardType)
+    {
+        if (totalValue < needValue)
+        {
+            return 0;
+        }
+
+        if (battlePassData.battlePassCellDict.ContainsKey(needValue))
+        {
+            switch (awardType)
+            {
+                case 0:
+                    {
+                        return battlePassData.battlePassCellDict[needValue].freeRewardState == 0 ? 1 : 2;
+                    }
+                case 1:
+                    {
+                        if (battlePassData.isActivite != 0)
+                        {
+                            return battlePassData.battlePassCellDict[needValue].zlRewardState == 0 ? 1 : 2;
+                        }
+                        break;
+                    }
+                case 2:
+                    {
+                        if (battlePassData.isActiviteH != 0)
+                        {
+                            return battlePassData.battlePassCellDict[needValue].zlRewardStateH == 0 ? 1 : 2;
+                        }
+                        break;
+                    }
+            }
+        }
+        return 0;
+    }
+
+
+    public int GetCTGIDByType(int type)
+    {
+        if (buyZhanlingTypeDict.ContainsKey(type))
+        {
+            return buyZhanlingTypeDict[type][0];
+        }
+        return 0;
+    }
+
+
+    public BattlePassData GetBattlePassData(int type)
+    {
+        if (battlePassDataDict.ContainsKey(type))
+        {
+            return battlePassDataDict[type];
+        }
+        return null;
+    }
+
+
+    //鍙戝寘 type 0-鍏嶈垂锛�1-鏅�氭垬浠わ紱2-楂樼骇鎴樹护
+    public void SendGetGift(int zhanLingType, int needValue, int type)
+    {
+        var pak = new CA504_tagCMPlayerGetReward();
+        string dataExStr = (needValue * 10 + type).ToString();
+        pak.RewardType = (byte)65;
+        pak.DataEx = (uint)zhanLingType;
+        pak.DataExStrLen = (byte)dataExStr.Length;
+        pak.DataExStr = dataExStr;
+        GameNetSystem.Instance.SendInfo(pak);
+    }
+
+    //涓�娆℃�у叏棰嗗彇
+    public void GetAllAward(BattlePassData battlePassData, int zhanLingType, int totalValue)
+    {
+        //绠�鍗曞垽鏂儗鍖�
+        if (PackManager.Instance.GetEmptyGridCount(PackType.Item) <= 1)
+        {
+            SysNotifyMgr.Instance.ShowTip("GeRen_lhs_202580");
+            return;
+        }
+        var ids = ZhanlingConfig.GetTypeToIDDict(zhanLingType).Values.ToList();
+        ids.Sort();
+        foreach (var id in ids)
+        {
+            var config = ZhanlingConfig.Get(id);
+            if (config.NeedValue > totalValue)
+            {
+                break;
+            }
+
+            for (int i = 0; i < 3; i++)
+            {
+
+                var state = GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, i);
+                if (state == 1)
+                {
+                    SendGetGift(zhanLingType, config.NeedValue, i);
+                }
+            }
+
+        }
+
+    }
+
+    public int JumpIndex(BattlePassData battlePassData, int zhanLingType, int totalValue)
+    {
+        
+        var ids = ZhanlingConfig.GetTypeToIDDict(zhanLingType).Values.ToList();
+        ids.Sort();
+        int index = -1;
+        foreach (var id in ids)
+        {
+            index++;
+            var config = ZhanlingConfig.Get(id);
+            if (config.NeedValue > totalValue)
+            {
+                return index - 1;
+            }
+
+            for (int i = 0; i < 3; i++)
+            {
+                var state = GetBPCellAwardState(battlePassData, totalValue, config.NeedValue, i);
+                if (state == 1)
+                {
+                    return index;
+                }
+            }
+        }
+        return index;
+    }
+}
+
+
+public class BattlePassCell
+{
+    public byte freeRewardState;        // 鍏嶈垂鎴樹护濂栧姳鏄惁宸查鍙�
+    public byte zlRewardState;        // 鏅�氭垬浠ゅ鍔辨槸鍚﹀凡棰嗗彇
+    public byte zlRewardStateH;        // 楂樼骇鎴樹护濂栧姳鏄惁宸查鍙�
+}
+
+
+public class BattlePassData
+{
+    public byte isActivite;    // 鏅�氭垬浠ゆ槸鍚﹀凡婵�娲�
+    public byte isActiviteH;    // 楂樼骇鎴樹护鏄惁宸叉縺娲�
+    public uint allFinishTime;    // 鍏ㄩ儴濂栧姳棰嗗彇瀹屾瘯鐨勬椂闂存埑锛屾湭瀹屾瘯鏃惰鍊间负0锛屽悗绔細鍦�0鐐硅繃澶╂椂妫�鏌ュ彲鍚﹂噸缃紝鍓嶇鑷鍋氬�掕鏃惰〃鐜板嵆鍙�
+    public uint value1;    // 鎴樹护瀵瑰簲鐨勮嚜瀹氫箟鍊硷紝鍙�夛紝濡傜櫥褰曟垬浠や唬琛ㄥ紑濮嬭绠楁棩鏈熸椂闂存埑
+
+    public Dictionary<int, BattlePassCell> battlePassCellDict = new Dictionary<int, BattlePassCell>();
+}
\ No newline at end of file
diff --git a/Main/System/BattlePass/BattlePassManager.cs.meta b/Main/System/BattlePass/BattlePassManager.cs.meta
new file mode 100644
index 0000000..a063349
--- /dev/null
+++ b/Main/System/BattlePass/BattlePassManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 973e17d74c0fddf43b8085d369f35feb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/DayMission/DayMissionBaseWin.cs b/Main/System/DayMission/DayMissionBaseWin.cs
index 9e2dff8..c88fd30 100644
--- a/Main/System/DayMission/DayMissionBaseWin.cs
+++ b/Main/System/DayMission/DayMissionBaseWin.cs
@@ -22,11 +22,12 @@
                 break;
             case 1:
                 //鍛ㄥ鍔�
-                // currentSubUI = UIManager.Instance.OpenWindow<HeroCollectionWin>();
+                currentSubUI = UIManager.Instance.OpenWindow<WeekBattlePassWin>();
                 titleText.text = Language.Get("DayMission3");
                 break;
             case 2:
                 //涓荤嚎浠诲姟锛堣嫳闆勪箣璺級
+                currentSubUI = UIManager.Instance.OpenWindow<DayMissionWin>();
                 titleText.text = Language.Get("DayMission4");
                 break;
             default:
diff --git a/Main/System/DayMission/DayMissionManager.cs b/Main/System/DayMission/DayMissionManager.cs
index 001529e..daccfee 100644
--- a/Main/System/DayMission/DayMissionManager.cs
+++ b/Main/System/DayMission/DayMissionManager.cs
@@ -20,7 +20,7 @@
     public override void Init()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
-        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+        GlobalTimeEvent.Instance.MS100Event += OnMSEvent;
 
         ParseConfig();
     }
@@ -28,7 +28,7 @@
     public override void Release()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
-        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
+        GlobalTimeEvent.Instance.MS100Event -= OnMSEvent;
     }
 
     void OnBeforePlayerDataInitialize()
@@ -39,7 +39,7 @@
         taskProcessDict.Clear();
     }
 
-    void OnSecondEvent()
+    void OnMSEvent()
     {
         if (isRefreshDayMission)
         {
diff --git a/Main/System/DayMission/WeekBattlePassCell.cs b/Main/System/DayMission/WeekBattlePassCell.cs
new file mode 100644
index 0000000..bbd2629
--- /dev/null
+++ b/Main/System/DayMission/WeekBattlePassCell.cs
@@ -0,0 +1,88 @@
+锘縰sing System;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class WeekBattlePassCell : CellView
+{
+    [SerializeField] ItemCell baseAward;
+    [SerializeField] Transform baseGotRect;
+    [SerializeField] Transform baseCanGetAwardRect;
+    [SerializeField] Transform upProcssBGRect;
+    [SerializeField] Transform upProcessRect;
+    [SerializeField] Transform downProcssBGRect;
+    [SerializeField] Transform downProcessRect;
+    [SerializeField] Text valueText;
+    [SerializeField] Image valueBGImg;
+    [SerializeField] ItemCell[] betterAwards;
+    [SerializeField] Transform[] betterGotRects;
+    [SerializeField] Transform[] betterCanGetAwardRects;
+    [SerializeField] Transform[] betterLockRects;
+
+    [SerializeField] Transform mask;
+
+
+    public void Display(int id, BattlePassData battlePassData)
+    {
+        var config = ZhanlingConfig.Get(id);
+        int freeItemID = config.FreeRewardItemList[0][0];
+        baseAward.Init(new ItemCellModel(freeItemID, false, config.FreeRewardItemList[0][1]));
+        var baseAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, (int)battlePassData.value1, config.NeedValue, 0);
+        baseAward.button.AddListener(() =>
+        {
+            GetAward(battlePassData, baseAwardState, freeItemID);
+        });
+
+
+        baseGotRect.SetActive(baseAwardState == 2);
+        baseCanGetAwardRect.SetActive(baseAwardState == 1);
+        mask.SetActive(baseAwardState == 0);
+
+        var ids = ZhanlingConfig.GetTypeToIDDict(BattlePassManager.WeekBattlePassType).Values.ToList();
+        ids.Sort();
+        upProcssBGRect.SetActive(ids[0] != id);
+        upProcessRect.SetActive(baseAwardState != 0);
+
+        downProcssBGRect.SetActive(ids[ids.Count - 1] != id);
+        var nextConfig = ZhanlingConfig.Get(id + 1);
+        if (nextConfig != null)
+        {
+            downProcessRect.SetActive((int)battlePassData.value1 >= nextConfig.NeedValue);
+        }
+        else
+        {
+            downProcessRect.SetActive(false);
+        }
+
+        valueText.text = config.NeedValue.ToString();
+        valueBGImg.SetOrgSprite(baseAwardState == 0 ? "DayMission_img_99" : "DayMission_img_100", "DayMission");
+
+        var betterAwardState = BattlePassManager.Instance.GetBPCellAwardState(battlePassData, (int)battlePassData.value1, config.NeedValue, 1);
+        for (int i = 0; i < betterAwards.Length; i++)
+        {
+            int itemID = config.ZLRewardItemList[i][0];
+            betterAwards[i].Init(new ItemCellModel(itemID, false, config.ZLRewardItemList[i][1]));
+            betterAwards[i].button.AddListener(() =>
+            {
+                GetAward(battlePassData, betterAwardState, itemID);
+            });
+            betterGotRects[i].SetActive(betterAwardState == 2);
+            betterCanGetAwardRects[i].SetActive(betterAwardState == 1);
+            betterLockRects[i].SetActive(battlePassData.isActivite == 0);
+        }
+    }
+
+    void GetAward(BattlePassData battlePassData, int awardState, int itemID)
+    {
+        if (awardState != 1)
+        {
+            ItemTipUtility.Show(itemID);
+            return;
+        }
+
+        BattlePassManager.Instance.GetAllAward(battlePassData, BattlePassManager.WeekBattlePassType, (int)battlePassData.value1);
+    }
+}
+
+
diff --git a/Main/System/DayMission/WeekBattlePassCell.cs.meta b/Main/System/DayMission/WeekBattlePassCell.cs.meta
new file mode 100644
index 0000000..bcba9f9
--- /dev/null
+++ b/Main/System/DayMission/WeekBattlePassCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 22ee6f5381c87b443a607448c096a1af
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/DayMission/WeekBattlePassWin.cs b/Main/System/DayMission/WeekBattlePassWin.cs
new file mode 100644
index 0000000..cd581f3
--- /dev/null
+++ b/Main/System/DayMission/WeekBattlePassWin.cs
@@ -0,0 +1,116 @@
+锘縰sing System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+//鍛ㄦ垬浠�
+public class WeekBattlePassWin : UIBase
+{
+    [SerializeField] Text totalActivityText;
+    [SerializeField] Text timeText;
+    [SerializeField] ScrollerController scroller;
+    [SerializeField] Transform lockRect;
+    [SerializeField] Button buyBtn;
+    [SerializeField] Text buyText;
+
+    BattlePassData battlePassData;
+
+
+    protected override void InitComponent()
+    {
+        buyBtn.AddListener(() =>
+        {
+            RechargeManager.Instance.CTG(BattlePassManager.Instance.GetCTGIDByType(BattlePassManager.WeekBattlePassType));
+        });
+    }
+    protected override void OnPreOpen()
+    {
+        battlePassData = BattlePassManager.Instance.GetBattlePassData(BattlePassManager.WeekBattlePassType);
+        if (battlePassData == null) return;
+        scroller.OnRefreshCell += OnRefreshCell;
+        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
+        BattlePassManager.Instance.BattlePassDataUpdateEvent += BattlePassDataUpdateEvent;
+        CreateScroller();
+        Display();
+
+
+    }
+
+    protected override void OnPreClose()
+    {
+        scroller.OnRefreshCell -= OnRefreshCell;
+        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
+        BattlePassManager.Instance.BattlePassDataUpdateEvent -= BattlePassDataUpdateEvent;
+
+    }
+
+    void OnSecondEvent()
+    {
+        //鎸夊紑鏈嶅ぉ 7澶╀竴涓惊鐜�
+        var day = 7 - (TimeUtility.OpenDay % 7) - 1;
+        if (day == 0)
+        {
+            timeText.text = Language.Get("GoldRush29") + TimeUtility.SecondsToShortDHMS((int)(TimeUtility.GetTodayEndTime() - TimeUtility.ServerNow).TotalSeconds);
+        }
+        else
+        {
+            timeText.text = Language.Get("GoldRush29") + day + Language.Get("L1074");
+        }
+    }
+
+    void BattlePassDataUpdateEvent(int type)
+    {
+        if (type == BattlePassManager.WeekBattlePassType)
+        {
+            Display();
+        }
+    }
+
+
+    void Display()
+    {
+        totalActivityText.text = battlePassData.value1.ToString();
+        lockRect.SetActive(battlePassData.isActivite == 0);
+        scroller.m_Scorller.RefreshActiveCellViews();
+
+        if (battlePassData.isActivite == 0)
+        {
+            var ctgID = BattlePassManager.Instance.GetCTGIDByType(BattlePassManager.WeekBattlePassType);
+            RechargeManager.Instance.TryGetOrderInfo(ctgID, out var orderInfoConfig);
+            buyText.text = Language.Get("PayMoneyNum", orderInfoConfig.PayRMBNumOnSale);
+            buyBtn.SetInteractable(true);
+        }
+        else
+        {
+            buyText.text = Language.Get("L1133");
+            buyBtn.SetInteractable(false);
+        }
+    }
+
+
+    void CreateScroller()
+    {
+        scroller.Refresh();
+        var values = ZhanlingConfig.GetTypeToIDDict(BattlePassManager.WeekBattlePassType).Values.ToList();
+        values.Sort();
+        for (int i = 0; i < values.Count; i++)
+        {
+            scroller.AddCell(ScrollerDataType.Header, values[i]);
+        }
+        scroller.Restart();
+
+        scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(battlePassData, BattlePassManager.WeekBattlePassType, (int)battlePassData.value1));
+    }
+
+
+    void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as WeekBattlePassCell;
+        _cell.Display(cell.index, battlePassData);
+    }
+}
+
+
+
+
+
diff --git a/Main/System/DayMission/WeekBattlePassWin.cs.meta b/Main/System/DayMission/WeekBattlePassWin.cs.meta
new file mode 100644
index 0000000..b13ec9c
--- /dev/null
+++ b/Main/System/DayMission/WeekBattlePassWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e87e9af324b150d4fb0c3f0732593f2b
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0