Exemple #1
0
    //-----------------------------------------------------------------------------
    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);
    }
Exemple #2
0
    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;
    }
Exemple #3
0
    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()));
    }
Exemple #4
0
    //-----------------------------------------------------------------------------
    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);
            }
        }
    }
Exemple #5
0
    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");
    }
Exemple #6
0
    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);
    }