lcy
2025-11-05 3b2a6bb9047cfce9f501593b3669a9c1af6c5df4
Main/System/AssetVersion/InGameDownLoad.cs
@@ -27,7 +27,7 @@
    public bool isDone { get { return state == State.Completed; } } //是否全部下载完成
    //窗口中显示的已下载大小
    public long showDownLoadedSize { get { return DownloadMgr.Instance.DownloadedBytes - backGroundDownLoadSizeRecord; } }
    public long showDownLoadedSize { get { return DownloadHotMgr.Instance.DownloadedBytes - backGroundDownLoadSizeRecord; } }
    public long showTotalSize { get { return totalSize - backGroundDownLoadSizeRecord; } }//窗口中显示的总大小
    public int showTotalCount { get { return totalCount - downLoadedCountRecord; } }//窗口中显示的总数量
    public int showOkCount { get { return okCount - downLoadedCountRecord; } }//窗口中显示的下载完成数量
@@ -79,8 +79,6 @@
        }
    }
    // TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
    public List<Reward> rewards = new List<Reward>();
    public bool hasReward { get; private set; }//是否有奖励
    public string completeDownLoadAccount
@@ -89,12 +87,11 @@
        set { LocalSave.SetString("InGameDownLoadCompleteAccount", value); }
    }
    //  TODO YYL
    // public Redpoint downLoadRedpoint = new Redpoint(116);
    public Redpoint downLoadRedpoint = new Redpoint(116);
    private void Awake()
    {
        DownloadMgr.MaxDownLoadTask = GetMaxTask();
        DownloadHotMgr.MaxDownLoadTask = GetMaxTask();
    }
    private void LateUpdate()
@@ -138,45 +135,42 @@
    //开始分配任务
    public void AssignTasks(List<AssetVersion> assets, Action _onDownLoadOk)
    {
        // TODO YYL
        // this.inGameDownLoadAllow = false;
        // this.assets = assets;
        // this.assets.Sort(this.AssetDownLoadPriorCompare);//所有任务根据优先级排序
        // onDownLoadOk = _onDownLoadOk;
        this.inGameDownLoadAllow = false;
        this.assets = assets;
        this.assets.Sort(this.AssetDownLoadPriorCompare);//所有任务根据优先级排序
        onDownLoadOk = _onDownLoadOk;
        // totalCount = this.assets.Count;
        // okCount = 0;
        // totalSize = 0;
        totalCount = this.assets.Count;
        okCount = 0;
        totalSize = 0;
        // DownloadMgr.Instance.Prepare();
        DownloadHotMgr.Instance.Prepare();
        // for (int i = 0; i < this.assets.Count; i++)
        // {
        //     var assetVersion = this.assets[i];
        //     totalSize += assetVersion.size;//统计资源总大小
        //     //统计地图专属的资源
        //     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);
        //     DownloadMgr.Instance.AddTask(new DownloadTask(remoteURL, localURL, assetVersion));
        // }
        for (int i = 0; i < this.assets.Count; i++)
        {
            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);
            DownloadHotMgr.Instance.AddTask(new DownloadHotTask(remoteURL, localURL, assetVersion));
        }
        // state = State.None;
        state = State.None;
        // TaskModel.Event_MainlineTask -= OnMainTaskChange;
        // TaskModel.Event_MainlineTask += OnMainTaskChange;
        // PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerLevelChange;
        // PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerLevelChange;
        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerLevelChange;
        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerLevelChange;
    }
    //任务根据优先级排序
@@ -185,8 +179,7 @@
        var categoryA = lhs.GetAssetCategory();
        var categoryB = rhs.GetAssetCategory();
        //  TODO YYL
        // TODO YYL
        // var priorA = PriorBundleConfig.GetAssetPrior(categoryA, AssetVersionUtility.DecodeFileName(lhs.fileName));
        // var priorB = PriorBundleConfig.GetAssetPrior(categoryB, AssetVersionUtility.DecodeFileName(rhs.fileName));
@@ -252,7 +245,7 @@
            case Dominant.Half:
                if (dominantState == Dominant.None)
                {
                    backGroundDownLoadSizeRecord = DownloadMgr.Instance.DownloadedBytes;
                    backGroundDownLoadSizeRecord = DownloadHotMgr.Instance.DownloadedBytes;
                    downLoadedCountRecord = okCount;
                }
                StartDownLoad();
@@ -261,7 +254,7 @@
            case Dominant.Whole:
                if (dominantState == Dominant.None)
                {
                    backGroundDownLoadSizeRecord = DownloadMgr.Instance.DownloadedBytes;
                    backGroundDownLoadSizeRecord = DownloadHotMgr.Instance.DownloadedBytes;
                    downLoadedCountRecord = okCount;
                    Pause();
                    state = State.Prepared;
@@ -272,9 +265,7 @@
                    state = State.Prepared;
                }
                dominantState = Dominant.Whole;
                //  TODO YYL
                // UIManager.Instance.ShowWindow<InGameDownLoadWin>();
                // // WindowCenter.Instance.Open<InGameDownLoadWin>();
                // UIManager.Instance.OpenWindow<InGameDownLoadWin>();
                break;
        }
    }
@@ -285,7 +276,7 @@
        if (state == State.None || state == State.Prepared || state == State.Pause)
        {
            state = State.DownLoad;
            DownloadMgr.Instance.Begin(OnFileDownLoadCompleted);
            DownloadHotMgr.Instance.Begin(OnFileDownLoadCompleted);
        }
    }
