コード例 #1
0
ファイル: SongData.cs プロジェクト: zurgeg/riivolution
        public static SongData CreateFromXML(Stream stream, string rootpath)
        {
            SongData    data   = new SongData();
            XmlReader   reader = XmlReader.Create(stream);
            XmlDocument doc    = new XmlDocument();

            doc.Load(reader);
            data.PopulateFromXML(doc.DocumentElement, rootpath);
            return(data);
        }
コード例 #2
0
ファイル: ImportMap.cs プロジェクト: zurgeg/riivolution
        public void AddSongs(PlatformData data, ProgressIndicator progress)
        {
            if (Root == null)
            {
                return;
            }

            foreach (XmlNode node in Root.GetElementsByTagName("addsong"))
            {
                XmlElement element = node as XmlElement;

                if (element.Attributes["game"] != null && int.Parse(element.Attributes["game"].Value) != (int)data.Game)
                {
                    continue;
                }

                SongData song = new SongData(data);
                if (element.Attributes["id"] != null)
                {
                    song.ID = element.Attributes["id"].Value;
                }
                song.PopulateFromXML(element, RootPath);
                data.Platform.AddSong(data, song, progress);
            }

            data.Mutex.WaitOne();
            IList <FormatData> songs = data.Songs;

            foreach (XmlNode node in Root.GetElementsByTagName("deletesong"))
            {
                XmlElement element = node as XmlElement;

                if (element.Attributes["game"] != null && int.Parse(element.Attributes["game"].Value) != (int)data.Game)
                {
                    continue;
                }

                if (element.Attributes["id"] != null)
                {
                    foreach (FormatData song in songs.Where(f => string.Compare(f.Song.ID, element.Attributes["id"].Value, true) == 0).ToList())
                    {
                        data.RemoveSong(song);
                    }
                }

                if (element.Attributes["name"] != null)
                {
                    foreach (FormatData song in songs.Where(f => string.Compare(f.Song.Name, element.Attributes["name"].Value, true) == 0).ToList())
                    {
                        data.RemoveSong(song);
                    }
                }
            }
            data.Mutex.ReleaseMutex();
        }
コード例 #3
0
ファイル: ImportMap.cs プロジェクト: zurgeg/riivolution
        public bool Populate(SongData song)
        {
            bool ret = false;

            string idprefix   = string.Empty;
            string nameprefix = string.Empty;
            string songid     = song.ID;

            if (Root == null)
            {
                goto populateend;
            }

            foreach (XmlElement node in Root.GetElementsByTagName("global"))
            {
                song.PopulateFromXML(node as XmlElement, RootPath);
                ret = true;
                foreach (XmlElement element in node.GetElementsByTagName("idprefix"))
                {
                    idprefix = element.InnerText;
                }
                foreach (XmlElement element in node.GetElementsByTagName("nameprefix"))
                {
                    nameprefix = element.InnerText;
                }
            }
            if (songid.StartsWith(idprefix))
            {
                songid = songid.Substring(idprefix.Length);
            }

            foreach (XmlElement element in Root.GetElementsByTagName("song"))
            {
                if (element.Attributes["game"] != null && int.Parse(element.Attributes["game"].Value) != (int)Game)
                {
                    continue;
                }

                if (string.Compare(element.Attributes["id"].Value, songid, true) == 0)
                {
                    song.PopulateFromXML(element, RootPath);
                    ret = true;
                    goto populateend;
                }
            }

populateend:
            if (songid == song.ID)
            {
                if (idprefix.Length > 0)
                {
                    song.ID = idprefix + song.ID;
                }
                if (nameprefix.Length > 0)
                {
                    switch (ApplyNamePrefix)
                    {
                    case NamePrefix.Prefix:
                        song.Name = nameprefix + " " + song.Name;
                        break;

                    case NamePrefix.Postfix:
                        song.Name = song.Name + " " + nameprefix;
                        break;
                    }
                }
            }
            if (!song.Pack.HasValue() && song.Game != Game.Unknown)
            {
                song.Pack = Platform.GameName(song.Game);
            }
            return(ret);
        }