/** * Adds a given culture type to the culture type list. */ public void addCultureType(CultureType cultureType) { cultureTypes.Add(cultureType.getCultureTypeName(), cultureType); }
/** * Reads culture types from a given XML file. */ public void readCultureTypesFromXML(string fileName) { // reader creation XmlTextReader reader = new XmlTextReader(fileName); // whilst we read the file while (reader.Read()) { // if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "culture_type") { string cultureTypeName = ""; Dictionary <string, Skill> cultureSkills = new Dictionary <string, Skill>(); Dictionary <string, Profession> cultureProfessions = new Dictionary <string, Profession>(); while (reader.Read() && reader.Name != "culture_type") { switch (reader.Name) { case "culture_type_name": reader.Read(); cultureTypeName = reader.Value; while (reader.Read() && reader.NodeType != XmlNodeType.EndElement) { ; } break; case "skill": reader.Read(); try { cultureSkills.Add(skills[reader.Value].getSkillName(), skills[reader.Value]); } catch (KeyNotFoundException ke) { Console.WriteLine("No skill of name " + reader.Value + " found whilst parsing culture type " + cultureTypeName + "."); } while (reader.Read() && reader.NodeType != XmlNodeType.EndElement) { ; } break; case "profession": reader.Read(); try { cultureProfessions.Add(professions[reader.Value].getProfessionName(), professions[reader.Value]); } catch (KeyNotFoundException ke) { Console.WriteLine("No profession of name " + reader.Value + " found whilst parsing culture type " + cultureTypeName + "."); } while (reader.Read() && reader.NodeType != XmlNodeType.EndElement) { ; } break; } } CultureType cultureType = new CultureType(cultureTypeName); foreach (KeyValuePair <string, Skill> entry in cultureSkills) { cultureType.addCultureTypeSkill(entry.Value); } foreach (KeyValuePair <string, Profession> entry in cultureProfessions) { cultureType.addCultureTypeProfession(entry.Value); } addCultureType(cultureType); } } } }