示例#1
0
        public static Person loadPersonFromFile(string path)
        {
            try
            {
                using (FileStream fileStream = new FileStream(path, FileMode.Open))
                {
                    XmlReader rdr = XmlReader.Create((Stream)fileStream, new XmlReaderSettings());
                    while (rdr.Name != "Person")
                    {
                        rdr.Read();
                    }
                    string str1;
                    string lName    = str1 = "unknown";
                    string fName    = str1;
                    string handle   = str1;
                    string str2     = str1;
                    bool   male     = true;
                    bool   isHacker = false;
                    bool   flag     = false;
                    if (rdr.MoveToAttribute("id"))
                    {
                        str2 = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("handle"))
                    {
                        handle = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("firstName"))
                    {
                        fName = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("lastName"))
                    {
                        lName = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("isMale"))
                    {
                        male = rdr.ReadContentAsBoolean();
                    }
                    if (rdr.MoveToAttribute("isHacker"))
                    {
                        isHacker = rdr.ReadContentAsBoolean();
                    }
                    if (rdr.MoveToAttribute("forceHasNeopals"))
                    {
                        flag = rdr.ReadContentAsBoolean();
                    }
                    Person person = new Person(fName, lName, male, isHacker, handle);
                    if (person.NeopalsAccount == null && flag && DLC1SessionUpgrader.HasDLC1Installed)
                    {
                        person.NeopalsAccount = NeopalsAccount.GenerateAccount(person.handle, Utils.flipCoin());
                    }
                    rdr.Read();
                    while (!(rdr.Name == "Person") || rdr.IsStartElement())
                    {
                        switch (rdr.Name)
                        {
                        case "Degrees":
                            List <Degree> degreeList = new List <Degree>();
                            rdr.Read();
                            while (!(rdr.Name == "Degrees") || rdr.IsStartElement())
                            {
                                if (rdr.Name == "Degree")
                                {
                                    string str3;
                                    string uniName = str3 = "UNKNOWN";
                                    double num     = 3.0;
                                    if (rdr.MoveToAttribute("uni"))
                                    {
                                        uniName = rdr.ReadContentAsString();
                                    }
                                    if (rdr.MoveToAttribute("gpa"))
                                    {
                                        num = rdr.ReadContentAsDouble();
                                    }
                                    int    content = (int)rdr.MoveToContent();
                                    Degree degree  = new Degree(rdr.ReadElementContentAsString(), uniName, (float)num);
                                    degreeList.Add(degree);
                                }
                                rdr.Read();
                            }
                            if (degreeList.Count > 0)
                            {
                                person.degrees = degreeList;
                                break;
                            }
                            break;

                        case "Birthplace":
                            string name = (string)null;
                            if (rdr.MoveToAttribute("name"))
                            {
                                name = rdr.ReadContentAsString();
                            }
                            if (name == null)
                            {
                                name = WorldLocationLoader.getRandomLocation().name;
                            }
                            person.birthplace = WorldLocationLoader.getClosestOrCreate(name);
                            break;

                        case "DOB":
                            CultureInfo cultureInfo = new CultureInfo("en-au");
                            int         content1    = (int)rdr.MoveToContent();
                            DateTime    dateTime    = Utils.SafeParseDateTime(rdr.ReadElementContentAsString());
                            if (dateTime.Hour == 0 && dateTime.Second == 0)
                            {
                                TimeSpan timeSpan = TimeSpan.FromHours(Utils.random.NextDouble() * 23.99);
                                dateTime += timeSpan;
                            }
                            person.DateOfBirth = dateTime;
                            break;

                        case "Medical":
                            person.medicalRecord = MedicalRecord.Load(rdr, person.birthplace, person.DateOfBirth);
                            break;
                        }
                        rdr.Read();
                    }
                    if (DLC1SessionUpgrader.HasDLC1Installed)
                    {
                        if (person.handle == "Minx" && person.NeopalsAccount == null)
                        {
                            person.NeopalsAccount = NeopalsAccount.GenerateAccount("Minx", false);
                        }
                        if (person.handle == "Orann" && person.NeopalsAccount == null && DLC1SessionUpgrader.HasDLC1Installed && People.PeopleWereGeneratedWithDLCAdditions)
                        {
                            person.NeopalsAccount = NeopalsAccount.GenerateAccount("Orann", false);
                        }
                    }
                    return(person);
                }
            }
            catch (FileNotFoundException ex)
            {
                return((Person)null);
            }
        }
