Ejemplo n.º 1
0
        public virtual void SetConfiguration(XDocument document)
        {
            Classes = new Dictionary<string, ClassDefinition>();
            Fields = new List<FieldDefinition>();
            foreach (XElement include in document.Root.Elements("Include"))
            {
                ClassDefinition classDefinition = new ClassDefinition();
                classDefinition.SetConfiguration(include);
                if (classDefinition.Valid)
                {
                    Classes.Add(classDefinition.Name, classDefinition);
                    foreach (KeyValuePair<string, FieldDefinition> field in classDefinition.Fields)
                    {
                        Fields.Add(field.Value);
                    }
                }
            }

            XElement extraRootElement = document.Root.Element("Extra");
            if (extraRootElement != null)
            {
                foreach (XElement extraElement in extraRootElement.Elements("Field"))
                {
                    FieldDefinition tmpDefinition = new FieldDefinition();
                    tmpDefinition.SetConfiguration(extraElement);
                    if (!Classes.ContainsKey(tmpDefinition.ClassName))
                    {
                        Debug.Log("ModAPI.Data", "The class \""+tmpDefinition.ClassName+"\" defined in Extra element is not included in this data package.");
                    }
                    else
                    {
                        ClassDefinition cl = Classes[tmpDefinition.ClassName];
                        if (!cl.Fields.ContainsKey(tmpDefinition.FieldName))
                        {
                            Debug.Log("ModAPI.Data", "The field \""+tmpDefinition.FieldName+"\" in class \""+tmpDefinition.ClassName+"\" defined in Extra element either doesn't exist or is not included in this data package.");
                        }
                        else
                        {
                            cl.Fields[tmpDefinition.FieldName].SetConfiguration(tmpDefinition.Configuration);
                            double offset = Convert.ToDouble(cl.Fields[tmpDefinition.FieldName].GetExtra("offset", "0"));
                            if (offset != 0.0)
                            {
                                SetOffset(Fields.IndexOf(cl.Fields[tmpDefinition.FieldName]), offset);
                            }
                            //cl.Fields[tmpDefinition.FieldName].Extra = tmpDefinition.Extra;
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void SetConfiguration(XElement element, ClassDefinition cl = null)
 {
     this.Configuration = element;
     Extra = new Dictionary<string,string>();
     foreach (XAttribute attribute in element.Attributes())
     {
         if (attribute.Name.LocalName.ToLower() == "class")
             ClassName = attribute.Value;
         else if (attribute.Name.LocalName.ToLower() == "field")
             FieldName = attribute.Value;
         else if (attribute.Name.LocalName.ToLower() == "name" && element.Name.LocalName.ToLower()=="field")
             FieldName = attribute.Value;
         else
             Extra.Add(attribute.Name.LocalName.ToLower(), attribute.Value);
     }
     if (cl != null)
         ClassName = cl.Name;
     if (ClassName == "" || FieldName == "")
     {
         Debug.Log("ModAPI.Data", "Invalid FieldDefinition: " + element.ToString(), Debug.Type.WARNING);
     }
 }