using Azure;
using Domain.XML_Model;
using Domain;
using System.ComponentModel.DataAnnotations;
using System.Xml.Serialization;

namespace Domain.XML_Model
{

    [Serializable]
    [XmlRoot(ElementName = "root")]
    public class Root : BaseEntity
    {
        [XmlAttribute(AttributeName = "id")]
        public string Id { get; set; }

        [XmlArray(ElementName = "extensions")]
        [XmlArrayItem(ElementName = "extension")]
        public List<Extension> Extensions { get; set; }

        [XmlArray(ElementName = "accessoires_armes")]
        [XmlArrayItem(ElementName = "accessoire")]
        public List<Accessoire> AccessoiresArmes { get; set; }

        [XmlArray(ElementName = "améliorations")]
        [XmlArrayItem(ElementName = "amélioration")]
        public List<Amélioration> Améliorations { get; set; }

        [XmlArray(ElementName = "archétypes")]
        [XmlArrayItem(ElementName = "archétype")]
        public List<Archétype> Archétypes { get; set; }

        [XmlArray(ElementName = "armes")]
        [XmlArrayItem(ElementName = "arme")]
        public List<Arme> Armes { get; set; }

        [XmlArray(ElementName = "armures")]
        [XmlArrayItem(ElementName = "armure")]
        public List<Armure> Armures { get; set; }

        [XmlArray(ElementName = "assermentations")]
        [XmlArrayItem(ElementName = "assermentation")]
        public List<Assermentation> Assermentations { get; set; }

        [XmlArray(ElementName = "attributs_armes")]
        [XmlArrayItem(ElementName = "attribut")]
        public List<Attribut> AttributsArmes { get; set; }

        [XmlArray(ElementName = "carrières")]
        [XmlArrayItem(ElementName = "carrière")]
        public List<Carrière> Carrières { get; set; }

        [XmlArray(ElementName = "competences")]
        [XmlArrayItem(ElementName = "competence")]
        public List<Competence> Competences { get; set; }

        [XmlArray(ElementName = "coordonnées")]
        [XmlArrayItem(ElementName = "coordonnée")]
        public List<Coordonnée> Coordonnées { get; set; }

        [XmlArray(ElementName = "cybernétiques")]
        [XmlArrayItem(ElementName = "cybernétique")]
        public List<Cybernétique> Cybernétiques { get; set; }

        [XmlArray(ElementName = "disciplines")]
        [XmlArrayItem(ElementName = "discipline")]
        public List<Discipline> Disciplines { get; set; }

        [XmlArray(ElementName = "divinations")]
        [XmlArrayItem(ElementName = "divination")]
        public List<Divination> Divinations { get; set; }

        [XmlArray(ElementName = "equipements")]
        [XmlArrayItem(ElementName = "equipement")]
        public List<Equipement> Equipements { get; set; }

        [XmlArray(ElementName = "implants")]
        [XmlArrayItem(ElementName = "implant")]
        public List<Implant> Implants { get; set; }

        [XmlArray(ElementName = "mondes")]
        [XmlArrayItem(ElementName = "monde")]
        public List<Monde> Mondes { get; set; }

        [XmlArray(ElementName = "mutations")]
        [XmlArrayItem(ElementName = "mutation")]
        public List<Mutation> Mutations { get; set; }

        [XmlArray(ElementName = "pouvoirs")]
        [XmlArrayItem(ElementName = "pouvoir")]
        public List<Pouvoir> Pouvoirs { get; set; }

        [XmlArray(ElementName = "promotions")]
        [XmlArrayItem(ElementName = "promotion")]
        public List<Promote> Promotions { get; set; }

        [XmlArray(ElementName = "seuils_xp")]
        [XmlArrayItem(ElementName = "seuil")]
        public List<Seuil> SeuilsXp { get; set; }

        [XmlArray(ElementName = "sousmondes")]
        [XmlArrayItem(ElementName = "sousmonde")]
        public List<Sousmonde> Sousmondes { get; set; }

        [XmlArray(ElementName = "talents")]
        [XmlArrayItem(ElementName = "talent")]
        public List<Talent> Talents { get; set; }

        [XmlArray(ElementName = "traits")]
        [XmlArrayItem(ElementName = "trait")]
        public List<Trait> Traits { get; set; }

        [XmlArray(ElementName = "troubles")]
        [XmlArrayItem(ElementName = "trouble")]
        public List<Trouble> Troubles { get; set; }

        [XmlArray(ElementName = "type_mondes")]
        [XmlArrayItem(ElementName = "type_monde")]
        public List<TypeMonde> TypeMondes { get; set; }

        [XmlArray(ElementName = "types_nom")]
        [XmlArrayItem(ElementName = "type_nom")]
        public List<TypeName> TypesNom { get; set; }
    }


}
