public static void AppendConfigXml(XmlDocument destination, XmlDocument source) { XmlElement gameObjectsElement = CombatConfig.GetGameObjectsElement(destination); foreach (XmlElement xmlElement in CombatConfig.GetGameObjectsElement(source).OfType <XmlElement>()) { gameObjectsElement.AppendChild(gameObjectsElement.OwnerDocument.ImportNode((XmlNode)xmlElement, true)); } }
public static Dictionary <IGameObject, XmlElement> CreateGameObjects( App game, Vector3 origin, XmlDocument doc, int inputId) { Dictionary <IGameObject, XmlElement> map = new Dictionary <IGameObject, XmlElement>(); XmlElement xmlElement1 = doc[nameof(CombatConfig)]; if (xmlElement1 == null) { return(map); } XmlElement xmlElement2 = xmlElement1["GameObjects"]; if (xmlElement2 == null) { return(map); } CombatConfig.DataContext context = new CombatConfig.DataContext(); context.Origin = Matrix.Identity; context.InputID = inputId; XmlElement xmlElement3 = xmlElement2["StartPoint"]; Vector3 shipStartPositionHack = Vector3.Zero; if (xmlElement3 != null) { shipStartPositionHack = xmlElement3["Position"].ExtractVector3OrDefault(Vector3.Zero); } foreach (XmlElement xmlElement4 in xmlElement2.OfType <XmlElement>().Where <XmlElement>((Func <XmlElement, bool>)(x => x.Name == "Player"))) { int integerOrDefault1 = xmlElement4["ID"].ExtractIntegerOrDefault(1); Player player = game.GetPlayer(integerOrDefault1); if (xmlElement4["EmpireColorIndex"] != null) { int integerOrDefault2 = xmlElement4["EmpireColorIndex"].ExtractIntegerOrDefault(0); player.SetEmpireColor(integerOrDefault2); } if (xmlElement4["PlayerColor"] != null) { Vector3 vector3OrDefault = xmlElement4["PlayerColor"].ExtractVector3OrDefault(Vector3.Zero); player.SetPlayerColor(vector3OrDefault); } if (xmlElement4["Badge"] != null) { string stringOrDefault = xmlElement4["Badge"].ExtractStringOrDefault(string.Empty); player.SetBadgeTexture(stringOrDefault); } } CombatConfig.CreateGameObjectsCore(map, game, context, shipStartPositionHack, xmlElement2); return(map); }
private static void CreateGameObjectsCore( Dictionary <IGameObject, XmlElement> map, App game, CombatConfig.DataContext context, Vector3 shipStartPositionHack, XmlElement root) { foreach (XmlElement xmlElement in root.OfType <XmlElement>().Where <XmlElement>((Func <XmlElement, bool>)(x => { if (!(x.Name == "GameObject")) { return(x.Name == "Group"); } return(true); }))) { if (xmlElement.Name == "Group") { Vector3 vector3OrDefault1 = xmlElement["Position"].ExtractVector3OrDefault(Vector3.Zero); Vector3 vector3OrDefault2 = xmlElement["Rotation"].ExtractVector3OrDefault(Vector3.Zero); Matrix rotationYpr = Matrix.CreateRotationYPR(MathHelper.DegreesToRadians(vector3OrDefault2.X), MathHelper.DegreesToRadians(vector3OrDefault2.Y), MathHelper.DegreesToRadians(vector3OrDefault2.Z)); rotationYpr.Position = vector3OrDefault1; CombatConfig.DataContext context1 = context.Clone(); context1.Origin = rotationYpr * context.Origin; CombatConfig.CreateGameObjectsCore(map, game, context1, shipStartPositionHack, xmlElement); } else { string innerText = xmlElement["Type"].InnerText; if (innerText == "AsteroidBelt") { map[CombatConfig.CreateAsteroidBelt(game, context, xmlElement)] = xmlElement; } else if (innerText == "Star") { map[CombatConfig.CreateProceduralStar(game, context, xmlElement)] = xmlElement; } else if (innerText == "StellarBody") { map[CombatConfig.CreateProceduralStellarBody(game, context, xmlElement)] = xmlElement; } else if (innerText == "Ship") { CombatConfig.DataContext context1 = context; if (shipStartPositionHack != Vector3.Zero) { context1 = context.Clone(); context1.Origin.Position -= shipStartPositionHack; } map[CombatConfig.CreateShipCompound(game, context1, xmlElement)] = xmlElement; } else if (innerText == "LegacyStellarBody") { map[CombatConfig.CreateLegacyStellarBody(game, context, xmlElement)] = xmlElement; } else if (innerText == "LegacyStar") { map[CombatConfig.CreateLegacyStarModel(game, context, xmlElement)] = xmlElement; } else { map[CombatConfig.CreateDefaultGameObject(game, context, xmlElement)] = xmlElement; } } } }