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); } }
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); } }