private static void ParseSavConfig(XElement config) { XElement savTreeXml = config.Element(ElementNameSavParseTreeRoot); if (savTreeXml == null) { throw new XmlException("Config file is missing sav parse tree."); } XElement templateListElement = savTreeXml.Element(ElementNameSavTemplateList); if (templateListElement != null) { savConfigTemplates = new Dictionary <string, SavConfigClass>(); foreach (XElement templateElement in templateListElement.Elements(ElementNameSavTemplate)) { XElement keyElement = templateElement.Element(ElementNameKey); if (keyElement == null || keyElement.Value.Length == 0) { throw new XmlException(string.Format( "{0} element missing {1}", ElementNameSavTemplate, ElementNameKey)); } SavConfigClass templateClass = ParseSavClassElement(templateElement); savConfigTemplates.Add(keyElement.Value, templateClass); } } savConfigRootClass = ParseSavClassElement(savTreeXml); }
private static SavConfigClassArray ParseSavClassArrayElement(XElement xElement) { SavConfigClassArray ret = new SavConfigClassArray() { Name = GetSavElementName(xElement), Classes = new List <SavConfigClass>() }; foreach (XElement classElement in xElement.Elements(ElementNameSavParameterContainer)) { SavConfigClass configClass = ParseSavClassElement(classElement); ret.Classes.Add(configClass); } return(ret); }
private static PawnData LoadPawnVersion1(XElement pawnFile) { SavConfigClass appearanceConfig = null; foreach (SavConfigElement childElement in savConfigRootClass.Children) { SavConfigClass childClass = childElement as SavConfigClass; if (childClass != null && childClass.Name == "mEdit") { appearanceConfig = childClass; break; } } if (appearanceConfig == null) { return(null); } PawnData loadPawn = new PawnData(); appearanceConfig.LoadSavToPawn(loadPawn, pawnFile, SavSlot.MainPawn); return(loadPawn); }
private static void ParseSavConfig(XElement config) { XElement savTreeXml = config.Element(ElementNameSavParseTreeRoot); if (savTreeXml == null) { throw new XmlException("Config file is missing sav parse tree."); } XElement templateListElement = savTreeXml.Element(ElementNameSavTemplateList); if (templateListElement != null) { savConfigTemplates = new Dictionary<string, SavConfigClass>(); foreach (XElement templateElement in templateListElement.Elements(ElementNameSavTemplate)) { XElement keyElement = templateElement.Element(ElementNameKey); if (keyElement == null || keyElement.Value.Length == 0) { throw new XmlException(string.Format( "{0} element missing {1}", ElementNameSavTemplate, ElementNameKey)); } SavConfigClass templateClass = ParseSavClassElement(templateElement); savConfigTemplates.Add(keyElement.Value, templateClass); } } savConfigRootClass = ParseSavClassElement(savTreeXml); }
private static SavConfigClass ParseSavClassElement(XElement xElement) { SavConfigClass ret = new SavConfigClass { Name = GetSavElementName(xElement) }; ret.ParseCondition = ParseSavClassConditionElement(xElement); XElement templateElement = xElement.Element(ElementNameSavTemplate); if (templateElement != null) { SavConfigClass template = null; try { template = savConfigTemplates[templateElement.Value]; } catch (Exception ex) { throw new XmlException(string.Format( "Save config class with name {0} uses a template that doesn't exist: {1}.", ret.Name, templateElement.Value), ex); } ret.Children = template.Children; } else { ret.Children = new List<SavConfigElement>(); foreach (XElement child in xElement.Elements()) { SavConfigElement parsedElement = null; if (child.Name == ElementNameSavParameterContainer) { parsedElement = ParseSavClassElement(child); } else if (child.Name == ElementNameSavParameter) { parsedElement = ParseSavParameterElement(child); } else if (child.Name == ElementNameSavParameterArray) { if (child.Element(ElementNameSavParameterContainer) != null) { parsedElement = ParseSavClassArrayElement(child); } else { parsedElement = ParseSavParameterArrayElement(child); } } if (parsedElement != null) { ret.Children.Add(parsedElement); } } } return ret; }
private static SavConfigClass ParseSavClassElement(XElement xElement) { SavConfigClass ret = new SavConfigClass { Name = GetSavElementName(xElement) }; ret.ParseCondition = ParseSavClassConditionElement(xElement); XElement templateElement = xElement.Element(ElementNameSavTemplate); if (templateElement != null) { SavConfigClass template = null; try { template = savConfigTemplates[templateElement.Value]; } catch (Exception ex) { throw new XmlException(string.Format( "Save config class with name {0} uses a template that doesn't exist: {1}.", ret.Name, templateElement.Value), ex); } ret.Children = template.Children; } else { ret.Children = new List <SavConfigElement>(); foreach (XElement child in xElement.Elements()) { SavConfigElement parsedElement = null; if (child.Name == ElementNameSavParameterContainer) { parsedElement = ParseSavClassElement(child); } else if (child.Name == ElementNameSavParameter) { parsedElement = ParseSavParameterElement(child); } else if (child.Name == ElementNameSavParameterArray) { if (child.Element(ElementNameSavParameterContainer) != null) { parsedElement = ParseSavClassArrayElement(child); } else { parsedElement = ParseSavParameterArrayElement(child); } } if (parsedElement != null) { ret.Children.Add(parsedElement); } } } return(ret); }