public static void DumpTAHEntries(Stream source) { TAHFile tah = new TAHFile(source); try { tah.LoadEntries(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); return; } foreach (string file in tah.Files.Files) { if (Path.GetExtension(file) == ".tso") { Console.WriteLine(file); } } foreach (TAHEntry ent in tah.EntrySet.Entries) { if (Path.GetExtension(ent.FileName) == ".tso") { byte[] data = TAHUtil.ReadEntryData(tah.Reader, ent); BinaryWriter writer = new BinaryWriter(File.Create(ent.FileName), System.Text.Encoding.Default); writer.Write(data); writer.Close(); } } }
// TAHからファイルを読み取る. private byte[] getTahFile(string file) { TDCGExplorer.ArcsDatabase arcDB = TDCGExplorer.TDCGExplorer.ArcsDB; string filename = file.ToLower(); byte[] filedata = null; List <ArcsTahFilesEntry> tahs = arcDB.GetTahFilesEntry(TDCGExplorer.TAHUtil.CalcHash(filename)); foreach (ArcsTahFilesEntry tahfile in tahs) { if (tahfile.path.ToLower() == filename) { ArcsTahEntry arcs = arcDB.GetTah(tahfile.tahid); using (Stream file_stream = File.OpenRead(Path.Combine(TDCGExplorer.TDCGExplorer.SystemDB.arcs_path, arcs.path))) { TAHFile tah = new TAHFile(file_stream); try { tah.LoadEntries(); foreach (TAHEntry ent in tah.EntrySet.Entries) { if (ent.FileName != null && ent.FileName.ToLower() == filename) { filedata = TAHUtil.ReadEntryData(tah.Reader, ent); break; } } } catch (Exception) { } } break; } } return(filedata); }
private string FindFromZipTahs(string filename, int id) { string retval = ""; List <ArcsTahFilesEntry> files = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTahFilesEntries(TAHUtil.CalcHash("script/" + filename + ".tbn")); if (files.Count > 0) { ArcsTahFilesEntry file = null; ArcsZipTahEntry tah = null; int pastVersion = -1; foreach (ArcsTahFilesEntry subfile in files) { ArcsZipTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTah(subfile.tahid); if (subtah.version > pastVersion) { file = subfile; tah = subtah; pastVersion = subtah.version; } } if (tah != null) { ArcsZipArcEntry zip = TDCGExplorer.TDCGExplorer.ArcsDB.GetZip(tah.zipid); if (zip != null) { retval = Path.GetDirectoryName(zip.path) + "\\" + zip.GetDisplayPath() + "\\" + tah.path; LoadTso(new GenericZipsTahInfo(tah), file, id); } } } return(retval); }
private string FindFromArcsTahs(string filename, int id) { string retval = ""; List <ArcsTahFilesEntry> files = TDCGExplorer.TDCGExplorer.ArcsDB.GetTahFilesEntry(TAHUtil.CalcHash("script/" + filename + ".tbn")); if (files.Count > 0) { ArcsTahFilesEntry file = null; ArcsTahEntry tah = null; int pastVersion = -1; foreach (ArcsTahFilesEntry subfile in files) { ArcsTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetTah(subfile.tahid); if (subtah.version > pastVersion) { file = subfile; tah = subtah; pastVersion = subtah.version; } } if (tah != null) { retval = tah.path; LoadTso(new GenericArcsTahInfo(tah), file, id); } } //TDCGExplorer.TDCGExplorer.FigureLoad = true; return(retval); }
private void assembleTsoData() { foreach (LoadTsoInfo tsoload in loadtsoinfo) { GenericTahInfo info = tsoload.info; ArcsTahFilesEntry file = tsoload.file; int id = tsoload.id; try { // tso名を取得する. string tsoname; using (GenericTAHStream tahstream = new GenericTAHStream(info, file)) { using (MemoryStream memorystream = new MemoryStream()) { ZipFileUtil.CopyStream(tahstream.stream, memorystream); tsoname = TDCGTbnUtil.GetTsoName(memorystream.ToArray()); } } GenericTahInfo tsoinfo = null; ArcsTahFilesEntry tso = null; if (info.zipid < 0) {// Arcsの場合 int pastVersion = -1; ArcsTahEntry tahinfo = null; List <ArcsTahFilesEntry> tsos = TDCGExplorer.TDCGExplorer.ArcsDB.GetTahFilesEntry(TAHUtil.CalcHash(tsoname)); foreach (ArcsTahFilesEntry subfile in tsos) { ArcsTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetTah(subfile.tahid); if (subtah.version > pastVersion) { tso = subfile; tahinfo = subtah; pastVersion = subtah.version; } } tsoinfo = new GenericArcsTahInfo(tahinfo); } else {// zipの場合 int pastVersion = -1; ArcsZipTahEntry tahinfo = null; List <ArcsTahFilesEntry> tsos = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTahFilesEntries(TAHUtil.CalcHash(tsoname)); foreach (ArcsTahFilesEntry subfile in tsos) { ArcsZipTahEntry subtah = TDCGExplorer.TDCGExplorer.ArcsDB.GetZipTah(subfile.tahid); if (subtah.version > pastVersion) { tso = subfile; tahinfo = subtah; pastVersion = subtah.version; } } tsoinfo = new GenericZipsTahInfo(tahinfo); } if (tsoinfo != null && tso != null) { // TSOを読み込む using (GenericTAHStream tahstream = new GenericTAHStream(tsoinfo, tso)) { using (MemoryStream memorystream = new MemoryStream()) { ZipFileUtil.CopyStream(tahstream.stream, memorystream); PNGTsoData tsodata = new PNGTsoData(); tsodata.tsoID = (uint)id; tsodata.tsodata = memorystream.ToArray(); tsoDataList.Add(tsodata); } } } } catch (Exception) { } } }