Exemplo n.º 1
0
            /// <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();
            }
Exemplo n.º 2
0
        /// <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();
            }
        }