package com.example.boidelov3.data;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Classe pour suivre les statistiques d'un joueur pendant une partie.
*
*
Cette classe est Parcelable pour pouvoir être passée entre les activités.
* Elle tracke deux types de statistiques :
*
* - {@code gorgeesBuves} : Nombre total de gorgées bues par le joueur
* - {@code gorgeesDistribuees} : Nombre total de gorgées distribuées par le joueur
*
*
* Exemple d'utilisation :
* {@code
* PlayerStats stats = new PlayerStats("Alice");
* stats.addGorgeesBuves(5);
* stats.addGorgeesDistribuees(3);
* int total = stats.getTotalGorgees(); // 8
* }
*
* SECURITY NOTE:
* Cette classe stocke des statistiques de jeu (gorgées, scores) qui ne sont PAS
* considérées comme des données sensibles. Aucun chiffrement n'est nécessaire.
*
* Si cette classe était étendue pour stocker des données personnelles (noms réels,
* emails, etc.), il faudrait utiliser :
*
* - AndroidX Security Library pour le chiffrement
* - EncryptedSharedPreferences pour le stockage persistant
*
*/
public class PlayerStats implements Parcelable {
private String playerName;
private int gorgeesBuves; // Nombre de gorgées bues par ce joueur
private int gorgeesDistribuees; // Nombre de gorgées distribuées par ce joueur
/**
* Crée les statistiques pour un joueur.
* Initialise les compteurs à zéro.
*
* @param playerName Le nom du joueur
*/
public PlayerStats(String playerName) {
this.playerName = playerName;
this.gorgeesBuves = 0;
this.gorgeesDistribuees = 0;
}
// Constructor for Parcelable
protected PlayerStats(Parcel in) {
playerName = in.readString();
gorgeesBuves = in.readInt();
gorgeesDistribuees = in.readInt();
}
public static final Creator CREATOR = new Creator() {
@Override
public PlayerStats createFromParcel(Parcel in) {
return new PlayerStats(in);
}
@Override
public PlayerStats[] newArray(int size) {
return new PlayerStats[size];
}
};
/**
* Retourne le nom du joueur.
* @return Le nom du joueur
*/
public String getPlayerName() {
return playerName;
}
/**
* Retourne le nombre de gorgées bues par ce joueur.
* @return Le nombre de gorgées bues
*/
public int getGorgeesBuves() {
return gorgeesBuves;
}
/**
* Retourne le nombre de gorgées distribuées par ce joueur.
* @return Le nombre de gorgées distribuées
*/
public int getGorgeesDistribuees() {
return gorgeesDistribuees;
}
/**
* Ajoute des gorgées bues au total du joueur.
*
* @param count Le nombre de gorgées à ajouter (peut être négatif)
*/
public void addGorgeesBuves(int count) {
this.gorgeesBuves += count;
}
/**
* Ajoute des gorgées distribuées au total du joueur.
*
* @param count Le nombre de gorgées à ajouter (peut être négatif)
*/
public void addGorgeesDistribuees(int count) {
this.gorgeesDistribuees += count;
}
/**
* Retourne le total des gorgées (buves + distribuées).
*
* @return La somme des gorgées bues et distribuées
*/
public int getTotalGorgees() {
return gorgeesBuves + gorgeesDistribuees;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(playerName);
dest.writeInt(gorgeesBuves);
dest.writeInt(gorgeesDistribuees);
}
}