Пример #1
0
 public override int OnCalculateSize(bool force)
 {
     builder = new LabelBuilder();
     foreach (RSEQLabelNode node in Children)
         builder.Add(node.Id, node._name);
     _audioLen = 0;
     return _headerLen = 0x20 + _dataBuffer.Length + builder.GetSize();
 }
 public override int OnCalculateSize(bool force)
 {
     builder = new LabelBuilder();
     foreach (RSEQLabelNode node in Children)
     {
         builder.Add(node.Id, node._name);
     }
     _audioLen = 0;
     return(_headerLen = 0x20 + _dataBuffer.Length + builder.GetSize());
 }
Пример #3
0
        public override unsafe void Export(string outPath)
        {
            LabelBuilder labl;
            int          lablLen, size;
            VoidPtr      addr;

            Rebuild();

            if (_audioSource != DataSource.Empty)
            {
                //Get strings
                labl = new LabelBuilder();
                GetStrings(labl);
                lablLen = (labl.Count == 0) ? 0 : labl.GetSize();
                size    = WorkingUncompressed.Length + lablLen + _audioSource.Length;

                using (FileStream stream = new FileStream(outPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
                {
                    stream.SetLength(size);
                    using (FileMap map = FileMap.FromStreamInternal(stream, FileMapProtect.ReadWrite, 0, size))
                    {
                        addr = map.Address;

                        //Write header
                        Memory.Move(addr, WorkingUncompressed.Address, (uint)WorkingUncompressed.Length);
                        addr += WorkingUncompressed.Length;

                        //Write strings
                        if (lablLen > 0)
                        {
                            labl.Write(addr);
                        }
                        addr += lablLen;

                        //Write data
                        Memory.Move(addr, _audioSource.Address, (uint)_audioSource.Length);
                    }
                }
            }
            else
            {
                base.Export(outPath);
            }
        }
Пример #4
0
        public override void Export(string outPath)
        {
            LabelBuilder labl;
            int          lablLen, size;
            VoidPtr      addr;

            Rebuild();

            //Get strings
            labl = new LabelBuilder();
            GetStrings(labl);
            lablLen = labl.Count == 0 ? 0 : labl.GetSize();
            size    = WorkingUncompressed.Length + lablLen + _audioSource.Length;

            using (FileStream stream =
                       new FileStream(outPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
            {
                stream.SetLength(size);
                using (FileMap map = FileMap.FromStreamInternal(stream, FileMapProtect.ReadWrite, 0, size))
                {
                    addr = map.Address;

                    //Write headers
                    MoveRawUncompressed(addr, WorkingUncompressed.Length);
                    addr += WorkingUncompressed.Length;

                    //Write strings
                    if (lablLen > 0)
                    {
                        labl.Write(addr);
                    }

                    addr += lablLen;

                    //Write sound data
                    int audioLen = _audioSource.Length;
                    Memory.Move(addr, _audioSource.Address, (uint)audioLen);
                    _audioSource.Close();
                    _audioSource = new DataSource(addr, audioLen);
                }
            }
        }
        public override void OnRebuild(VoidPtr address, int length, bool force)
        {
            RSEQHeader *header = (RSEQHeader *)address;

            header->_header.Endian       = Endian.Big;
            header->_header._tag         = RSEQHeader.Tag;
            header->_header._version     = 0x100;
            header->_header._length      = length;
            header->_header._numEntries  = 2;
            header->_header._firstOffset = 0x20;
            header->_dataOffset          = 0x20;
            header->_dataLength          = _dataBuffer.Length;
            header->_lablOffset          = 0x20 + _dataBuffer.Length;
            header->_lablLength          = builder.GetSize();

            //MML Parser is not complete yet, so copy raw data over
            Memory.Move((VoidPtr)header + header->_dataOffset, _dataBuffer.Address, (uint)_dataBuffer.Length);

            builder.Write((VoidPtr)header + header->_lablOffset);
        }
        public unsafe override void Export(string outPath)
        {
            LabelBuilder labl;
            int lablLen, size;
            VoidPtr addr;

            Rebuild();

            if (_audioSource != DataSource.Empty)
            {
                //Get strings
                labl = new LabelBuilder();
                GetStrings(labl);
                lablLen = (labl.Count == 0) ? 0 : labl.GetSize();
                size = WorkingUncompressed.Length + lablLen + _audioSource.Length;

                using (FileStream stream = new FileStream(outPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
                {
                    stream.SetLength(size);
                    using (FileMap map = FileMap.FromStreamInternal(stream, FileMapProtect.ReadWrite, 0, size))
                    {
                        addr = map.Address;

                        //Write header
                        Memory.Move(addr, WorkingUncompressed.Address, (uint)WorkingUncompressed.Length);
                        addr += WorkingUncompressed.Length;

                        //Write strings
                        if (lablLen > 0)
                            labl.Write(addr);
                        addr += lablLen;

                        //Write data
                        Memory.Move(addr, _audioSource.Address, (uint)_audioSource.Length);
                    }
                }
            }
            else
                base.Export(outPath);
        }