/// <summary> /// schreibt den Blockheader und die Blockdaten /// </summary> /// <param name="wr"></param> public new void Write(BinaryReaderWriter wr) { BinaryReaderWriter wrtmp = new BinaryReaderWriter(); base.Write(wrtmp); SubCount = (UInt16)DataSize.Count; //Unknown1 = (UInt16)(SubCount + 1); wrtmp.Write(Unknown1); wrtmp.Write(SubCount); for (int i = 0; i < DataSize.Count; i++) { wrtmp.Write(DataSize[i]); } wrtmp.Write(HasCopyright); wrtmp.Write(Unknown2); wrtmp.Write(Unknown3); wrtmp.Write(Unknown4); wrtmp.Write(Unknown5); wrtmp.Write(Unknown6); wrtmp.Write(Unknown7); for (int i = 0; i < Name.Count; i++) { wrtmp.WriteString(Name[i]); } wrtmp.Write(Unknown8); wrtmp.Write(Unknown9); wrtmp.Seek(1); wrtmp.Write((short)(wrtmp.Length - 3)); // Länge des Datenbereiches schreiben wrtmp.Seek(0); wr.Write(wrtmp.ToArray()); wrtmp.Dispose(); }
/// <summary> /// analysiert die Typen dieser Datei /// </summary> /// <param name="file"></param> public void AnalyzingTypes(string file) { FileInfo fi = new FileInfo(file); if (!fi.Exists) { Console.WriteLine("Die Datei '" + file + "' existiert nicht."); return; } using (BinaryReaderWriter br = new BinaryReaderWriter(file, true)) { string ext = fi.Extension.ToUpper(); BinaryReaderWriter brlbl = null; BinaryReaderWriter brtre = null; if (ext == ".IMG") { SimpleFilesystem sf = new SimpleFilesystem(); sf.Read(br); for (int i = 0; i < sf.FileCount; i++) { string subfile = sf.Filename(i); ext = subfile.Substring(subfile.Length - 4).ToUpper(); if (ext == ".RGN") { Console.WriteLine("Sub-Datei '" + subfile + "'"); uint flen = sf.Filesize(i); Console.WriteLine(string.Format("{0} Bytes ({1:F1} kB, {2:F1} MB)", flen, flen / 1024.0, flen / (1024.0 * 1024))); using (BinaryReaderWriter brf = sf.GetBinaryReaderWriter4File(subfile)) { Console.Error.WriteLine("analysiere " + Path.GetFileNameWithoutExtension(subfile) + " ..."); string basefilename = subfile.Substring(0, 8); brtre = brlbl = null; brtre = sf.GetBinaryReaderWriter4File(basefilename + ".TRE"); brlbl = sf.GetBinaryReaderWriter4File(basefilename + ".LBL"); AnalyzeFile(brf, brtre, brlbl, false); if (brlbl != null) { brlbl.Dispose(); } if (brtre != null) { brtre.Dispose(); } brf.Dispose(); } } } } else if (ext == ".RGN") { Console.Error.WriteLine("analysiere " + Path.GetFileNameWithoutExtension(file) + " ..."); brtre = brlbl = null; string basefilename = file.Substring(0, 8); if (File.Exists(basefilename + ".TRE")) { brtre = new BinaryReaderWriter(basefilename + ".TRE", true); } if (File.Exists(basefilename + ".LBL")) { brlbl = new BinaryReaderWriter(basefilename + ".LBL", true); } AnalyzeFile(br, brtre, brlbl, false); if (brlbl != null) { brlbl.Dispose(); } if (brtre != null) { brtre.Dispose(); } } br.Dispose(); } }