Merge branch 'devGuillaume'
continuous-integration/drone/push Build is passing Details

master
Guillaume 2 years ago
commit 310b087c69

@ -1,4 +1,10 @@
using System;
/// \file Equipage.cs
/// \brief Contient la définition de la classe Equipage.
///
/// La classe Equipage représente les différents équipages avec leur nom, leur région de création, quand on les voit pour la première fois dans le manga et dans l'anime, leur Statut (s'il est encore actif ou non) et une description de ce dernier.
///
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
@ -11,7 +17,13 @@ using System.Xml.Linq;
namespace Model.Classes
{
/// <summary>
/// Représente un équipage dans le modèle.
/// </summary>
[DataContract(Name = "equipage")]
/// <summary>
/// Représente un équipage héritant de la classe ObjetOhara.
/// </summary>
public class Equipage : ObjetOhara
{
[DataMember(Name = "nomromanise")]
@ -25,6 +37,11 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la région d'origine de l'équipage.
/// </summary>
/// <value>Une chaîne de caractères représentant la région d'origine de l'équipage.</value>
[DataMember(Name = "region")]
private string? region;
public string? Region {
@ -35,6 +52,11 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le numéro du premier chapitre de l'équipage.
/// </summary>
/// <value>Un entier représentant le numéro du premier chapitre de l'équipage.</value>
[DataMember(Name = "premierchap")]
private int premierchap;
public int PremierChap {
@ -45,6 +67,11 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le numéro du premier épisode de l'équipage.
/// </summary>
/// <value>Un entier représentant le numéro du premier épisode de l'équipage.</value>
[DataMember(Name = "premierep")]
private int premierep;
public int PremierEp {
@ -55,6 +82,11 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le statut de l'équipage.
/// </summary>
/// <value>Une valeur booléenne indiquant le statut de l'équipage.</value>
[DataMember(Name = "statut")]
private bool statut;
public bool Statut {
@ -65,6 +97,11 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la description de l'équipage.
/// </summary>
/// <value>Une chaîne de caractères représentant la description de l'équipage.</value>
[DataMember(Name = "description")]
private string? description;
public string? Description {
@ -75,6 +112,11 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le capitaine de l'équipage.
/// </summary>
/// <value>Un objet Personnage représentant le capitaine de l'équipage.</value>
[DataMember(Name = "capitaine")]
private Personnage? capitaine;
public Personnage? Capitaine {
@ -85,37 +127,82 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient une collection en lecture seule des membres de l'équipage.
/// </summary>
/// <value>Une collection en lecture seule d'objets Personnage représentant les membres de l'équipage.</value>
[DataMember(Name = "membre")]
private ObservableCollection<Personnage> membre = new ObservableCollection<Personnage>();
public IReadOnlyCollection<Personnage> Membre { get=>membre; }
/// <summary>
/// Ajoute un membre à l'équipage.
/// </summary>
/// <param name="p">Le membre à ajouter à l'équipage.</param>
public void AjouterMembre(Personnage? p)
{
if(p!=null) membre.Add(p);
}
/// <summary>
/// Retire un membre de l'équipage.
/// </summary>
/// <param name="p">Le membre à retirer de l'équipage.</param>
public void RetirerMembre(Personnage? p)
{
if(p!=null) membre.Remove(p);
}
/// <summary>
/// Vide la liste des membres de l'équipage.
/// </summary>
public void ViderMembre() => membre.Clear();
/// <summary>
/// Obtient une collection en lecture seule des équipages alliés.
/// </summary>
/// <value>Une collection en lecture seule d'objets Equipage représentant les équipages alliés.</value>
[DataMember(Name = "allie")]
private ObservableCollection<Equipage> allie = new ObservableCollection<Equipage>();
public IReadOnlyCollection<Equipage> Allie { get => allie; }
/// <summary>
/// Ajoute un équipage allié.
/// </summary>
/// <param name="p">L'équipage allié à ajouter.</param>
public void AjouterAllie(Equipage? p)
{
if (p != null) allie.Add(p);
}
/// <summary>
/// Retire un équipage allié.
/// </summary>
/// <param name="p">L'équipage allié à retirer.</param>
public void RetirerAllie(Equipage? p)
{
if (p != null) allie.Remove(p);
}
/// <summary>
/// Vide la liste des équipages alliés.
/// </summary>
public void ViderAllie() => allie.Clear();
/// <summary>
/// Initialise une nouvelle instance de la classe Equipage avec les valeurs spécifiées.
/// </summary>
/// <param name="nom">Le nom de l'équipage.</param>
/// <param name="nomRomanise">Le nom romanisé de l'équipage.</param>
/// <param name="region">La région d'origine de l'équipage.</param>
/// <param name="premierChap">Le numéro du premier chapitre de l'équipage.</param>
/// <param name="premierEp">Le numéro du premier épisode de l'équipage.</param>
/// <param name="statut">Le statut de l'équipage.</param>
/// <param name="description">La description de l'équipage.</param>
public Equipage(string nom, string nomRomanise, string region, int premierChap, int premierEp, bool statut, string description) : base(nom)
{
@ -142,6 +229,17 @@ namespace Model.Classes
Description = description;
}
/// <summary>
/// Initialise une nouvelle instance de la classe Equipage avec les valeurs spécifiées, y compris une image personnalisée.
/// </summary>
/// <param name="nom">Le nom de l'équipage.</param>
/// <param name="nomRomanise">Le nom romanisé de l'équipage.</param>
/// <param name="region">La région d'origine de l'équipage.</param>
/// <param name="premierChap">Le numéro du premier chapitre de l'équipage.</param>
/// <param name="premierEp">Le numéro du premier épisode de l'équipage.</param>
/// <param name="statut">Le statut de l'équipage.</param>
/// <param name="description">La description de l'équipage.</param>
/// <param name="image">Le chemin d'accès ou le nom de l'image personnalisée de l'équipage.</param>
public Equipage(string nom, string nomRomanise, string region, int premierChap, int premierEp, bool statut, string description, string image) : this(nom, nomRomanise, region, premierChap, premierEp, statut, description)
{
@ -152,6 +250,11 @@ namespace Model.Classes
Image = image;
}
/// <summary>
/// Détermine si l'objet spécifié est identique à l'équipage actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'équipage actuel.</param>
/// <returns>True si l'objet spécifié est identique à l'équipage actuel, sinon False.</returns>
public override bool Equals(object? obj)
{
@ -167,12 +270,20 @@ namespace Model.Classes
}
}
/// <summary>
/// Retourne le code de hachage de l'équipage.
/// </summary>
/// <returns>Le code de hachage de l'équipage.</returns>
public override int GetHashCode()
{
return HashCode.Combine(NomRomanise, Region, PremierChap, PremierEp, Statut, Description);
}
/// <summary>
/// Retourne une représentation sous forme de chaîne de caractères de l'équipage.
/// </summary>
/// <returns>Une représentation sous forme de chaîne de caractères de l'équipage.</returns>
public override string ToString()
{

@ -1,4 +1,9 @@
using System;
/// \file FruitDuDemon.cs
/// \brief Contient la définition de la classe FruitDuDemon.
///
/// La classe FruitDuDemon représente les différents fruit du démons avec leur nom, nom romanisé, leur type, apparition du premier chapitre/premier épisode, une description et leurs forces et leurs faiblesses.
///
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@ -10,9 +15,15 @@ using System.Xml.Linq;
namespace Model.Classes
{
/// <summary>
/// Représente un Fruit du Démon.
/// </summary>
[DataContract(Name = "fruitdudemon")]
public class FruitDuDemon : ObjetOhara
{
/// <summary>
/// Obtient ou définit le nom romanisé du Fruit du Démon.
/// </summary>
[DataMember(Name = "nomromanise")]
private string? nomromanise;
public string? NomRomanise {
@ -23,6 +34,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le type du Fruit du Démon.
/// </summary>
[DataMember(Name = "type")]
private string? type;
public string? Type {
@ -33,6 +47,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le numéro du premier chapitre où le Fruit du Démon est mentionné.
/// </summary>
[DataMember(Name = "premierchap")]
private int premierchap;
public int PremierChap {
@ -43,6 +60,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le numéro du premier épisode où le Fruit du Démon est mentionné.
/// </summary>
[DataMember(Name = "premierep")]
private int premierep;
public int PremierEp {
@ -53,6 +73,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la description du Fruit du Démon.
/// </summary>
[DataMember(Name = "description")]
private string? description;
public string? Description {
@ -63,6 +86,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit les forces du Fruit du Démon.
/// </summary>
[DataMember(Name = "forces")]
private string? forces;
public string? Forces {
@ -73,6 +99,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit les faiblesses du Fruit du Démon.
/// </summary>
[DataMember(Name = "faiblesses")]
private string? faiblesses;
public string? Faiblesses {
@ -83,10 +112,25 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit les utilisateurs du Fruit du Démon.
/// </summary>
[DataMember(Name = "utilisateur", EmitDefaultValue = false)]
public List<Personnage> Utilisateur { get; set; } = new List<Personnage>();
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="FruitDuDemon"/> avec les paramètres spécifiés.
/// </summary>
/// <param name="nom">Le nom du Fruit du Démon.</param>
/// <param name="nomRomanise">Le nom romanisé du Fruit du Démon.</param>
/// <param name="type">Le type du Fruit du Démon.</param>
/// <param name="premierChap">Le numéro du premier chapitre où le Fruit du Démon est mentionné.</param>
/// <param name="premierEp">Le numéro du premier épisode où le Fruit du Démon est mentionné.</param>
/// <param name="description">La description du Fruit du Démon.</param>
/// <param name="forces">Les forces du Fruit du Démon.</param>
/// <param name="faiblesses">Les faiblesses du Fruit du Démon.</param>
public FruitDuDemon(string nom, string nomRomanise, string type, int premierChap, int premierEp, string description, string forces, string faiblesses) : base(nom)
{
@ -113,12 +157,32 @@ namespace Model.Classes
Faiblesses = faiblesses;
}
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="FruitDuDemon"/> avec les paramètres spécifiés.
/// </summary>
/// <param name="nom">Le nom du Fruit du Démon.</param>
/// <param name="nomRomanise">Le nom romanisé du Fruit du Démon.</param>
/// <param name="type">Le type du Fruit du Démon.</param>
/// <param name="premierChap">Le numéro du premier chapitre où le Fruit du Démon est mentionné.</param>
/// <param name="premierEp">Le numéro du premier épisode où le Fruit du Démon est mentionné.</param>
/// <param name="description">La description du Fruit du Démon.</param>
/// <param name="forces">Les forces du Fruit du Démon.</param>
/// <param name="faiblesses">Les faiblesses du Fruit du Démon.</param>
/// <param name="image">Le chemin de l'image du Fruit du Démon.</param>
public FruitDuDemon(string nom, string nomRomanise, string type, int premierChap, int premierEp, string description, string forces, string faiblesses, string image) : this(nom, nomRomanise, type, premierChap, premierEp, description, forces, faiblesses)
{
if (String.IsNullOrWhiteSpace(image))
image = "baseimage.png";
Image = image;
}
/// <summary>
/// Détermine si l'objet spécifié est égal à l'objet actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'objet actuel.</param>
/// <returns><see langword="true"/> si l'objet spécifié est égal à l'objet actuel ; sinon, <see langword="false"/>.</returns>
public override bool Equals(object? obj)
{
if (obj == null) return false;
@ -134,11 +198,24 @@ namespace Model.Classes
}
/// <summary>
/// Retourne le code de hachage de l'objet actuel.
/// </summary>
/// <returns>Code de hachage calculé à partir des propriétés de l'objet.</returns>
public override int GetHashCode()
{
return HashCode.Combine(NomRomanise, Type, PremierChap, PremierEp, Description, Forces, Faiblesses);
}
/// <summary>
/// Retourne une chaîne qui représente l'objet actuel.
/// </summary>
/// <returns>Chaîne représentant l'objet actuel.</returns>
public override string ToString()
{
return "FruitDuDemon : " + Nom +" " +EstFavori+" " + NomRomanise + " " + Type + " " + PremierChap + " " + PremierEp + " " + Description + " " + Forces +" "+Faiblesses+ " " + Image;

@ -1,4 +1,9 @@
using System;
/// \file Ile.cs
/// \brief Contient la définition de la classe Ile.
///
/// La classe Ile représente les différents iles avec leur nom, nom romanisé, leur région de localisation, la première fois qu'on les vois dans le manga/animé, une description de l'île et une description géographique d'où se situe l'île.
///
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@ -10,9 +15,15 @@ using System.Xml.Linq;
namespace Model.Classes
{
/// <summary>
/// Représente une île dans le monde de One Piece.
/// </summary>
[DataContract(Name = "ile")]
public class Ile : ObjetOhara
{
/// <summary>
/// Obtient ou définit le nom romanisé de l'île.
/// </summary>
[DataMember(Name = "nomromanise")]
private string? nomromanise;
public string? NomRomanise
@ -24,7 +35,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la région où se situe l'île.
/// </summary>
[DataMember(Name = "region")]
private string? region;
public string? Region {
@ -35,6 +48,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le numéro du premier chapitre où l'île est mentionnée.
/// </summary>
[DataMember(Name = "premierchap")]
private int premierchap;
public int PremierChap {
@ -45,6 +61,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le numéro du premier épisode où l'île est mentionnée.
/// </summary>
[DataMember(Name = "premierep")]
private int premierep;
public int PremierEp {
@ -55,6 +74,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la description de l'île.
/// </summary>
[DataMember(Name = "description")]
private string? description;
public string? Description {
@ -65,6 +87,9 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la situation géographique de l'île.
/// </summary>
[DataMember(Name = "geographie")]
private string? geographie;
public string? Geographie {
@ -77,6 +102,16 @@ namespace Model.Classes
}
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="Ile"/> avec les paramètres spécifiés.
/// </summary>
/// <param name="nom">Le nom de l'île.</param>
/// <param name="nomRomanise">Le nom romanisé de l'île.</param>
/// <param name="region">La région où se situe l'île.</param>
/// <param name="premierChap">Le numéro du premier chapitre où l'île est mentionnée.</param>
/// <param name="premierEp">Le numéro du premier épisode où l'île est mentionnée.</param>
/// <param name="description">La description de l'île.</param>
/// <param name="geographie">La situation géographique de l'île.</param>
public Ile(string nom, string nomRomanise, string region, int premierChap, int premierEp, string description, string geographie) : base(nom)
{
@ -111,6 +146,18 @@ namespace Model.Classes
}
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="Ile"/> avec les paramètres spécifiés, y compris une image.
/// </summary>
/// <param name="nom">Le nom de l'île.</param>
/// <param name="nomRomanise">Le nom romanisé de l'île.</param>
/// <param name="region">La région où se situe l'île.</param>
/// <param name="premierChap">Le numéro du premier chapitre où l'île est mentionnée.</param>
/// <param name="premierEp">Le numéro du premier épisode où l'île est mentionnée.</param>
/// <param name="description">La description de l'île.</param>
/// <param name="geographie">La situation géographique de l'île.</param>
/// <param name="image">Le chemin de l'image représentant l'île.</param>
public Ile(string nom, string nomRomanise, string region, int premierChap, int premierEp, string description, string geographie, string image) : this(nom, nomRomanise, region, premierChap, premierEp, description, geographie)
{
if(String.IsNullOrWhiteSpace(image)) {
@ -119,6 +166,13 @@ namespace Model.Classes
Image = image;
}
/// <summary>
/// Détermine si l'objet spécifié est égal à l'objet actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'objet actuel.</param>
/// <returns>true si les objets sont égaux ; sinon, false.</returns>
public override bool Equals(object? obj)
{
if (obj == null) return false;
@ -134,12 +188,25 @@ namespace Model.Classes
}
/// <summary>
/// Retourne le code de hachage de l'objet.
/// </summary>
/// <returns>Le code de hachage de l'objet.</returns>
public override int GetHashCode()
{
return HashCode.Combine(NomRomanise, Region, PremierChap, PremierEp, Description, Geographie);
}
/// <summary>
/// Retourne une chaîne de caractères représentant l'objet actuel.
/// </summary>
/// <returns>Une chaîne de caractères représentant l'objet actuel.</returns>
public override string ToString()
{
return "Ile : "+ Nom +" "+NomRomanise+" "+Region+" "+PremierChap+" "+PremierEp+" "+Description+" "+Geographie+" "+Image;

@ -1,4 +1,10 @@
using System;
/// \file ObjetOhara.cs
/// \brief Contient la définition de la classe ObjetOhara.
///
/// La classe ObjetOhara représente les différents objets de notre application Ohara avec leur nom et l'image qui leur est attitré pour pouvoir factoriser le code.
///
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@ -10,11 +16,22 @@ using System.Xml.Linq;
namespace Model.Classes
{
/// <summary>
/// Représente un objet du monde de One Piece appartenant à l'île d'Ohara.
/// </summary>
[DataContract(Name = "objetohara")]
/// <summary>
/// Événement déclenché lorsque la valeur d'une propriété change.
/// </summary>
public class ObjetOhara : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
/// <summary>
/// Obtient ou définit le nom de l'objet.
/// </summary>
[DataMember(Name = "nom")]
private string? nom;
public string? Nom {
@ -26,6 +43,10 @@ namespace Model.Classes
}
}
/// <summary>
/// Obtient ou définit le chemin de l'image représentant l'objet.
/// </summary>
[DataMember(Name = "image")]
private string? image;
public string? Image {
@ -38,6 +59,10 @@ namespace Model.Classes
}
}
/// <summary>
/// Obtient ou définit une valeur indiquant si l'objet est marqué comme favori.
/// </summary>
[DataMember(Name = "estfavori")]
private bool estfavori;
public bool EstFavori {
@ -48,7 +73,13 @@ namespace Model.Classes
}
}
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="ObjetOhara"/> avec le nom spécifié.
/// </summary>
/// <param name="nom">Le nom de l'objet.</param>
/// <param name="image">Le chemin de l'image représentant l'objet (par défaut : "baseimage.png").</param>
/// <param name="estFavori">Indique si l'objet est marqué comme favori (par défaut : false).</param>
public ObjetOhara(string nom, string image = "baseimage.png", bool estFavori = false)
{
@ -58,7 +89,12 @@ namespace Model.Classes
EstFavori = estFavori;
}
/// <summary>
/// Détermine si l'objet spécifié est égal à l'objet actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'objet actuel.</param>
/// <returns>true si les objets sont égaux ; sinon, false.</returns>
public override bool Equals(object? obj)
{
@ -75,17 +111,38 @@ namespace Model.Classes
}
/// <summary>
/// Retourne le code de hachage de l'objet.
/// </summary>
/// <returns>Le code de hachage de l'objet.</returns>
public override int GetHashCode()
{
return HashCode.Combine(Nom, Image,EstFavori);
}
/// <summary>
/// Retourne une chaîne de caractères représentant l'objet actuel.
/// </summary>
/// <returns>Une chaîne de caractères représentant l'objet actuel.</returns>
public override string ToString()
{
return "ObjetOhara : " + Nom + " " +EstFavori+ " " + Image;
}
protected void OnPropertyChanged([CallerMemberName] string? propertyName = null)
/// <summary>
/// Déclenche l'événement PropertyChanged.
/// </summary>
/// <param name="propertyName">Le nom de la propriété qui a changé (facultatif).</param>
protected void OnPropertyChanged([CallerMemberName] string? propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}

@ -1,14 +1,27 @@
using System.Collections.ObjectModel;
/// \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
{
/// <summary>
/// Représente un personnage de l'univers de One Piece.
/// </summary>
[DataContract(Name = "personnage")]
public class Personnage : ObjetOhara
{
/// <summary>
/// Obtient ou définit la prime du personnage.
/// </summary>
[DataMember(Name = "prime")]
private double prime;
public double Prime {
@ -19,6 +32,10 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit l'épithète du personnage.
/// </summary>
[DataMember(Name = "epithete")]
private string? epithete;
public string? Epithete {
@ -28,6 +45,10 @@ namespace Model.Classes
epithete = value;
}
}
/// <summary>
/// Obtient ou définit l'âge du personnage.
/// </summary>
[DataMember(Name = "age")]
private int age;
public int Age {
@ -38,6 +59,10 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la taille du personnage.
/// </summary>
[DataMember(Name = "taille")]
private double taille;
public double Taille {
@ -48,6 +73,10 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit l'origine du personnage.
/// </summary>
[DataMember(Name = "origine")]
private string? origine;
public string? Origine {
@ -58,6 +87,10 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la biographie du personnage.
/// </summary>
[DataMember(Name = "biographie")]
private string? biographie;
public string? Biographie {
@ -68,6 +101,10 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit la citation du personnage.
/// </summary>
[DataMember(Name = "citation")]
private string? citation;
public string? Citation {
@ -78,6 +115,10 @@ namespace Model.Classes
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit l'équipage auquel le personnage appartient.
/// </summary>
[DataMember(Name = "equipage", EmitDefaultValue = false)]
private Equipage? equipage;
public Equipage? Equipage {
@ -87,26 +128,57 @@ namespace Model.Classes
equipage = value;
OnPropertyChanged();
}
}
}
/// <summary>
/// Obtient la collection en lecture seule des fruits du démon détenus par le personnage.
/// </summary>
[DataMember(Name = "fruit", EmitDefaultValue = false)]
private ObservableCollection<FruitDuDemon> fruit = new ObservableCollection<FruitDuDemon>();
public IReadOnlyCollection<FruitDuDemon> Fruit {
get=>fruit;
}
/// <summary>
/// Ajoute un fruit du démon à la collection du personnage.
/// </summary>
/// <param name="f">Le fruit du démon à ajouter.</param>
public void AjouterFruit(FruitDuDemon? f)
{
if (f == null) return;
fruit.Add(f);
}
/// <summary>
/// Retire un fruit du démon de la collection du personnage.
/// </summary>
/// <param name="f">Le fruit du démon à retirer.</param>
public void RetierFruit(FruitDuDemon? f)
{
if (f == null) return;
fruit.Remove(f);
}
/// <summary>
/// Vide la collection des fruits du démon du personnage.
/// </summary>
public void ViderFruit() => fruit.Clear();
/// <summary>
/// Initialise une nouvelle instance de la classe Personnage avec un nom et des informations supplémentaires.
/// </summary>
/// <param name="nom">Le nom du personnage.</param>
/// <param name="prime">La prime du personnage.</param>
/// <param name="epithete">L'épithète du personnage.</param>
/// <param name="age">L'âge du personnage.</param>
/// <param name="taille">La taille du personnage.</param>
/// <param name="origine">L'origine du personnage.</param>
/// <param name="biographie">La biographie du personnage.</param>
/// <param name="citation">La citation du personnage.</param>
public Personnage(string nom, double prime, string epithete, int age, double taille, string origine, string biographie, string citation) : base(nom)
{
if (prime < 0)
@ -135,12 +207,34 @@ namespace Model.Classes
}
/// <summary>
/// Initialise une nouvelle instance de la classe Personnage avec un nom, des informations supplémentaires et une image.
/// </summary>
/// <param name="nom">Le nom du personnage.</param>
/// <param name="prime">La prime du personnage.</param>
/// <param name="epithete">L'épithète du personnage.</param>
/// <param name="age">L'âge du personnage.</param>
/// <param name="taille">La taille du personnage.</param>
/// <param name="origine">L'origine du personnage.</param>
/// <param name="biographie">La biographie du personnage.</param>
/// <param name="citation">La citation du personnage.</param>
/// <param name="image">Le chemin de l'image du personnage.</param>
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;
}
/// <summary>
/// Détermine si l'objet spécifié est égal à l'objet actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'objet actuel.</param>
/// <returns>true si les objets sont égaux, sinon false.</returns>
public override bool Equals(object? obj)
{
if (obj == null) return false;
@ -156,11 +250,24 @@ namespace Model.Classes
}
/// <summary>
/// Retourne le code de hachage de l'objet actuel.
/// </summary>
/// <returns>Code de hachage calculé à partir des propriétés de l'objet.</returns>
public override int GetHashCode()
{
return HashCode.Combine(Prime, Epithete, Age, Taille, Origine,Biographie, Citation,Equipage);
}
/// <summary>
/// Retourne une chaîne qui représente l'objet actuel.
/// </summary>
/// <returns>Chaîne représentant l'objet actuel.</returns>
public override string ToString()
{
return "Personnage : " + Nom + " " + EstFavori + " " + Prime + " " + Epithete + " " + Age + " " + Origine + " " + Biographie + " "+ Citation+" " +Equipage+" " + Fruit+" "+ Image;

Loading…
Cancel
Save