| | |
| | | using UnityEngine; |
| | | using System; |
| | | using System.Text.RegularExpressions; |
| | | using LitJson; |
| | | |
| | | |
| | | public class InGameDownLoad : SingletonMonobehaviour<InGameDownLoad> |
| | |
| | | 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; } }//窗口中显示的下载完成数量 |
| | |
| | | } |
| | | } |
| | | |
| | | public List<Reward> rewards = new List<Reward>(); |
| | | public int[][] rewards; |
| | | public bool hasReward { get; private set; }//是否有奖励 |
| | | public string completeDownLoadAccount |
| | | { |
| | |
| | | set { LocalSave.SetString("InGameDownLoadCompleteAccount", value); } |
| | | } |
| | | |
| | | public Redpoint downLoadRedpoint = new Redpoint(116); |
| | | public Redpoint downLoadRedpoint = new Redpoint(MainRedDot.RedPoint_Download); |
| | | |
| | | private void Awake() |
| | | { |
| | | DownloadMgr.MaxDownLoadTask = GetMaxTask(); |
| | | DownloadHotMgr.MaxDownLoadTask = GetMaxTask(); |
| | | } |
| | | |
| | | private void LateUpdate() |
| | |
| | | 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;//统计资源总大小 |
| | | //统计地图专属的资源 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); |
| | | DownloadMgr.Instance.AddTask(new DownloadTask(remoteURL, localURL, assetVersion)); |
| | | var remoteURL = StringUtility.Concat(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), Language.fixPath, "/", assetVersion.relativePath); |
| | | var localURL = StringUtility.Concat(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath); |
| | | DownloadHotMgr.Instance.AddTask(new DownloadHotTask(remoteURL, localURL, assetVersion)); |
| | | } |
| | | |
| | | state = State.None; |
| | | |
| | | // TODO YYL |
| | | TaskManager.Event_MainlineTask -= OnMainTaskChange; |
| | | TaskManager.Event_MainlineTask += OnMainTaskChange; |
| | | |
| | | PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerLevelChange; |
| | | PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerLevelChange; |
| | |
| | | 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"; |
| | |
| | | case Dominant.Half: |
| | | if (dominantState == Dominant.None) |
| | | { |
| | | backGroundDownLoadSizeRecord = DownloadMgr.Instance.DownloadedBytes; |
| | | backGroundDownLoadSizeRecord = DownloadHotMgr.Instance.DownloadedBytes; |
| | | downLoadedCountRecord = okCount; |
| | | } |
| | | StartDownLoad(); |
| | |
| | | case Dominant.Whole: |
| | | if (dominantState == Dominant.None) |
| | | { |
| | | backGroundDownLoadSizeRecord = DownloadMgr.Instance.DownloadedBytes; |
| | | backGroundDownLoadSizeRecord = DownloadHotMgr.Instance.DownloadedBytes; |
| | | downLoadedCountRecord = okCount; |
| | | Pause(); |
| | | state = State.Prepared; |
| | |
| | | } |
| | | dominantState = Dominant.Whole; |
| | | UIManager.Instance.OpenWindow<InGameDownLoadWin>(); |
| | | // // WindowCenter.Instance.Open<InGameDownLoadWin>(); |
| | | break; |
| | | } |
| | | } |
| | |
| | | if (state == State.None || state == State.Prepared || state == State.Pause) |
| | | { |
| | | state = State.DownLoad; |
| | | DownloadMgr.Instance.Begin(OnFileDownLoadCompleted); |
| | | DownloadHotMgr.Instance.Begin(OnFileDownLoadCompleted); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | //所有任务完成 |
| | | private void OnDownLoadFinished() |
| | | { |
| | | // TODO YYL |
| | | TaskManager.Event_MainlineTask -= OnMainTaskChange; |
| | | PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerLevelChange; |
| | | |
| | | UIManager.Instance.CloseWindow<InGameDownLoadWin>(); |
| | |
| | | { |
| | | if (dominantState == Dominant.None) |
| | | { |
| | | RequestDownLoadReward(false); |
| | | // RequestDownLoadReward(false); |
| | | state = State.Completed; |
| | | } |
| | | else |
| | |
| | | |
| | | 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); |
| | | } |
| | | } |
| | | |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | //主线任务任务状态变更和刷新 |
| | | private void OnMainTaskChange(int _taskId, int _state) |
| | | { |
| | | var mainTaskId = TaskManager.Instance.currentMission; |
| | | if (GeneralDefine.inGameDownLoadTaskCheckPoints.Contains(mainTaskId) |
| | | && TaskManager.Instance.currentMissionState == 1) |
| | | { |
| | | if (CheckDominantDownLoad()) |
| | | { |
| | | TryDownLoad(Dominant.Whole); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //获取最大下载任务数 |
| | | public int GetMaxTask() |
| | |
| | | |
| | | public enum Dominant |
| | | { |
| | | None = 0, |
| | | None = 0, // 静态下载 |
| | | Half = 1, |
| | | Whole = 2, |
| | | 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 |
| | | } |