package com.example.boidelov3;

import android.content.Context;
import android.media.AudioAttributes;
import android.media.SoundPool;

/**
 * Gestionnaire des effets sonores de l'application
 */
public class SoundManager {
    private static SoundManager instance;
    private SoundPool soundPool;
    private boolean soundEnabled = true;

    // IDs des sons
    private int soundClick;
    private int soundSuccess;
    private int soundError;
    private int soundNext;
    private int soundManche;

    /**
     * Obtient l'instance unique du SoundManager
     */
    public static synchronized SoundManager getInstance(Context context) {
        if (instance == null) {
            instance = new SoundManager(context);
        }
        return instance;
    }

    /**
     * Constructeur privé
     */
    private SoundManager(Context context) {
        AudioAttributes audioAttributes = new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_GAME)
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .build();

        soundPool = new SoundPool.Builder()
                .setMaxStreams(5)
                .setAudioAttributes(audioAttributes)
                .build();

        // Charger les sons (pour l'instant, on utilise des sons système)
        // TODO: Ajouter des fichiers audio personnalisés dans res/raw/
        // soundClick = soundPool.load(context, R.raw.click, 1);
        // soundSuccess = soundPool.load(context, R.raw.success, 1);
        // etc.
    }

    /**
     * Joue le son de clic
     */
    public void playClick() {
        if (soundEnabled && soundPool != null) {
            // Son de clic par défaut
            // Pour l'instant, feedback haptique uniquement
        }
    }

    /**
     * Joue le son de succès
     */
    public void playSuccess() {
        if (soundEnabled && soundPool != null) {
            // Son de succès par défaut
        }
    }

    /**
     * Joue le son d'erreur
     */
    public void playError() {
        if (soundEnabled && soundPool != null) {
            // Son d'erreur par défaut
        }
    }

    /**
     * Joue le son de transition (question suivante)
     */
    public void playNext() {
        if (soundEnabled && soundPool != null) {
            // Son de transition par défaut
        }
    }

    /**
     * Joue le son de manche
     */
    public void playManche() {
        if (soundEnabled && soundPool != null) {
            // Son de manche par défaut
        }
    }

    /**
     * Active ou désactive les sons
     */
    public void setSoundEnabled(boolean enabled) {
        this.soundEnabled = enabled;
    }

    /**
     * Retourne l'état des sons
     */
    public boolean isSoundEnabled() {
        return soundEnabled;
    }

    /**
     * Libère les ressources
     */
    public void release() {
        if (soundPool != null) {
            soundPool.release();
            soundPool = null;
        }
        instance = null;
    }
}
