Exemplo n.º 1
0
        internal override sealed void Plus(XDocument xdoc)
        {
            foreach (var element in xdoc.Root.Elements())
            {
                var val = element.Value;
                int valI;
                int.TryParse(val, out valI);

                switch (element.Name.LocalName)
                {
                case "id":
                    Id = valI;
                    break;

                case "key":
                    Key = val.ToLower();
                    break;

                case "nameS":
                    Name = val.ToLower();
                    break;

                case "nameP":
                    PluralName = val.ToLower();
                    break;

                case "caste":
                    var newCaste = new Caste(element, this);
                    if (Castes == null)
                    {
                        Castes = new List <Caste>();
                    }
                    Castes.Add(newCaste);
                    break;

                case "flags":
                    var flags = val.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var flag in flags)
                    {
                        if (!Flags.Contains(flag))
                        {
                            Flags.Add(flag);
                        }
                        if (Flag == null)
                        {
                            Flag = new List <short>();
                        }
                        Flag.Add((short)Flags.IndexOf(flag));
                    }
                    break;

                case "sphere":
                    if (!HistoricalFigure.Spheres.Contains(val))
                    {
                        HistoricalFigure.Spheres.Add(val);
                    }
                    if (Sphere == null)
                    {
                        Sphere = new List <short>();
                    }
                    Sphere.Add((short)HistoricalFigure.Spheres.IndexOf(val));
                    break;

                default:
                    DFXMLParser.UnexpectedXmlElement(xdoc.Root.Name.LocalName + "\t Race", element, xdoc.Root.ToString());
                    break;
                }
            }
        }