Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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);
        }