/// <summary> /// Opens an existing TACT container and loads the Root and Encoding files /// </summary> /// <param name="directory"></param> /// <param name="product"></param> /// <param name="locale"></param> public void Open(string directory, string product, Locale locale) { ConfigContainer = new Configs.ConfigContainer(product, locale); ConfigContainer.OpenLocal(directory); if (uint.TryParse(ConfigContainer?.VersionsFile?.GetValue("BuildId", locale), out uint build)) { Build = build; } ApplyVersionSpecificSettings(build); IndexContainer = new Indices.IndexContainer(); IndexContainer.Open(directory); if (!ConfigContainer.EncodingEKey.IsEmpty) { EncodingFile = new Encoding.EncodingFile(BaseDirectory, ConfigContainer.EncodingEKey); // Open RootFile if (ConfigContainer.RootCKey.Value != null && EncodingFile.TryGetCKeyEntry(ConfigContainer.RootCKey, out var rootEKey)) { RootFile = new Root.RootFile(BaseDirectory, rootEKey.EKey); } // Open InstallFile if (ConfigContainer.InstallCKey.Value != null && EncodingFile.TryGetCKeyEntry(ConfigContainer.InstallCKey, out var installEKey)) { InstallFile = new Install.InstallFile(BaseDirectory, installEKey.EKey); } // Open DownloadFile if (ConfigContainer.DownloadCKey.Value != null && EncodingFile.TryGetCKeyEntry(ConfigContainer.DownloadCKey, out var downloadEKey)) { DownloadFile = new Download.DownloadFile(BaseDirectory, downloadEKey.EKey); } // Open DownloadSizeFile if (ConfigContainer.DownloadSizeCKey.Value != null && EncodingFile.TryGetCKeyEntry(ConfigContainer.DownloadSizeCKey, out var downloadSizeEKey)) { DownloadSizeFile = new Download.DownloadSizeFile(BaseDirectory, downloadSizeEKey.EKey); } } // Open PatchFile if (ConfigContainer.PatchEKey.Value != null) { PatchFile = new Patch.PatchFile(BaseDirectory, ConfigContainer.PatchEKey); } ApplyVersionSpecificSettings(Build); }
/// <summary> /// Opens an existing TACT container and loads the Root and Encoding files /// </summary> /// <param name="directory"></param> /// <param name="product"></param> /// <param name="locale"></param> public void Open(string directory, string product, Locale locale) { ConfigContainer = new Configs.ConfigContainer(product, locale); ConfigContainer.OpenLocal(directory); if (uint.TryParse(ConfigContainer?.VersionsFile?.GetValue("BuildId", locale), out uint build)) { Build = build; } IndexContainer = new Indices.IndexContainer(); IndexContainer.Open(directory); if (!ConfigContainer.EncodingEKey.IsEmpty) { EncodingFile = new Encoding.EncodingFile(BaseDirectory, ConfigContainer.EncodingEKey); if (EncodingFile.TryGetCKeyEntry(ConfigContainer.RootMD5, out var rootCEntry)) { RootFile = new Root.RootFile(BaseDirectory, rootCEntry.EKey); } } }