You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
294 lines
10 KiB
294 lines
10 KiB
/// \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;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.Serialization;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
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")]
|
|
private string? nomromanise;
|
|
public string? NomRomanise
|
|
{
|
|
get => nomromanise;
|
|
set
|
|
{
|
|
nomromanise = value;
|
|
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 {
|
|
get=> region;
|
|
set
|
|
{
|
|
region = value;
|
|
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 {
|
|
get=>premierchap;
|
|
set
|
|
{
|
|
premierchap = value;
|
|
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 {
|
|
get=>premierep;
|
|
set
|
|
{
|
|
premierep = value;
|
|
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 {
|
|
get=>statut;
|
|
set
|
|
{
|
|
statut = value;
|
|
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 {
|
|
get=>description;
|
|
set
|
|
{
|
|
description = value;
|
|
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 {
|
|
get=>capitaine;
|
|
set
|
|
{
|
|
capitaine = value;
|
|
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)
|
|
{
|
|
|
|
NomRomanise = nomRomanise;
|
|
Region = region;
|
|
if (premierEp < 0)
|
|
{
|
|
PremierEp = 0;
|
|
}
|
|
else
|
|
{
|
|
PremierEp = premierEp;
|
|
}
|
|
if (premierChap < 0)
|
|
{
|
|
premierChap = 0;
|
|
}
|
|
else
|
|
{
|
|
PremierChap = premierChap;
|
|
}
|
|
Statut = statut;
|
|
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)
|
|
{
|
|
if (String.IsNullOrWhiteSpace(image))
|
|
{
|
|
image = "baseimage.png";
|
|
}
|
|
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)
|
|
{
|
|
if (obj == null) return false;
|
|
if (this.GetType() != obj.GetType())
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
Equipage o = (Equipage)obj;
|
|
return o.Nom == Nom;
|
|
}
|
|
|
|
}
|
|
/// <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()
|
|
{
|
|
return "Equipage : " + Nom +" "+EstFavori+ " " + NomRomanise + " " + Region + " " + PremierChap + " " + PremierEp + " " + Statut + " " + Description + " " + Image;
|
|
}
|
|
}
|
|
}
|