Beispiel #1
0
 /// <summary>
 /// Copies data over from another system
 /// </summary>
 /// <param name="system">New system</param>
 /// <returns></returns>
 public PinballXSystem Update(PinballXSystem system)
 {
     Enabled     = system.Enabled;
     WorkingPath = system.WorkingPath;
     TablePath   = system.TablePath;
     Executable  = system.Executable;
     Parameters  = system.Parameters;
     Type        = system.Type;
     return(this);
 }
Beispiel #2
0
        /// <summary>
        /// Parses all games for a given system.
        /// </summary>
        /// <remarks>
        /// "Parsing" means reading and unmarshalling all XML files in the 
        /// system's database folder.
        /// </remarks>
        /// <param name="system">System to parse games for</param>
        /// <param name="databaseFile">If set, only parse games for given XML file</param>
        /// <returns>Parsed games</returns>
        private IEnumerable<PinballXGame> ParseGames(PinballXSystem system, string databaseFile = null)
        {
            if (system == null) {
                _logger.Warn("Unknown system, not parsing games.");
                return new List<PinballXGame>();
            }
            _logger.Info("Parsing games at {0}", system.DatabasePath);

            var games = new List<PinballXGame>();
            var fileCount = 0;
            if (_dir.Exists(system.DatabasePath)) {
                foreach (var filePath in _dir.GetFiles(system.DatabasePath).Where(filePath => ".xml".Equals(Path.GetExtension(filePath), StringComparison.InvariantCultureIgnoreCase)))
                {
                    var currentDatabaseFile = Path.GetFileName(filePath);
                    // if database file is specified, drop everything else
                    if (databaseFile != null && !databaseFile.Equals(currentDatabaseFile)) {
                        continue;
                    }
                    var menu = _marshallManager.UnmarshallXml(filePath);
                    menu.Games.ForEach(game => game.DatabaseFile = currentDatabaseFile);
                    games.AddRange(menu.Games);
                    fileCount++;
                }
            }
            _logger.Debug("Parsed {0} games from {1} XML file(s) at {2}.", games.Count, fileCount, system.DatabasePath);

            return games;
        }