Esempio n. 1
0
        /// <summary>
        ///     Loads an engine database from an XML container.
        /// </summary>
        /// <param name="container">The container to read engine elements from.</param>
        /// <returns>The built engine database.</returns>
        public static EngineDatabase LoadDatabase(XContainer container)
        {
            XMLSettingsGroupLoader loader = CreateSettingsGroupLoader();
            var result = new EngineDatabase();

            foreach (XElement elem in container.Elements("engine"))
            {
                string        name       = XMLUtil.GetStringAttribute(elem, "name");
                string        build      = XMLUtil.GetStringAttribute(elem, "build");
                var           version    = XMLUtil.GetNumericAttribute(elem, "version");
                var           versionAlt = XMLUtil.GetNumericAttribute(elem, "version", -1);
                string        inherits   = XMLUtil.GetStringAttribute(elem, "inherits", null);
                SettingsGroup settings   = loader.LoadSettingsGroup(elem);
                if (!string.IsNullOrWhiteSpace(inherits))
                {
                    // Clone the base engine's settings and then import the new settings on top of it
                    SettingsGroup baseSettings = result.FindEngineByName(inherits).Settings.DeepClone();
                    baseSettings.Import(settings);
                    settings = baseSettings;
                }
                var desc = new EngineDescription(name, (int)version, (int)versionAlt, build, settings);
                result.RegisterEngine(desc);
            }
            return(result);
        }
 /// <summary>
 ///     Loads an engine database from an XML container.
 /// </summary>
 /// <param name="container">The container to read engine elements from.</param>
 /// <returns>The built engine database.</returns>
 public static EngineDatabase LoadDatabase(XContainer container)
 {
     XMLSettingsGroupLoader loader = CreateSettingsGroupLoader();
     var result = new EngineDatabase();
     foreach (XElement elem in container.Elements("engine"))
     {
         string name = XMLUtil.GetStringAttribute(elem, "name");
         string version = XMLUtil.GetStringAttribute(elem, "version");
         string inherits = XMLUtil.GetStringAttribute(elem, "inherits", null);
         SettingsGroup settings = loader.LoadSettingsGroup(elem);
         if (!string.IsNullOrWhiteSpace(inherits))
         {
             // Clone the base engine's settings and then import the new settings on top of it
             SettingsGroup baseSettings = result.FindEngineByName(inherits).Settings.DeepClone();
             baseSettings.Import(settings);
             settings = baseSettings;
         }
         var desc = new EngineDescription(name, version, settings);
         result.RegisterEngine(desc);
     }
     return result;
 }