//----------------------------------------------------------------------------- public static string NtfPack(List <string> vPths, List <string> vfAry, string file, BuildTarget tgt, bool silence , GameBundleVersionControl version, PackageVersion.Version cfgVersion) { List <string> fAry = new List <string>(); if (vfAry != null) { fAry.AddRange(vfAry); } foreach (string sPth in vPths) { List <string> vfs = ArchiveUtil.NtfGetFiles(sPth, true, ArchiveUtil.mSkips); fAry.AddRange(vfs); } BuildGameCMD.BuildGamePack(file, fAry, tgt, silence, version); string packageName = Path.GetFileName(file); packageName = packageName.ToLower(); if (version.m_version.HavePackage(packageName)) { PackageVersion.Version v = version.m_version.LookupPackageVersion(packageName); v.m_isExternPackage = cfgVersion.m_isExternPackage; v.m_isAliveInRuntime = cfgVersion.m_isAliveInRuntime; version.m_version.AddPackage(packageName, v); } return(packageName); }
public override void IncreasePackageVersion(string packageName) { PackageVersion.Version v = new PackageVersion.Version(); v.Init(); v.m_version = 0; if (m_version.HavePackage(packageName)) { v = m_version.LookupPackageVersion(packageName); } v.m_version++; m_version.AddPackage(packageName, v); // m_isDirty = true; }
public void OnPackageDownload(string pckFile, int bytes) { m_downloadBytes += bytes; PackageVersion.Version v = new PackageVersion.Version(); v.Init(); if (m_versionPackage.HavePackage(pckFile)) { v = m_versionPackage.LookupPackageVersion(pckFile); } if (m_remotePackage.HavePackage(pckFile)) { v = m_remotePackage.LookupPackageVersion(pckFile); } m_versionPackage.AddPackage(pckFile, v); m_versionPackage.SavePackageVersion(ResPath.GetLocal(ResPath.GetPackageVersionTxt())); }
//----------------------------------------------------------------------------- public static void NtfPackEachFile(string srcFolder, string targetFolder, BuildTarget tgt, bool silence , GameBundleVersionControl version, PackageVersion.Version cfgVersion) { List <string> allNeedPackedFile = ArchiveUtil.NtfGetFiles(srcFolder, true, ArchiveUtil.mSkips); List <string> procFileList = new List <string>(); string targetPackFile; foreach (string singleFile in allNeedPackedFile) { procFileList.Clear(); procFileList.Add(singleFile); string[] pathsOfThisFile = singleFile.Split(new char[] { '/', '\\' }, System.StringSplitOptions.RemoveEmptyEntries); if (pathsOfThisFile.Length < 3) { targetPackFile = singleFile.Replace('/', '_'); targetPackFile = targetPackFile.Replace('\\', '_'); targetPackFile = targetFolder + "/" + targetPackFile + ".pack"; } else { targetPackFile = targetFolder + "/"; for (int i = 2; i < pathsOfThisFile.Length; i++) { targetPackFile += "_" + pathsOfThisFile[i]; } targetPackFile += ".pack"; } targetPackFile = targetPackFile.Replace(" ", ""); targetPackFile = targetPackFile.ToLower(); string packageName = Path.GetFileName(targetPackFile); packageName = packageName.ToLower(); BuildGameCMD.BuildGamePack(targetPackFile, procFileList, tgt, silence, version); if (version.m_version.HavePackage(packageName)) { PackageVersion.Version v = version.m_version.LookupPackageVersion(packageName); v.m_isExternPackage = cfgVersion.m_isExternPackage; v.m_isAliveInRuntime = cfgVersion.m_isAliveInRuntime; version.m_version.AddPackage(packageName, v); } } }
void NtfBuildResPack() { string sPth = GetGamePath(); if (m_useConfig) { //sPth = Application.dataPath+"/"; } List <string> vPths = mGmWind.GetPublicPath(false); // 选中的公共资源列表 List <string> vfs = ArchiveUtil.NtfGetFiles(sPth, false, ArchiveUtil.mSkips); List <TglItem> vItms = mPthCtrl.GetSelItems(); string szDefaultPath = BuildGameCMD.GetBuildFolder(mGmWind.GetTarget()); string saveFolder = EditorUtility.SaveFolderPanel("Save Pack File", szDefaultPath, ""); if (saveFolder == "") { return; } m_versionControl.LoadProject(saveFolder); foreach (TglItem itm in vItms) { string selPath = itm.mName; vPths.Clear(); vPths.Add(sPth + selPath); string saveFileName = saveFolder + "/" + selPath.Replace('/', '_') + ".pack"; PackageVersion.Version cfgPackage = new PackageVersion.Version(); cfgPackage.Init(); cfgPackage.m_isAliveInRuntime = itm.m_isPackedAlive; cfgPackage.m_isExternPackage = itm.m_isPackedExtern; if (itm.mIsPackedEachFile) { NtfPackEachFile(sPth + selPath, saveFolder, mGmWind.GetTarget(), true, m_versionControl, cfgPackage); } else { NtfPack(vPths, vfs, saveFileName, mGmWind.GetTarget(), true, m_versionControl, cfgPackage); } } m_versionControl.SaveProject(saveFolder); EditorUtility.DisplayDialog(@"操作提示", @"打包完成", "Ok"); }
IEnumerator BuildPackListAndDownLoad_Impl() { int downloadQueueCount = 1; for (int i = m_needDownloadPackage.Count; i < downloadQueueCount; i++) { m_needDownloadPackage.Add(new List <NeedDownloadData>()); } string szLast = ""; mMsg = "Build Pack List ..."; mPackDic = new Dictionary <string, ResPackge>(); if (mResDic != null) { foreach (ResPackItm itm in mResDic.Values) { if (szLast == itm.mPack) { continue; } szLast = itm.mPack; // string szNm = Path.GetFileName(itm.mPack); if (mPackDic.ContainsKey(itm.mPack)) { continue; } ResPackge pck = new ResPackge(); pck.mType = itm.mType; pck.mFile = itm.mPack; mPackDic.Add(itm.mPack, pck); } } MergePakcageList(); mMsg = "Down Pack Files ..."; int downloadIndex = 0; foreach (KeyValuePair <string, ResPackge> res in mPackDic) { ResPackge pck = res.Value; mMsg = "DownOrLoad ... " + pck.mFile; //mEntry.StartCoroutine(pck.NtfDownOrLoad(mbLocal)); bool forceDownload = false; bool keepAlive = false; if (!m_versionPackage.HavePackage(pck.mFile)) { forceDownload = true; } else { PackageVersion.Version localVersion = m_versionPackage.LookupPackageVersion(pck.mFile); if (localVersion.m_isAliveInRuntime) { keepAlive = true; } if (m_remotePackage.HavePackage(pck.mFile)) { PackageVersion.Version remoteVersion = m_remotePackage.LookupPackageVersion(pck.mFile); if (remoteVersion.m_version != localVersion.m_version) { forceDownload = true; } } } if (m_remotePackage.HavePackage(pck.mFile)) { PackageVersion.Version remoteVersion = m_remotePackage.LookupPackageVersion(pck.mFile); if (remoteVersion.m_isAliveInRuntime) { keepAlive = true; } } if (keepAlive) { AddKeepAlivePackage(pck.mFile, false); } keepAlive = IsKeepAlivePackage(res.Key); //if (forceDownload || keepAlive) { NeedDownloadData data = new NeedDownloadData(); data.m_forceDownload = forceDownload; data.m_isKeepAlive = keepAlive; data.m_pck = pck; List <NeedDownloadData> downQueue = m_needDownloadPackage[downloadIndex % m_needDownloadPackage.Count]; downQueue.Add(data); downloadIndex++; } //else //{ // IEnumerator e = pck.TryDownload(!keepAlive, forceDownload); // while (true) // { // e.MoveNext(); // if (pck.m_state != ResPackge.State.Downloading) // { // break; // } // yield return e.Current; // } //} } IsCheckPackage = true; mMsg = ""; m_calcDownloadBytesTime = Time.realtimeSinceStartup; for (int i = 0; i < m_needDownloadPackage.Count; i++) { List <NeedDownloadData> downQueue = m_needDownloadPackage[i]; if (downQueue.Count > 0) { mEntry.StartCoroutine(ProcDownloadQueue(i)); mEntry.StartCoroutine(OverTimeCheck()); } } #if (MY_DEBUG) // 显示出来 AddReToViewCtrl(); #endif yield return(1); }