public static void InitMisc() { var dbPath = Flags.ScratchDBPath; if (Flags.Deduplicate) { Logger.Warn("ScratchDB", "Will attempt to deduplicate files if extracting..."); if (!string.IsNullOrWhiteSpace(Flags.ScratchDBPath)) { Logger.Warn("ScratchDB", "Loading Scratch database..."); if (!File.Exists(dbPath) || new DirectoryInfo(dbPath).Exists) { dbPath = Path.Combine(Path.GetFullPath(Flags.ScratchDBPath), "Scratch.db"); } Combo.ScratchDBInstance.Load(dbPath); } } if (!Flags.NoGuidNames) { IO.LoadGUIDTable(Flags.OnlyCanonical); } Sound.WwiseBank.GetReady(); }
public static void SaveScratchDatabase() { if (!string.IsNullOrWhiteSpace(Flags.ScratchDBPath)) { var dbPath = Flags.ScratchDBPath; if (!File.Exists(dbPath) || new DirectoryInfo(dbPath).Exists) { dbPath = Path.Combine(Path.GetFullPath(Flags.ScratchDBPath), "Scratch.db"); } if (Flags.Deduplicate && !string.IsNullOrWhiteSpace(dbPath)) { Logger.Warn("ScratchDB", "Saving Scratch database..."); Combo.ScratchDBInstance.Save(dbPath); } } }
public static void InitStorage(bool online = false) // turnin offline off again, can cause perf issues with bundle hack // Attempt to load language via registry, if they were already provided via flags then this won't do anything { if (!Flags.NoLanguageRegistry) { TryFetchLocaleFromRegistry(); } Logger.Info("CASC", $"Text Language: {Flags.Language} | Speech Language: {Flags.SpeechLanguage}"); var args = new ClientCreateArgs { SpeechLanguage = Flags.SpeechLanguage, TextLanguage = Flags.Language, HandlerArgs = new ClientCreateArgs_Tank { CacheAPM = Flags.UseCache, ManifestRegion = Flags.RCN ? ProductHandler_Tank.REGION_CN : ProductHandler_Tank.REGION_DEV }, Online = online }; LoadHelper.PreLoad(); Client = new ClientHandler(Flags.OverwatchDirectory, args); LoadHelper.PostLoad(Client); if (args.TextLanguage != "enUS") { Logger.Warn("Core", "Reminder! When extracting data in other languages, the names of the heroes/skins/etc must be in the language you have chosen."); } if (Client.AgentProduct.ProductCode != "pro") { Logger.Warn("Core", $"The branch \"{Client.AgentProduct.ProductCode}\" is not supported!. This might result in failure to load. Proceed with caution."); } var clientLanguages = Client.AgentProduct.Settings.Languages.Select(x => x.Language).ToArray(); if (!clientLanguages.Contains(args.TextLanguage)) { Logger.Warn("Core", "Battle.Net Agent reports that text language {0} is not installed.", args.TextLanguage); } else if (!clientLanguages.Contains(args.SpeechLanguage)) { Logger.Warn("Core", "Battle.Net Agent reports that speech language {0} is not installed.", args.SpeechLanguage); } TankHandler = Client.ProductHandler as ProductHandler_Tank; if (TankHandler == null) { Logger.Error("Core", $"Not a valid Overwatch installation (detected product: {Client.Product})"); return; } BuildVersion = uint.Parse(Client.InstallationInfo.Values["Version"].Split('.').Last()); if (BuildVersion < 39028) { Logger.Error("Core", "DataTool doesn't support Overwatch versions below 1.14. Please use OverTool."); } else if (BuildVersion < ProductHandler_Tank.VERSION_152_PTR) { Logger.Error("Core", "This version of DataTool doesn't support versions of Overwatch below 1.52. Please downgrade DataTool."); } InitTrackedFiles(); }