// audio_play — reproducir sonidos one-shot y streaming sobre fn::audio::Engine.
// Issue 0072b — runtime gamedev nucleo.
#pragma once

#include "audio_engine.h"

namespace fn::audio {

struct Sound {
    void* impl;  // ma_sound* opaco
    bool  ok;
};

// Carga y prepara un sonido (decodifica streaming desde disco). Sound.ok=false si falla.
Sound sound_load(Engine& e, const char* path);

// Arranca/reanuda reproduccion.
void sound_play(Sound& s);

// Detiene reproduccion (no libera).
void sound_stop(Sound& s);

// Volumen 0..1 del sonido (independiente del master).
void sound_set_volume(Sound& s, float v);

// Libera recursos del sonido.
void sound_destroy(Sound& s);

// Fire-and-forget: reproduce path una vez sin handle. No-op si engine no esta listo.
void play_sound_oneshot(Engine& e, const char* path, float volume = 1.0f);

}  // namespace fn::audio
