예제 #1
0
        public ProhibitedSpell(TextSpan value)
        {
            AddPropertyDefinitions(() => new[]
            {
                CommonProperties.Conditions,
            });

            if (value.TryRemoveInfix("|", out var newValue, out var conditions))
            {
                foreach (var part in conditions.Split('|'))
                {
                    AddField(part);
                }

                value = newValue;
            }

            if (value.TryRemovePrefix("ALIGNMENT.", out value))
            {
                Alignments.AddRange(value.Value.Split('.'));
            }
            else if (value.TryRemovePrefix("DESCRIPTOR.", out value))
            {
                Descriptors.AddRange(value.Value.Split('.'));
            }
            else if (value.TryRemovePrefix("SCHOOL.", out value))
            {
                Schools.AddRange(value.Value.Split('.'));
            }
            else if (value.TryRemovePrefix("SUBSCHOOL.", out value))
            {
                SubSchools.AddRange(value.Value.Split('.'));
            }
            else if (value.TryRemovePrefix("SPELL.", out value))
            {
                Names.AddRange(value.Value.Split(','));
            }
            else
            {
                throw new ParseFailedException(value, "Unable to parse PROHIBITSPELL");
            }
        }
예제 #2
0
        private void Merge_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            var dialog = new OpenFileDialog {
                Filter = "XML Filer (*.xml)|*.xml|Alla Filer (*.*)|*.*"
            };

            if (dialog.ShowDialog() != true)
            {
                return;
            }

            var file = dialog.FileName;

            var         newschools  = new List <School>();
            School      school      = null;
            SchoolClass schoolClass = null;
            Student     student     = null;

            using (var reader = XmlReader.Create(file))
            {
                while (reader.Read())
                {
                    if (!reader.IsStartElement())
                    {
                        continue;
                    }
                    switch (reader.Name)
                    {
                    case "School":
                        school = new School(reader["Name"], reader["ID"], long.Parse(reader["Changed"]));
                        newschools.Add(school);
                        break;

                    case "SchoolClass":
                        schoolClass = new SchoolClass(reader["Name"], reader["ID"], long.Parse(reader["Changed"]));
                        school?.Classes.Add(schoolClass);
                        break;

                    case "Student":
                        student = new Student(reader["ID"], long.Parse(reader["Changed"]));
                        schoolClass?.Students.Add(student);
                        break;

                    case "Firstname":
                        student.Firstname = reader.ReadElementContentAsString();
                        break;

                    case "Surname":
                        student.Surname = reader.ReadElementContentAsString();
                        break;

                    case "Telephone":
                        student.Telephone = reader.ReadElementContentAsString();
                        break;

                    case "GivSmall":
                        student.Given.Small = reader.ReadElementContentAsInt();
                        break;

                    case "GivWreaths":
                        student.Given.Wreaths = reader.ReadElementContentAsInt();
                        break;

                    case "GivLarge":
                        student.Given.Large = reader.ReadElementContentAsInt();
                        break;

                    case "GivPins":
                        student.Given.Pins = reader.ReadElementContentAsInt();
                        break;

                    case "GivSign":
                        student.GivSign = reader.ReadElementContentAsString();
                        break;

                    case "RetSmall":
                        student.Returned.Small = reader.ReadElementContentAsInt();
                        break;

                    case "RetWreaths":
                        student.Returned.Wreaths = reader.ReadElementContentAsInt();
                        break;

                    case "RetLarge":
                        student.Returned.Large = reader.ReadElementContentAsInt();
                        break;

                    case "RetPins":
                        student.Returned.Pins = reader.ReadElementContentAsInt();
                        break;

                    case "Received":
                        student.Received = reader.ReadElementContentAsInt();
                        break;

                    case "Sign":
                        student.Sign = reader.ReadElementContentAsString();
                        break;

                    case "Note":
                        student.Note = reader.ReadElementContentAsString();
                        break;
                    }
                }
            }

            var mergedschools = School.Merge(Schools, newschools);

            Schools.Clear();
            Schools.AddRange(mergedschools);

            if (Schools.Count > 0)
            {
                CurrentSchool = Schools[0];
            }
        }