hch
4 天以前 91f6a3eb7961367d942b232ed3ea8810a6bf488a
236 子 【福利内容】每周任务
5个文件已修改
13个文件已添加
689 ■■■■■ 已修改文件
Main/Config/ConfigManager.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/ZhanlingConfig.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/ZhanlingConfig.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/ZhanlingConfig.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/PartialConfigs/ZhanlingConfig.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB120_tagMCZhanlingInfo.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Main.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BattlePass.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BattlePass/BattlePassManager.Week.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BattlePass/BattlePassManager.Week.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BattlePass/BattlePassManager.cs 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BattlePass/BattlePassManager.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/DayMissionBaseWin.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/DayMissionManager.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/WeekBattlePassCell.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/WeekBattlePassCell.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/WeekBattlePassWin.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/DayMission/WeekBattlePassWin.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
Main/Config/Configs/ZhanlingConfig.cs
New file
@@ -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);
        }
    }
}
Main/Config/Configs/ZhanlingConfig.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0a982bd9a3eaef84fa25269ec4301050
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/Config/PartialConfigs/ZhanlingConfig.cs
New file
@@ -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;
    }
}
Main/Config/PartialConfigs/ZhanlingConfig.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8aa62178ddc66b2479b841083ee2b290
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
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);
    }
}
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)
        {
Main/System/BattlePass.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7f66ce03cd8564847bcbc69378d900d9
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/BattlePass/BattlePassManager.Week.cs
New file
@@ -0,0 +1,31 @@
using 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;
        }
    }
}
Main/System/BattlePass/BattlePassManager.Week.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ed678a9060fddbf41adb9d9102d62514
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/BattlePass/BattlePassManager.cs
New file
@@ -0,0 +1,277 @@
using 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>();
}
Main/System/BattlePass/BattlePassManager.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 973e17d74c0fddf43b8085d369f35feb
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
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:
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)
        {
Main/System/DayMission/WeekBattlePassCell.cs
New file
@@ -0,0 +1,88 @@
using 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);
    }
}
Main/System/DayMission/WeekBattlePassCell.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 22ee6f5381c87b443a607448c096a1af
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Main/System/DayMission/WeekBattlePassWin.cs
New file
@@ -0,0 +1,116 @@
using 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);
    }
}
Main/System/DayMission/WeekBattlePassWin.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e87e9af324b150d4fb0c3f0732593f2b
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: