/// \file Personnage.cs /// \brief Contient la définition de la classe Personnage. /// /// La classe Personnage représente les différents personnages avec leur nom, épithète, leur prime, leur âge, leur taille, leur origine, leur biographie et une citation. /// using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Runtime.Serialization; namespace Model.Classes { /// /// Représente un personnage de l'univers de One Piece. /// [DataContract(Name = "personnage")] public class Personnage : ObjetOhara { /// /// Obtient ou définit la prime du personnage. /// [DataMember(Name = "prime")] private double prime; public double Prime { get=>prime; set { prime = value; OnPropertyChanged(); } } /// /// Obtient ou définit l'épithète du personnage. /// [DataMember(Name = "epithete")] private string? epithete; public string? Epithete { get=>epithete; set { epithete = value; } } /// /// Obtient ou définit l'âge du personnage. /// [DataMember(Name = "age")] private int age; public int Age { get=>age; set { age = value; OnPropertyChanged(); } } /// /// Obtient ou définit la taille du personnage. /// [DataMember(Name = "taille")] private double taille; public double Taille { get=>taille; set { taille = value; OnPropertyChanged(); } } /// /// Obtient ou définit l'origine du personnage. /// [DataMember(Name = "origine")] private string? origine; public string? Origine { get=>origine; set { origine = value; OnPropertyChanged(); } } /// /// Obtient ou définit la biographie du personnage. /// [DataMember(Name = "biographie")] private string? biographie; public string? Biographie { get=>biographie; set { biographie = value; OnPropertyChanged(); } } /// /// Obtient ou définit la citation du personnage. /// [DataMember(Name = "citation")] private string? citation; public string? Citation { get=>citation; set { citation = value; OnPropertyChanged(); } } /// /// Obtient ou définit l'équipage auquel le personnage appartient. /// [DataMember(Name = "equipage", EmitDefaultValue = false)] private Equipage? equipage; public Equipage? Equipage { get => equipage; set { equipage = value; OnPropertyChanged(); } } /// /// Obtient la collection en lecture seule des fruits du démon détenus par le personnage. /// [DataMember(Name = "fruit", EmitDefaultValue = false)] private ObservableCollection fruit = new ObservableCollection(); public IReadOnlyCollection Fruit { get=>fruit; } /// /// Ajoute un fruit du démon à la collection du personnage. /// /// Le fruit du démon à ajouter. public void AjouterFruit(FruitDuDemon? f) { if (f == null) return; fruit.Add(f); } /// /// Retire un fruit du démon de la collection du personnage. /// /// Le fruit du démon à retirer. public void RetierFruit(FruitDuDemon? f) { if (f == null) return; fruit.Remove(f); } /// /// Vide la collection des fruits du démon du personnage. /// public void ViderFruit() => fruit.Clear(); /// /// Initialise une nouvelle instance de la classe Personnage avec un nom et des informations supplémentaires. /// /// Le nom du personnage. /// La prime du personnage. /// L'épithète du personnage. /// L'âge du personnage. /// La taille du personnage. /// L'origine du personnage. /// La biographie du personnage. /// La citation du personnage. public Personnage(string nom, double prime, string epithete, int age, double taille, string origine, string biographie, string citation) : base(nom) { if (prime < 0) { Prime = 0; } else { Prime = prime; } Epithete = epithete; Age = age; if (taille < 0) { Taille = 0; } else { Taille = taille; } Origine = origine; Biographie = biographie; Citation = citation; } /// /// Initialise une nouvelle instance de la classe Personnage avec un nom, des informations supplémentaires et une image. /// /// Le nom du personnage. /// La prime du personnage. /// L'épithète du personnage. /// L'âge du personnage. /// La taille du personnage. /// L'origine du personnage. /// La biographie du personnage. /// La citation du personnage. /// Le chemin de l'image du personnage. public Personnage(string nom, double prime, string epithete, int age, double taille, string origine, string biographie, string citation, string image) : this(nom, prime, epithete, age, taille, origine, biographie, citation) { if (String.IsNullOrWhiteSpace(image)) image = "baseimage.png"; Image = image; } /// /// Détermine si l'objet spécifié est égal à l'objet actuel. /// /// L'objet à comparer avec l'objet actuel. /// true si les objets sont égaux, sinon false. public override bool Equals(object? obj) { if (obj == null) return false; if (this.GetType() != obj.GetType()) { return false; } else { Personnage o = (Personnage)obj; return o.Nom == Nom; } } /// /// Retourne le code de hachage de l'objet actuel. /// /// Code de hachage calculé à partir des propriétés de l'objet. public override int GetHashCode() { return HashCode.Combine(Prime, Epithete, Age, Origine,Biographie, Citation,Equipage,Fruit); } /// /// Retourne une chaîne qui représente l'objet actuel. /// /// Chaîne représentant l'objet actuel. public override string ToString() { return "Personnage : " + Nom + " " + EstFavori + " " + Prime + " " + Epithete + " " + Age + " " + Origine + " " + Biographie + " "+ Citation+" " +Equipage+" " + Fruit+" "+ Image; } } }