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