package com.helldivers.app;

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

/**
 * SoundManager - Gestor de sonidos usando SoundPool para reproducir archivos de recursos
 */
public class SoundManager {

    private SoundPool soundPool;
    private int soundPop;
    private int soundError;
    private boolean enabled = true;

    public 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();

        // Cargar los sonidos desde res/raw
        soundPop = soundPool.load(context, R.raw.pop, 1);
        soundError = soundPool.load(context, R.raw.error, 1);
    }

    /**
     * Sonido de click de boton - reproduce pop.mp3
     */
    public void playButtonClick() {
        playPop();
    }

    /**
     * Sonido de exito
     */
    public void playSuccess() {
        // Por ahora no tenemos un sonido de éxito específico en raw, 
        // podríamos usar pop o dejarlo vacío si no se solicita.
    }

    /**
     * Sonido de fallo - reproduce error.mp3
     */
    public void playFailure() {
        if (!enabled || soundPool == null) return;
        soundPool.play(soundError, 1.0f, 1.0f, 1, 0, 1.0f);
    }

    /**
     * Tono para direcciones del juego - reproduce pop.mp3 para cualquier dirección
     */
    public void playTone(int direction) {
        playPop();
    }

    private void playPop() {
        if (!enabled || soundPool == null) return;
        soundPool.play(soundPop, 1.0f, 1.0f, 1, 0, 1.0f);
    }

    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }

    public boolean isEnabled() {
        return enabled;
    }

    public void pause() {
        if (soundPool != null) soundPool.autoPause();
    }

    public void resume() {
        if (soundPool != null) soundPool.autoResume();
    }

    public void release() {
        if (soundPool != null) {
            soundPool.release();
            soundPool = null;
        }
    }
}