示例#1
0
        public GameCacheHaloOnline(DirectoryInfo directory)
        {
            Directory         = directory;
            TagsFile          = new FileInfo(Path.Combine(directory.FullName, "tags.dat"));
            TagNamesFile      = new FileInfo(Path.Combine(directory.FullName, "tag_list.csv"));
            StringIdCacheFile = new FileInfo(Path.Combine(directory.FullName, "string_ids.dat"));

            Endianness = EndianFormat.LittleEndian;

            var names = TagCacheHaloOnline.LoadTagNames(TagNamesFile.FullName);

            using (var stream = TagsFile.OpenRead())
                TagCacheGenHO = new TagCacheHaloOnline(stream, names);

            if (CacheVersion.Unknown == (Version = CacheVersionDetection.DetectFromTimestamp(TagCacheGenHO.Header.CreationTime, out var closestVersion)))
            {
                Version = closestVersion;
            }

            using (var stream = StringIdCacheFile.OpenRead())
                StringTableHaloOnline = new StringTableHaloOnline(Version, stream);

            DisplayName  = Version.ToString();
            Deserializer = new TagDeserializer(Version);
            Serializer   = new TagSerializer(Version);

            ResourceCaches = new ResourceCachesHaloOnline(this);
        }
示例#2
0
 public override void SaveStrings()
 {
     using (var stream = StringIdCacheFile.OpenWrite())
         StringTableHaloOnline.Save(stream);
 }