/// <summary> /// Will read the data of a xml file from source and return a list of CardDataStructure. /// </summary> /// <param name="source"></param> /// <returns></returns> private static List <CardDataStructure> XMLReader(string source) { //Adds a path the source needs. source = AddPath(source); var serializer = new XmlSerializer(typeof(CardNodes)); var xmlReader = new XmlTextReader(source); CardNodes xmlData = (CardNodes)serializer.Deserialize(xmlReader); var tempHolder = new List <XmlDataStructure>(xmlData.cardsData.Cast <XmlDataStructure>()); return(tempHolder.Select(card => { if (card.ExtraDataTypeName == "SpellExtraData") //Checks what type of card we have in order to create the correct ExtraData. { SpellExtraData spellExtra = new SpellExtraData((SpellEffect)card.ExtraData.Effect, card.ExtraData.EffectAmount); return new CardDataStructure(card.Name, card.Cost, card.ArtPath, card.ExtraDataTypeName, spellExtra); } else if (card.ExtraDataTypeName == "MinionExtraData") { MinionExtraData minionExtra = new MinionExtraData(card.ExtraData.Health, card.ExtraData.AttackDamage); return new CardDataStructure(card.Name, card.Cost, card.ArtPath, card.ExtraDataTypeName, minionExtra); } else { return null; //Returns null if its an unsupported Card type. } }).ToList()); }
/// <summary> /// Writes a list of CardDataStrcutre to an XML file. /// </summary> /// <param name="source"></param> /// <param name="cardData"></param> /// <returns></returns> private static bool XmlWriter(string source, List <CardDataStructure> cardData) { CardNodes cardNodes = new CardNodes(); cardNodes.cardsData = cardData.Select(card => { return(new XmlDataStructure(card.ArtPath, 0, card.Cost, new XmlExtra(card.ExtraData), card.ExtraDataTypeName, 0, card.Name)); }).ToList(); XmlSerializer xmlSerializer = new XmlSerializer(typeof(CardNodes)); using (StreamWriter stream = File.CreateText(source)) { xmlSerializer.Serialize(stream, cardNodes); } return(false); }