/// <summary> /// Deserializes an XML loadout text. /// </summary> /// <param name="text">The text.</param> /// <returns></returns> public static ILoadoutInfo DeserializeXmlFormat(string text) { SerializableXmlFittings fittings = Util.DeserializeXmlFromString <SerializableXmlFittings>(text); ILoadoutInfo loadoutInfo = new LoadoutInfo(); // Nothing to evaluate if (fittings == null) { return(loadoutInfo); } // Retrieve the ship loadoutInfo.Ship = StaticItems.GetItemByName(fittings.Fitting.ShipType.Name); if (loadoutInfo.Ship == null) { return(loadoutInfo); } // Special case to avoid displaying gzCLF block from Osmium if (fittings.Fitting.Description.Text.StartsWith("BEGIN gzCLF BLOCK", StringComparison.InvariantCultureIgnoreCase)) { fittings.Fitting.Description.Text = String.Empty; } Loadout loadout = new Loadout(fittings.Fitting.Name, fittings.Fitting.Description.Text); IEnumerable <Item> listOfItems = fittings.Fitting.FittingHardware .Where(hardware => hardware != null && hardware.Item != null && hardware.Slot != "drone bay") .Select(hardware => hardware.Item); IEnumerable <SerializableXmlFittingHardware> listOfXmlDrones = fittings.Fitting.FittingHardware .Where(hardware => hardware != null && hardware.Item != null && hardware.Slot == "drone bay"); var listOfDrones = new List <Item>(); foreach (SerializableXmlFittingHardware drone in listOfXmlDrones) { for (int i = 0; i < drone.Quantity; i++) { listOfDrones.Add(drone.Item); } } loadout.Items = listOfItems.Concat(listOfDrones); loadoutInfo.Loadouts.Add(loadout); return(loadoutInfo); }
/// <summary> /// Determines whether the loadout is in XML format. /// </summary> /// <param name="text">The text.</param> /// <returns> /// <c>true</c> if the loadout is in XML format; otherwise, <c>false</c>. /// </returns> internal static bool IsXMLFormat(string text) { XmlRootAttribute xmlRoot = new SerializableXmlFittings().GetType().GetCustomAttributes( typeof(XmlRootAttribute), false).Cast <XmlRootAttribute>().FirstOrDefault(); if (xmlRoot == null) { return(false); } using (TextReader reader = new StringReader(text)) { if (Util.GetXmlRootElement(reader) != xmlRoot.ElementName) { return(false); } } SerializableXmlFittings fittings = Util.DeserializeXmlFromString <SerializableXmlFittings>(text); return(StaticItems.ShipsMarketGroup.AllItems.Any(x => x.Name == fittings.Fitting.ShipType.Name)); }