Пример #1
0
        public List <BundleDependency> GetDependencies()
        {
            List <BundleDependency> result = new List <BundleDependency>();

            if (Dependencies.Count > 0)
            {
                for (int i = 0; i < Dependencies.Count; i++)
                {
                    BundleDependency dependency = new BundleDependency();

                    dependency.EntryID            = Dependencies[i].ID;
                    dependency.EntryPointerOffset = (int)Dependencies[i].EntryPointerOffset;

                    BundleEntry entry = null;

                    /*string file = BundleCache.GetFileByEntryID(dependency.EntryID);
                     * if (!string.IsNullOrEmpty(file))
                     * {
                     *      BundleArchive archive = BundleArchive.Read(file, dependency.EntryID);
                     *      entry = archive.GetEntryByID(dependency.EntryID);
                     * }*/
                    //}

                    // TODO
                    for (int j = 0; j < Archive.Entries.Count; j++)
                    {
                        if (Archive.Entries[j].ID != dependency.EntryID)
                        {
                            continue;
                        }

                        dependency.EntryIndex = j;
                        entry = Archive.Entries[j];
                    }

                    dependency.Entry = entry;

                    result.Add(dependency);
                }
                return(result);
            }

            MemoryStream  ms = MakeStream();
            BinaryReader2 br = new BinaryReader2(ms);

            br.BigEndian = Console;

            br.BaseStream.Position = DependenciesListOffset;

            for (int i = 0; i < DependencyCount; i++)
            {
                BundleDependency bundleDependency = new BundleDependency();

                bundleDependency.EntryID            = br.ReadUInt64();
                bundleDependency.EntryPointerOffset = br.ReadInt32();
                bundleDependency.Unknown2           = br.ReadInt32();

                BundleEntry entry = null;

                /*string file = BundleCache.GetFileByEntryID(bundleDependency.EntryID);
                 * if (!string.IsNullOrEmpty(file))
                 * {
                 *      BundleArchive archive = BundleArchive.Read(file, bundleDependency.EntryID);
                 *      entry = archive.GetEntryByID(bundleDependency.EntryID);
                 * }*/

                // TODO
                for (int j = 0; j < Archive.Entries.Count; j++)
                {
                    if (Archive.Entries[j].ID != bundleDependency.EntryID)
                    {
                        continue;
                    }

                    bundleDependency.EntryIndex = j;
                    entry = Archive.Entries[j];
                }

                bundleDependency.Entry = entry;

                result.Add(bundleDependency);
            }

            br.Close();
            ms.Close();

            return(result);
        }