static void ExtractGameTablesFiles() { Console.WriteLine("Extracting game tables...\n"); string path = $"{BaseDirectory}/gt"; CreateDirectory(path); uint count = 0; foreach (var fileName in FileList.GameTables) { var dbcFile = CascHandler.OpenFile(fileName); if (dbcFile == null) { Console.WriteLine($"Unable to open file {fileName} in the archive\n"); continue; } string file = $"{path}/{fileName.Replace("GameTables\\", "")}"; if (!File.Exists(file)) { FileWriter.WriteFile(dbcFile, file); ++count; } } Console.WriteLine($"Extracted {count} files\n\n"); }
static void ExtractDbcFiles() { string path = $"{BaseDirectory}/dbc"; CreateDirectory(path); Console.WriteLine("Extracting db2 files..."); uint count = 0; for (Locale locale = 0; locale < Locale.Total; ++locale) { if (locale == Locale.None) { continue; } if (!Convert.ToBoolean(installedLocalesMask & SharedConst.WowLocaleToCascLocaleFlags[(int)locale])) { continue; } string currentPath = $"{path}/{locale}"; CreateDirectory(currentPath); CascHandler.Root.SetFlags(SharedConst.WowLocaleToCascLocaleFlags[(int)locale]); foreach (var(fileDataId, fileName) in FileList.DBFilesClientList) { var dbcStream = CascHandler.OpenFile(fileDataId); if (dbcStream == null) { Console.WriteLine($"Unable to open file {fileName} in the archive for locale {locale}"); continue; } // Unused DB2 file, 0 records var reader = new BinaryReader(dbcStream); reader.ReadUInt32(); var recordCount = reader.ReadUInt32(); if (recordCount == 0) { continue; } reader.BaseStream.Position = 0; dbcStream.Position = 0; FileWriter.WriteFile(dbcStream, currentPath + $"/{ fileName.Replace(@"\\", "").Replace(@"DBFilesClient\", "")}"); count++; } } Console.WriteLine($"Extracted {count} db2 files."); CascHandler.Root.SetFlags(firstInstalledLocale); }
static void ExtractDbcFiles() { string path = $"{BaseDirectory}/dbc"; CreateDirectory(path); Console.WriteLine("Extracting db2 files..."); uint count = 0; for (Locale locale = 0; locale < Locale.Total; ++locale) { if (locale == Locale.None) { continue; } if (!Convert.ToBoolean(installedLocalesMask & SharedConst.WowLocaleToCascLocaleFlags[(int)locale])) { continue; } string currentPath = $"{path}/{locale}"; CreateDirectory(currentPath); CascHandler.Root.SetFlags(SharedConst.WowLocaleToCascLocaleFlags[(int)locale], ContentFlags.None); foreach (var fileName in FileList.DBFilesClientList) { var dbcStream = CascHandler.OpenFile(fileName); if (dbcStream == null) { Console.WriteLine($"Unable to open file {fileName} in the archive for locale {locale}\n"); continue; } FileWriter.WriteFile(dbcStream, currentPath + $"/{ fileName.Replace(@"\\", "").Replace(@"DBFilesClient\", "")}"); count++; } } Console.WriteLine($"Extracted {count} db2 files."); CascHandler.Root.SetFlags(firstInstalledLocale, ContentFlags.None); }
static void ExtractCameraFiles() { Dictionary <uint, CinematicCameraRecord> storage = DBReader.Read <CinematicCameraRecord>("DBFilesClient\\CinematicCamera.db2"); if (storage == null) { Console.WriteLine("Invalid CinematicCamera.db2 file format. Camera extract aborted.\n"); return; } Console.WriteLine($"Extracting ({storage.Values.Count} CinematicCameras!)\n"); string path = $"{BaseDirectory}/cameras"; CreateDirectory(path); // extract M2s uint count = 0; foreach (var cameraRecord in storage.Values) { var cameraStream = CascHandler.OpenFile((int)cameraRecord.ModelFileDataID); if (cameraStream != null) { string file = path + $"/FILE{cameraRecord.ModelFileDataID:X8}.xxx"; if (!File.Exists(file)) { FileWriter.WriteFile(cameraStream, file); ++count; } } else { Console.WriteLine($"Unable to open file {$"File{cameraRecord.ModelFileDataID:X8}.xxx"} in the archive: \n"); } } Console.WriteLine($"Extracted {count} Camera files."); }
/// <summary> /// Run this code at launch /// </summary> void Start() { cascHandler = CASC.GetComponent <CascHandler>(); uiManager.Initialize(); UserPreferences.Load(); Settings.ApplicationPath = Application.streamingAssetsPath; Settings.Load(); SettingsInit(); ADT.Initialize(CASC.GetComponent <CascHandler>().cascHandler); if (Settings.GetSection("misc").GetString("wowsource") == null || Settings.GetSection("misc").GetString("wowsource") == "") { } else { CASCConfig config = null; if (Settings.GetSection("misc").GetString("wowsource") == "game") { config = CASCConfig.LoadLocalStorageConfig(Settings.GetSection("path").GetString("selectedpath"), Settings.GetSection("misc").GetString("localproduct")); } else if (Settings.GetSection("misc").GetString("wowsource") == "online") { config = CASCConfig.LoadOnlineStorageConfig(Settings.GetSection("misc").GetString("onlineproduct"), "us", true); } //CASC.GetComponent<CascHandler>().InitCasc(config, firstInstalledLocale); new Thread(() => { cascHandler.InitCasc(config, firstInstalledLocale); }).Start(); } }
public void Initialize() { Casc = CASC.GetComponent <CascHandler>(); // Update Toggles // if (Settings.GetSection("misc").GetString("wowsource") == "game") { ToggleGame.isOn = true; } else if (Settings.GetSection("misc").GetString("wowsource") == "online") { ToggleOnline.isOn = true; } else { ToggleGame.isOn = true; } WoWPath.onValueChanged.AddListener(delegate { ValueChangeCheck(); }); // Update WoW Path // if (Settings.GetSection("path").GetString("selectedpath") != null) { WoWPath.text = Settings.GetSection("path").GetString("selectedpath"); } string onlineProduct = Settings.GetSection("misc").GetString("onlineproduct"); string localProduct = Settings.GetSection("misc").GetString("localproduct"); // Update Online Product // if (onlineProduct != null || onlineProduct != "" || onlineProduct != string.Empty) { switch (onlineProduct) { case "wowt": DropdownOnline.value = 0; break; case "wow": DropdownOnline.value = 1; break; case "wow_classic_beta": DropdownOnline.value = 2; break; case "wow_classic": DropdownOnline.value = 3; break; case "wow_beta": DropdownOnline.value = 4; break; default: DropdownOnline.value = 5; break; } } // Update Game Product // if (localProduct != null || localProduct != "" || localProduct != string.Empty) { switch (localProduct) { case "wowt": DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wowt")); }); break; case "wow": DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow")); }); break; case "wow_classic_beta": DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow_classic_beta")); }); break; case "wow_classic": DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow_classic")); }); break; case "wow_beta": DropdownProduct.value = DropdownProduct.options.FindIndex((i) => { return(i.text.Equals("wow_beta")); }); break; default: DropdownProduct.value = 0; break; } } }