using GFramework.Core.Abstractions.system;
using Godot;
namespace GFramework.Godot.system;
///
/// 音频管理器系统接口,用于统一管理背景音乐和音效的播放
///
public interface IAudioManagerSystem : ISystem
{
///
/// 播放背景音乐
///
/// 音频文件路径
/// 音量大小,范围0-1
/// 是否循环播放
void PlayMusic(string audioPath, float volume = 1.0f, bool loop = true);
///
/// 播放音效
///
/// 音频文件路径
/// 音量大小,范围0-1
/// 音调调整
void PlaySound(string audioPath, float volume = 1.0f, float pitch = 1.0f);
///
/// 播放特效音效
///
/// 音频文件路径
/// 音量大小,范围0-1
/// 音调调整
void PlaySfx(string audioPath, float volume = 1.0f, float pitch = 1.0f);
///
/// 播放语音
///
/// 音频文件路径
/// 音量大小,范围0-1
/// 音调调整
void PlayVoice(string audioPath, float volume = 1.0f, float pitch = 1.0f);
///
/// 播放环境音效
///
/// 音频文件路径
/// 音量大小,范围0-1
/// 音调调整
void PlayAmbient(string audioPath, float volume = 1.0f, float pitch = 1.0f);
///
/// 停止背景音乐
///
void StopMusic();
///
/// 暂停背景音乐
///
void PauseMusic();
///
/// 恢复背景音乐播放
///
void ResumeMusic();
///
/// 设置背景音乐音量
///
/// 音量大小,范围0-1
void SetMusicVolume(float volume);
///
/// 获取背景音乐音量
///
/// 音量大小,范围0-1
float GetMusicVolume();
///
/// 设置音效音量
///
/// 音量大小,范围0-1
void SetSoundVolume(float volume);
///
/// 获取音效音量
///
/// 音量大小,范围0-1
float GetSoundVolume();
///
/// 设置特效音量
///
/// 音量大小,范围0-1
void SetSfxVolume(float volume);
///
/// 获取特效音量
///
/// 音量大小,范围0-1
float GetSfxVolume();
///
/// 设置语音音量
///
/// 音量大小,范围0-1
void SetVoiceVolume(float volume);
///
/// 获取语音音量
///
/// 音量大小,范围0-1
float GetVoiceVolume();
///
/// 设置环境音量
///
/// 音量大小,范围0-1
void SetAmbientVolume(float volume);
///
/// 获取环境音量
///
/// 音量大小,范围0-1
float GetAmbientVolume();
///
/// 设置主音量
///
/// 音量大小,范围0-1
void SetMasterVolume(float volume);
///
/// 获取主音量
///
/// 音量大小,范围0-1
float GetMasterVolume();
///
/// 检查背景音乐是否正在播放
///
/// 正在播放返回true,否则返回false
bool IsMusicPlaying();
///
/// 淡入背景音乐
///
/// 音频文件路径
/// 淡入持续时间(秒)
/// 目标音量
void FadeInMusic(string audioPath, float duration, float volume = 1.0f);
///
/// 淡出背景音乐
///
/// 淡出持续时间(秒)
void FadeOutMusic(float duration);
///
/// 播放3D音效
///
/// 音频文件路径
/// 3D空间中的位置
/// 音量大小,范围0-1
void PlaySound3D(string audioPath, Vector3 position, float volume = 1.0f);
///
/// 设置低通滤波器强度
///
/// 滤波器强度,范围0-1
void SetLowPassFilter(float amount);
///
/// 设置音频混响效果
///
/// 房间大小
/// 阻尼
/// 湿声级别
void SetReverb(float roomSize, float damping, float wetLevel);
}