public void Unpack() { Clean(); string tacFilename = Path.GetFileName(TADFile.Filename).ToLower().Replace(".tad", ".tac"); string tacPath = Path.GetDirectoryName(TADFile.Filename) + "\\" + tacFilename; string targetDirectory = Path.GetDirectoryName(tacPath) + "\\" + "_" + tacFilename + "_"; Header.RelativeOutputFolder = "\\" + Helper.GetRelativePath(targetDirectory, Path.GetDirectoryName(tacPath)); Header.RelativeTACPath = "\\" + Helper.GetRelativePath(tacPath, Path.GetDirectoryName(tacPath)); Header.RelativeTADPath = "\\" + Helper.GetRelativePath(TADFile.Filename, Path.GetDirectoryName(tacPath)); TACFile tacFile = new TACFile(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(tacFile); Thread thread = new Thread(delegate() { tacFile.Unpack(tacPath, targetDirectory, TADFile); }); loadingDialog.ShowDialog(thread); string cachePath = Path.GetDirectoryName(tacPath) + "\\" + Path.GetFileName(TADFile.Filename).ToLower().Replace(".tad", ".cache"); Filename = cachePath; Write(cachePath); }
private void button_Merge_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Filename Database Dump (*.bin)|*.bin"; if (openFileDialog.ShowDialog() == DialogResult.OK) { if (!Helper.IsFileValid(openFileDialog.FileName)) { return; } List <FilenameDatabaseEntry> newEntries; using (FileStream stream = File.Open(openFileDialog.FileName, FileMode.Open)) { BinaryFormatter formatter = new BinaryFormatter(); newEntries = (List <FilenameDatabaseEntry>)formatter.Deserialize(stream); } LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(this); Thread thread = new Thread(delegate() { Merge(newEntries); }); loadingDialog.ShowDialog(thread); } FilenameDatabase.Save(); filenameDatabaseDataTable1.UpdateView(false); }
public void Export(string tadFilename, bool exportModified = true) { string tacPath = Path.GetDirectoryName(tadFilename) + "\\" + Path.GetFileName(tadFilename).ToLower().Replace(".tad", ".tac"); string inputFolder = Path.GetDirectoryName(Filename) + Header.RelativeOutputFolder; if (exportModified) { LoadingDialog loadingDialogHash = new LoadingDialog(); loadingDialogHash.SetData(this); Thread threadHash = new Thread(delegate() { CalculateHashes(); }); loadingDialogHash.ShowDialog(threadHash); } TACFile tacFile = new TACFile(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(tacFile); Thread thread = new Thread(delegate() { tacFile.Pack(tacPath, inputFolder, TADFile); }); loadingDialog.ShowDialog(thread); TADFile.Write(tadFilename); }
private void mapFilenamesToTADToolStripMenuItem_Click(object sender, EventArgs e) { if (m_cacheFile == null || m_tadFile == null) { return; } FilenameDatabase filenameDB = new FilenameDatabase(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(filenameDB); Thread thread = new Thread(delegate() { filenameDB.MapFilenamesToTADInstance(m_cacheFile); }); loadingDialog.ShowDialog(thread); DescriptionDatabase descDB = new DescriptionDatabase(); loadingDialog = new LoadingDialog(); loadingDialog.SetData(descDB); thread = new Thread(delegate() { descDB.MapDescriptionToTADInstance(m_tadFile); }); loadingDialog.ShowDialog(thread); tadDataTable1.SetCache(m_cacheFile); m_cacheFile.Write(m_cacheFile.Filename); }
private void button_Merge_Click(object sender, EventArgs e) { LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(this); Thread thread = new Thread(delegate() { Merge(); }); loadingDialog.ShowDialog(thread); }
private void button_Fetch_Click(object sender, EventArgs e) { WulinshuRaymonfAPI api = new WulinshuRaymonfAPI(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(api); Thread thread = new Thread(delegate() { api.FetchData("both"); }); loadingDialog.ShowDialog(thread); WulinshuRaymonfAPI.Write(); wulinshuRaymonfDataTable1.SetData(WulinshuRaymonfAPI.Entries); }
private void button_Refresh_Click(object sender, EventArgs e) { if (m_cacheFile == null) { return; } LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(m_cacheFile); Thread thread = new Thread(delegate() { m_cacheFile.CalculateHashes(); UpdateView(); }); loadingDialog.ShowDialog(thread); }
private void button_Generate_Click(object sender, EventArgs e) { VistaFolderBrowserDialog folderDialog = new VistaFolderBrowserDialog(); if (folderDialog.ShowDialog() == DialogResult.OK) { FilenameCrawler crawler = new FilenameCrawler(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(crawler); Thread thread = new Thread(delegate() { crawler.GenerateFilenameDatabase(folderDialog.SelectedPath); }); loadingDialog.ShowDialog(thread); FilenameDatabase.Save(); filenameDatabaseDataTable1.UpdateView(false); } }
public void Pack() { string tacPath = Path.GetDirectoryName(Filename) + Header.RelativeTACPath; string inputFolder = Path.GetDirectoryName(Filename) + Header.RelativeOutputFolder; TACFile tacFile = new TACFile(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(tacFile); Thread thread = new Thread(delegate() { tacFile.Pack(tacPath, inputFolder, TADFile, false); }); loadingDialog.ShowDialog(thread); string cachePath = Path.GetDirectoryName(tacPath) + "\\" + Path.GetFileName(TADFile.Filename).ToLower().Replace(".tad", ".cache"); Filename = cachePath; Write(cachePath); }
public void ConvertLegacy(string filename) { DataCollection dataCollection; using (FileStream reader = new FileStream(filename, FileMode.Open)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); dataCollection = (DataCollection)binaryFormatter.Deserialize(reader); } if (dataCollection == null) { return; } Filename = filename.Replace(".shdcache", ".cache"); TADFile = new TADFile(); TADFile.Filename = filename.Replace(".shdcache", ".tad"); TADFile.Header.FileCount = BitConverter.ToUInt32(dataCollection.Header.FileCount1, 0); TADFile.Header.HeaderChecksum = BitConverter.ToUInt32(dataCollection.Header.HeaderChecksum, 0); TADFile.Header.TacSize = BitConverter.ToUInt32(dataCollection.Header.TacSize, 0); TADFile.Header.UnixTimestamp = new DateTime(1970, 1, 1).AddSeconds(BitConverter.ToInt32(dataCollection.Header.UnixTimestamp, 0)); string fileDir = Path.GetDirectoryName(Filename); string dir = fileDir; if (dataCollection.Files.Count > 0) { dir = Path.GetDirectoryName(dataCollection.Files[0].Meta.FilePath); } Header.RelativeOutputFolder = "\\" + Helper.GetRelativePath(dir, fileDir); Header.RelativeTADPath = "\\" + Helper.GetRelativePath(TADFile.Filename, fileDir); Header.RelativeTACPath = "\\" + Helper.GetRelativePath(TADFile.Filename.Replace(".tad", ".tac"), fileDir); foreach (FileStructure file in dataCollection.Files) { TADFileEntry entry = new TADFileEntry(); entry.FileOffset = BitConverter.ToUInt32(file.FileStart, 0); entry.FileSize = BitConverter.ToUInt32(file.FileSize, 0); entry.RelativePath = Helper.GetRelativePath(file.Meta.FilePath, dir); entry.Index = file.Meta.Index; byte[] firstHash = new byte[4]; Array.Copy(file.Hash1, firstHash, 4); entry.FirstHash = BitConverter.ToUInt32(firstHash, 0); byte[] secondHash = new byte[4]; Array.Copy(file.Hash1, 4, secondHash, 0, 4); entry.SecondHash = BitConverter.ToUInt32(secondHash, 0); byte[] unknown = new byte[4]; Array.Copy(file.Hash2, 0, unknown, 0, 4); entry.Unknown = BitConverter.ToUInt32(unknown, 0); entry.MD5Checksum = file.Meta.MD5Hash; TADFile.FileEntries.Add(entry); } FilenameDatabase filenameDB = new FilenameDatabase(); LoadingDialog loadingDialog = new LoadingDialog(); loadingDialog.SetData(filenameDB); Thread thread = new Thread(delegate() { filenameDB.MapFilenamesToTADInstance(this); }); loadingDialog.ShowDialog(thread); DescriptionDatabase descDB = new DescriptionDatabase(); loadingDialog = new LoadingDialog(); loadingDialog.SetData(descDB); thread = new Thread(delegate() { descDB.MapDescriptionToTADInstance(TADFile); }); loadingDialog.ShowDialog(thread); Write(Filename); if (File.Exists(filename)) { File.Delete(filename); } }