Пример #1
0
        public void ReadXml(XmlReader reader)
        {
            XPathDocument xPath = new XPathDocument(reader);
            XPathNavigator navigator = xPath.CreateNavigator();

            XPathNodeIterator iterator = navigator.Select("//GameInfoEntries/GameInfo");
            while (iterator.MoveNext())
            {
                GameInfo entry = new GameInfo();
                entry.RomPath = iterator.Current.GetAttribute("romPath", String.Empty);
                entry.Game = new Game(iterator.Current.GetAttribute("md5", String.Empty), entry.RomPath);
               
                if (iterator.Current.MoveToFirstChild())
                {
                    do
                    {
                        entry.SetValue(iterator.Current.Name, iterator.Current.InnerXml);
                    }
                    while (iterator.Current.MoveToNext());
                }                

                _entries.Add(entry);
            }
        }
Пример #2
0
        private IEnumerable<GameInfo> FindNewGames()
        {
            List<GameInfo> newGames = new List<GameInfo>();

            foreach (var path in _directoryManager.GetFilePaths(EmulationContext.Empty, GameLibraryModule.RomPathKey, GameLibraryModule.RomExtensionKey))
            {
                if (_gameInfoEntries.ContainsGame(path))
                    continue;

                var game = new GameInfo() { RomPath = path };
                game.SetValue("Name", Path.GetFileName(path));

                var hashProvider = System.Security.Cryptography.MD5CryptoServiceProvider.Create();
                String md5 = String.Empty;

                if (game.RomPath.ToLower().EndsWith(".zip"))
                {
                    using (var zip = ZipFile.Read(game.RomPath))
                    {
                        if (zip.EntryFileNames.Count() > 1)
                            continue;

                        var file = zip.Entries.First();
                        md5 = ByteArrayToHexString(hashProvider.ComputeHash(file.OpenReader()));
                    }
                }
                else
                {
                    using (var fs = File.OpenRead(path))
                    {
                        md5 = ByteArrayToHexString(hashProvider.ComputeHash(fs));
                        game.Game = new Game(md5, path);
                    }
                }

                newGames.Add(game);
            }

            return newGames;
        }