示例#2
0
        public static Person loadPersonFromFile(string path)
        {
            try
            {
                using (var fileStream = new FileStream(path, FileMode.Open))
                {
                    var rdr = XmlReader.Create(fileStream, new XmlReaderSettings());
                    while (rdr.Name != "Person")
                    {
                        rdr.Read();
                    }
                    string str1;
                    var    lName    = str1 = "unknown";
                    var    fName    = str1;
                    var    handle   = str1;
                    var    male     = true;
                    var    isHacker = false;
                    if (rdr.MoveToAttribute("id"))
                    {
                        rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("handle"))
                    {
                        handle = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("firstName"))
                    {
                        fName = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("lastName"))
                    {
                        lName = rdr.ReadContentAsString();
                    }
                    if (rdr.MoveToAttribute("isMale"))
                    {
                        male = rdr.ReadContentAsBoolean();
                    }
                    if (rdr.MoveToAttribute("isHacker"))
                    {
                        isHacker = rdr.ReadContentAsBoolean();
                    }
                    var person = new Person(fName, lName, male, isHacker, handle);
                    rdr.Read();
                    while (!(rdr.Name == "Person") || rdr.IsStartElement())
                    {
                        switch (rdr.Name)
                        {
                        case "Degrees":
                            var list = new List <Degree>();
                            rdr.Read();
                            while (!(rdr.Name == "Degrees") || rdr.IsStartElement())
                            {
                                if (rdr.Name == "Degree")
                                {
                                    string str2;
                                    var    uniName = str2 = "UNKNOWN";
                                    var    num1    = 3.0;
                                    if (rdr.MoveToAttribute("uni"))
                                    {
                                        uniName = rdr.ReadContentAsString();
                                    }
                                    if (rdr.MoveToAttribute("gpa"))
                                    {
                                        num1 = rdr.ReadContentAsDouble();
                                    }
                                    var num2   = (int)rdr.MoveToContent();
                                    var degree = new Degree(rdr.ReadElementContentAsString(), uniName, (float)num1);
                                    list.Add(degree);
                                }
                                rdr.Read();
                            }
                            if (list.Count > 0)
                            {
                                person.degrees = list;
                            }
                            break;

                        case "Birthplace":
                            string name = null;
                            if (rdr.MoveToAttribute("name"))
                            {
                                name = rdr.ReadContentAsString();
                            }
                            if (name == null)
                            {
                                name = WorldLocationLoader.getRandomLocation().name;
                            }
                            person.birthplace = WorldLocationLoader.getClosestOrCreate(name);
                            break;

                        case "DOB":
                            var cultureInfo = new CultureInfo("en-au");
                            var num         = (int)rdr.MoveToContent();
                            var dateTime    = DateTime.Parse(rdr.ReadElementContentAsString(), cultureInfo);
                            if (dateTime.Hour == 0 && dateTime.Second == 0)
                            {
                                var timeSpan = TimeSpan.FromHours(Utils.random.NextDouble() * 23.99);
                                dateTime += timeSpan;
                            }
                            person.DateOfBirth = dateTime;
                            break;

                        case "Medical":
                            person.medicalRecord = MedicalRecord.Load(rdr, person.birthplace, person.DateOfBirth);
                            break;
                        }
                        rdr.Read();
                    }
                    return(person);
                }
            }
            catch (FileNotFoundException ex)
            {
                return(null);
            }
        }