public void RecoverStateFromXml(string rawXml) { var element = XElement.Parse(rawXml); Money = element.AttributeValue("Money", int.Parse); MainStageLevel = element.AttributeValue("MainStageLevel", int.Parse); var recoveredSpecs = new List <ProgrammerSpec>(); foreach (var specElement in element.Elements("ProgrammerSpec")) { var spec = new ProgrammerSpec(); spec.RecoverStateFromXml(specElement.ToString()); recoveredSpecs.Add(spec); } ; ClearedStageNames.Clear(); foreach (var stageElement in element.Elements("ClearedStage")) { ClearedStageNames.Add(stageElement.AttributeValue("Name")); } ProgrammerSpecs = recoveredSpecs; }
public XElement ToXmlElement() { var playerRoot = new XElement("Player", new XAttribute("Money", Money), new XAttribute("MainStageLevel", MainStageLevel), ClearedStageNames.Select(name => new XElement("ClearedStage", new XAttribute("Name", name))), ProgrammerSpecs.Select(spec => spec.ToXmlElement())); return(playerRoot); }