Example #1
0
        private void ReadDat4File(string filename)
        {
            if (filename.Length < 1 || !File.Exists(filename))
            {
                return;
            }

            StringBuilder builder = new StringBuilder();

            var md = new RageAudioMetadata5();

            using (RageDataFileReadReference file = new RageDataFileReadReference(filename))
            {
                md.Read(file);
            }

            //   using (RageDataFileWriteReference file = new RageDataFileWriteReference(Path.ChangeExtension(filename, ".output.rel54")))
            //    {
            //       md.Write(file);
            //   }

            // File.WriteAllText(Path.ChangeExtension(filename, ".txt"), md.ToString());

            var xml = new ResourceXmlWriter5(Path.ChangeExtension(filename, ".xml"));

            xml.WriteData(md);

            /*
             * using (StreamWriter writer = new StreamWriter(Path.ChangeExtension(filename, ".txt")))
             * {
             *  writer.Write(md.ToString());
             * }*/
        }
        public void WriteData(RageAudioMetadata5 data)
        {
            using (var writer = XmlWriter.Create(_filename,
                                                 new XmlWriterSettings()
            {
                Indent = true, WriteEndDocumentOnClose = true
            }))
            {
                writer.WriteStartDocument();

                writer.WriteStartElement(data.Type.ToString());

                writer.WriteStartElement("waveContainers");

                foreach (var item in data.StringTable)
                {
                    writer.WriteElementString("item", item);
                }

                writer.WriteEndElement();

                writer.WriteStartElement("dataEntries");

                foreach (var item in data.DataItems)
                {
                    Serialize(writer, item);

                    // writer.WriteWhitespace("\n\n");
                }

                writer.WriteEndElement();

/*
 *              writer.WriteStartElement("waveTracks");
 *
 *              foreach (var item in data.WaveTracks)
 *              {
 *                  writer.WriteElementString("item", item.Value.ToString());
 *              }
 *
 *              writer.WriteEndElement();*/

                /*      writer.WriteStartElement("waveContainers");
                 *
                 *    foreach (var item in data.WaveContainers)
                 *    {
                 *        writer.WriteElementString("item", item.Value.ToString());
                 *    }
                 *
                 *    writer.WriteEndElement();
                 *
                 */

                writer.WriteEndElement();

                writer.Close();
            }
        }
        public RageAudioMetadata5 ReadData()
        {
            RageAudioMetadata5 data = new RageAudioMetadata5
            {
                Type = RageAudioMetadataFileType.Dat54DataEntries
            };

            List <string> stringTable = new List <string>();

            List <audSoundBase> sounds = new List <audSoundBase>();

            using (XmlReader reader = XmlReader.Create(_filename))
            {
                reader.ReadToFollowing("waveContainers");

                if (reader.ReadToDescendant("item"))
                {
                    string str = reader.ReadElementContentAsString();

                    stringTable.Add(str);

                    while (reader.ReadToNextSibling("item"))
                    {
                        str = reader.ReadElementContentAsString();

                        stringTable.Add(str);
                    }
                }

                data.StringTable = stringTable.ToArray();

                reader.ReadToFollowing("dataEntries");

                while (reader.Read())
                {
                    if (!reader.IsEmptyElement && reader.NodeType == XmlNodeType.Element && reader.Name != string.Empty)
                    {
                        if (!reader.IsStartElement())
                        {
                            break;
                        }

                        var result = DeserializeSound(reader, reader.Name);

                        if (result != null)
                        {
                            sounds.Add(result);
                        }
                    }
                }

                data.DataItems = sounds.ToArray();
            }

            return(data);
        }