using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public class AudioManager : MonoBehaviour
{
    public static AudioManager Instance;


    [Header("AudioMixer")]
    public AudioMixer mixer;
    public AudioMixerSnapshot defaultSnapshot;
    public AudioMixerSnapshot muteSnapshot;

    [Header("References")]
    public AudioSource musicSource;
    public AudioSource sfxSource;

    [Header("Musics")]
    public List<MusicByTitle> musics = new List<MusicByTitle>();

    private void Awake()
    {
        Instance = this;
    }

    public void ChangeMusic(MusicTitle _title)
    {
        //Debug.Log($"changing music to {_title}");
        musicSource.clip = musics.Find(x => x.title == _title).clip;
        musicSource.Play();
    }

    public void StopMusic()
    {
        musicSource.Stop();
    }

    public void PlaySFX(AudioClip _clip)
    {
        //Debug.Log($"playing {_clip.name} SFX");
        sfxSource.PlayOneShot(_clip);
    }

    public void ToggleMute(bool _toggle)
    {
        mixer.TransitionToSnapshots(new AudioMixerSnapshot[] { defaultSnapshot, muteSnapshot }, _toggle ? new float[] { 0, 1 } : new float[] { 1, 0 }, 0.2f);
    }
}

[System.Serializable]
public class MusicByTitle
{
    public MusicTitle title;
    public AudioClip clip;
}

public enum MusicTitle
{
    Menu,
    TakingPicture,
    VotingSession,
    Ending
}
