Beispiel #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);
        }
 private static XMLSettingsGroupLoader CreateSettingsGroupLoader()
 {
     var loader = new XMLSettingsGroupLoader();
     loader.RegisterComplexSettingLoader("maxTeams", new XMLMaxTeamSetLoader());
     loader.RegisterComplexSettingLoader("multiplayerObjects", new XMLMultiplayerObjectSetLoader());
     return loader;
 }
 private static XMLSettingsGroupLoader CreateSettingsGroupLoader()
 {
     var loader = new XMLSettingsGroupLoader();
     loader.RegisterComplexSettingLoader("layouts", new XMLLayoutLoader());
     loader.RegisterComplexSettingLoader("localeSymbols", new XMLLocaleSymbolLoader());
     loader.RegisterComplexSettingLoader("stringIds", new XMLStringIDSetLoader());
     loader.RegisterComplexSettingLoader("scripting", new XMLOpcodeLookupLoader());
     loader.RegisterComplexSettingLoader("vertexLayouts", new XMLVertexLayoutLoader());
     return loader;
 }
        private static XMLSettingsGroupLoader CreateSettingsGroupLoader()
        {
            var loader = new XMLSettingsGroupLoader();

            loader.RegisterComplexSettingLoader("layouts", new XMLLayoutLoader());
            loader.RegisterComplexSettingLoader("localeSymbols", new XMLLocaleSymbolLoader());
            loader.RegisterComplexSettingLoader("stringIds", new XMLStringIDSetLoader());
            loader.RegisterComplexSettingLoader("scripting", new XMLOpcodeLookupLoader());
            loader.RegisterComplexSettingLoader("vertexLayouts", new XMLVertexLayoutLoader());
            return(loader);
        }