package legion.muyue.best2048.data;

import com.google.gson.annotations.SerializedName;

/**
 * Représente les informations de base d'une partie du jeu 2048.
 * Cette classe est utilisée pour stocker et transférer les données relatives
 * à une session de jeu spécifique, notamment via la sérialisation/désérialisation JSON avec Gson.
 */
public class GameInfo {

    /**
     * L'identifiant unique de la partie.
     * Utilisé par Gson pour la sérialisation avec le nom "gameId".
     */
    @SerializedName("gameId")
    private String gameId;

    /**
     * Le statut actuel de la partie (par exemple, "en attente", "en cours", "terminée").
     * Utilisé par Gson pour la sérialisation avec le nom "status".
     */
    @SerializedName("status")
    private String status;

    /**
     * L'identifiant du premier joueur.
     * Peut être null si le joueur n'a pas encore rejoint.
     * Utilisé par Gson pour la sérialisation avec le nom "player1Id".
     */
    @SerializedName("player1Id")
    private String player1Id;

    /**
     * L'identifiant du deuxième joueur.
     * Peut être null si le joueur n'a pas encore rejoint ou s'il s'agit d'une partie solo.
     * Utilisé par Gson pour la sérialisation avec le nom "player2Id".
     */
    @SerializedName("player2Id")
    private String player2Id;

    /**
     * Constructeur par défaut.
     * Nécessaire pour certaines bibliothèques de sérialisation/désérialisation comme Gson.
     */
    public GameInfo() {
        // Constructeur par défaut explicite pour la clarté et la compatibilité
    }


    /**
     * Récupère l'identifiant unique de la partie.
     *
     * @return L'identifiant de la partie.
     */
    public String getGameId() {
        return gameId;
    }

    /**
     * Récupère le statut actuel de la partie.
     *
     * @return Le statut de la partie (ex: "waiting", "playing", "finished").
     */
    public String getStatus() {
        return status;
    }

    /**
     * Récupère l'identifiant du premier joueur.
     *
     * @return L'identifiant du joueur 1, ou null s'il n'est pas défini.
     */
    public String getPlayer1Id() {
        return player1Id;
    }

    /**
     * Récupère l'identifiant du deuxième joueur.
     *
     * @return L'identifiant du joueur 2, ou null s'il n'est pas défini.
     */
    public String getPlayer2Id() {
        return player2Id;
    }
}