package com.example.boidelov3;

/**
 * Centralise toutes les clés utilisées pour SharedPreferences.
 * Cette classe garantit la cohérence des clés à travers l'application.
 */
public final class PreferencesKeys {

    // Préfixe pour les noms de fichiers de préférences
    public static final String PREFS_NAME_PLAYERS = "Joueurs";
    public static final String PREFS_NAME_APP = "app";
    public static final String PREFS_NAME_GAME_STATS = "game_stats";
    public static final String PREFS_NAME_MY_PREFS = "MyPrefs";

    // Clés pour les joueurs (stockés dans PREFS_NAME_PLAYERS)
    public static final String KEY_PLAYER_1 = "J1";
    public static final String KEY_PLAYER_2 = "J2";
    public static final String KEY_PLAYER_3 = "J3";
    // Pour les joueurs supplémentaires : J4, J5, etc. (généré dynamiquement)

    // Clés pour les statistiques de jeu (stockées dans PREFS_NAME_GAME_STATS)
    public static final String KEY_QUESTIONS_PLAYED = "questions_played";
    public static final String KEY_PLAYERS_COUNT = "players_count";

    // Clés pour l'état de l'application (stockées dans PREFS_NAME_APP)
    public static final String KEY_ASKED_QUESTIONS = "askedQuestions";

    // Clés pour les paramètres utilisateur (stockés dans PREFS_NAME_MY_PREFS)
    public static final String KEY_SAVED_TEXT = "savedText";
    public static final String KEY_AI_PROVIDER = "aiProvider";

    // Clés pour la sauvegarde d'état (Bundle)
    public static final String KEY_TOTAL_QUESTIONS_ASKED = "total_questions_asked";
    public static final String KEY_CURRENT_QUESTION_TEXT = "current_question_text";
    public static final String KEY_IS_MANCHE_ACTIVE = "is_manche_active";
    public static final String KEY_MANCHES_COUNT = "manches_count";
    public static final String KEY_MANCHE_IDS = "manche_ids";
    public static final String KEY_MANCHE_COUNTS = "manche_counts";

    // Constructeur privé pour empêcher l'instanciation
    private PreferencesKeys() {
        throw new AssertionError("Classe utilitaire, ne pas instancier");
    }

    /**
     * Génère une clé de joueur pour les joueurs supplémentaires (J4, J5, etc.)
     *
     * @param playerNumber Le numéro du joueur (doit être >= 4)
     * @return La clé générée (ex: "J4", "J5")
     */
    public static String getPlayerKey(int playerNumber) {
        if (playerNumber < 1) {
            throw new IllegalArgumentException("Le numéro de joueur doit être >= 1");
        }
        return "J" + playerNumber;
    }
}
