Beispiel #1
0
        public bool SaveFile(string fullPath)
        {
            bool result = false;

            try
            {
                FileStream    fs = File.Create(fullPath);
                BinaryWriterX bw = new BinaryWriterX(fs);

                // Byte Order
                bw.ByteOrder = Header.ByteOrderMark[0] > Header.ByteOrderMark[1] ? ByteOrder.LittleEndian : ByteOrder.BigEndian;

                // Header
                bw.WriteASCII(Header.Identifier);
                bw.Write(Header.ByteOrderMark);
                bw.Write(Header.Unknown1);
                bw.Write((byte)Header.EncodingByte);
                bw.Write(Header.Unknown2);
                bw.Write(Header.NumberOfSections);
                bw.Write(Header.Unknown3);
                bw.Write(Header.FileSize);
                bw.Write(Header.Unknown4);

                foreach (string section in SectionOrder)
                {
                    if (section == "LBL1")
                    {
                        WriteLBL1(bw);
                    }
                    else if (section == "TXT2")
                    {
                        WriteTXT2(bw);
                    }
                }

                // Update FileSize
                long fileSize = bw.BaseStream.Position;
                bw.BaseStream.Seek(Header.FileSizeOffset, SeekOrigin.Begin);
                bw.Write((UInt32)fileSize);

                bw.Close();
            }
            catch (Exception)
            { }

            return(result);
        }
Beispiel #2
0
        public byte[] ExportFileBytes()
        {
            MemoryStream stream = new MemoryStream();

            try
            {
                BinaryWriterX bw = new BinaryWriterX(stream);

                // Byte Order
                bw.ByteOrder = Header.ByteOrderMark[0] > Header.ByteOrderMark[1] ? ByteOrder.LittleEndian : ByteOrder.BigEndian;

                // Header
                bw.WriteASCII(Header.Identifier);
                bw.Write(Header.ByteOrderMark);
                bw.Write(Header.Unknown1);
                bw.Write((byte)Header.EncodingByte);
                bw.Write(Header.Unknown2);
                bw.Write(Header.NumberOfSections);
                bw.Write(Header.Unknown3);
                bw.Write(Header.FileSize);
                bw.Write(Header.Unknown4);

                foreach (string section in SectionOrder)
                {
                    if (section == "LBL1")
                    {
                        WriteLBL1(bw);
                    }
                    else if (section == "TXT2")
                    {
                        WriteTXT2(bw);
                    }
                }

                // Update FileSize
                long fileSize = bw.BaseStream.Position;
                bw.BaseStream.Seek(Header.FileSizeOffset, SeekOrigin.Begin);
                bw.Write((UInt32)fileSize);

                bw.Close();
            }
            catch (Exception)
            { }

            return(stream.ToArray());
        }