@@ -294,13 +285,13 @@
    {
        if (state == State.DownLoad)
        {
            DownloadMgr.Instance.Stop();
            DownloadHotMgr.Instance.Stop();
            state = State.Pause;
        }
    }
    //文件下载完成回调
    private bool OnFileDownLoadCompleted(bool finished, DownloadTask task)
    private bool OnFileDownLoadCompleted(bool finished, DownloadHotTask task)
    {
        if (task.IsDone && task.obj is AssetVersion)
        {
@@ -315,71 +306,66 @@
    //所有任务完成
    private void OnDownLoadFinished()
    {
        //  TODO YYL
        // TaskModel.Event_MainlineTask -= OnMainTaskChange;
        // PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerLevelChange;
        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerLevelChange;
        // WindowCenter.Instance.Close<InGameDownLoadWin>();
        UIManager.Instance.CloseWindow<InGameDownLoadWin>();
        // if (!hasReward)
        // {
        //     if (dominantState == Dominant.None)
        //     {
        //         RequestDownLoadReward(false);
        //         state = State.Completed;
        //     }
        //     else
        //     {
        //         completeDownLoadAccount = PlayerDatas.Instance.baseData.AccID;
        //         state = State.Award;
        //     }
        // }
        // else
        // {
        //     state = State.Completed;
        // }
        if (!hasReward)
        {
            if (dominantState == Dominant.None)
            {
                RequestDownLoadReward(false);
                state = State.Completed;
            }
            else
            {
                completeDownLoadAccount = PlayerDatas.Instance.baseData.AccID;
                state = State.Award;
            }
        }
        else
        {
            state = State.Completed;
        }
        
        // downLoadRedpoint.state = state == State.Award ? RedPointState.Simple : RedPointState.None;
        downLoadRedpoint.state = state == State.Award ? RedPointState.Simple : RedPointState.None;
        // if (onDownLoadOk != null)
        // {
        //     onDownLoadOk();
        //     onDownLoadOk = null;
        // }
        if (onDownLoadOk != null)
        {
            onDownLoadOk();
            onDownLoadOk = null;
        }
    }
    public void ParseRewardConfig()
    {
        // //  TODO YYL
        // var rewardString = FuncConfigConfig.Get("DownReward").Numerical1;
        // var matches = Regex.Matches(rewardString, "(\\d+,\\d+,\\d+)");
        // for (int i = 0; i < matches.Count; i++)
        // {
        //     rewards.Add(new Reward(matches[i].Value));
        // }
        var rewardString = FuncConfigConfig.Get("DownReward").Numerical1;
        var matches = Regex.Matches(rewardString, "(\\d+,\\d+,\\d+)");
        for (int i = 0; i < matches.Count; i++)
        {
            rewards.Add(new Reward(matches[i].Value));
        }
    }
    //  TODO YYL
    // public void UpdateRewardInfo(HA319_tagMCPackDownloadRecord _package)
    // {
    //     hasReward = _package.Record == 1;
    public void UpdateRewardInfo(HA319_tagMCPackDownloadRecord _package)
    {
        hasReward = _package.Record == 1;
    //     if (AssetVersionUtility.unPriorAssetDownLoadDone)
    //     {
    //         state = !hasReward && completeDownLoadAccount == PlayerDatas.Instance.baseData.AccID ? State.Award : State.Completed;
    //     }
        if (AssetVersionUtility.unPriorAssetDownLoadDone)
        {
            state = !hasReward && completeDownLoadAccount == PlayerDatas.Instance.baseData.AccID ? State.Award : State.Completed;
        }
    //     downLoadRedpoint.state = state == State.Award ? RedPointState.Simple : RedPointState.None;
    // }
        downLoadRedpoint.state = state == State.Award ? RedPointState.Simple : RedPointState.None;
    }
    public void RequestDownLoadReward(bool _manual)
    {
        //  TODO YYL
        // var send = new CA504_tagCMPlayerGetReward();
        // send.RewardType = 15;
        // send.DataEx = (byte)(_manual ? 0 : 1);
        // GameNetSystem.Instance.SendInfo(send);
        var send = new CA504_tagCMPlayerGetReward();
        send.RewardType = 15;
        send.DataEx = (byte)(_manual ? 0 : 1);
        GameNetSystem.Instance.SendInfo(send);
    }
    public float GetMapAssetDownLoadProgress(int mapId)
@@ -540,11 +526,10 @@
        }
        // TODO YYL
        // if (!WindowCenter.Instance.IsOpen("MainInterfaceWin"))
        // {
        //     return false;
        // }
        if (!UIManager.Instance.IsOpened<MainWin>())
        {
            return false;
        }
        // if (WindowCenter.Instance.ExistAnyFullScreenOrMaskWin())
        // {
@@ -586,27 +571,12 @@
        }
    }
    //主线任务任务状态变更和刷新
    private void OnMainTaskChange(int _taskId, int _state)
    {
        // TODO YYL
        // var mainTaskId = taskModel.currentMission;
        // if (GeneralDefine.inGameDownLoadTaskCheckPoints.Contains(mainTaskId)
        //     && taskModel.currentMissionState == 1)
        // {
        //     if (CheckDominantDownLoad())
        //     {
        //         TryDownLoad(Dominant.Whole);
        //     }
        // }
    }
    //获取最大下载任务数
    public int GetMaxTask()
    {
        //  TODO YYL
        // if (!LoginWin.firstOpenEnd)
        //     return 20;
        if (!LoginWin.firstOpenEnd)
            return 20;
        if (downLoadGo)
            return 20;