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

public class SettingsEfects : MonoBehaviour
{
    [SerializeField] private AudioMixer mixer;
    [SerializeField] private SFXManager sfxManager;
    [SerializeField] private MusicManager musicManager;
    [SerializeField] private Slider sfxSlider;
    [SerializeField] private Image sfxButton;
    [SerializeField] private Slider musicSlider;
    [SerializeField] private Image musicButton;

    [SerializeField] private Color lowColor;
    [SerializeField] private Color highColor;

    private const string sfxVolumeKey = "SFXVolume";
    private const string musicVolumeKey = "MusicVolume";



    

    // Start is called before the first frame update
    void Start()
    {

        // Load saved volume settings or set default values
        float savedSFXVolume = PlayerPrefs.GetFloat(sfxVolumeKey, 1f);
        float savedMusicVolume = PlayerPrefs.GetFloat(musicVolumeKey, 1f);

        // Set initial volume levels
        SetSFXVolume(savedSFXVolume);
        SetMusicVolume(savedMusicVolume);

        // Update sliders based on saved volume levels
        sfxSlider.value = savedSFXVolume;
        musicSlider.value = savedMusicVolume;
       
        
    }

    // Update is called once per frame
    void Update()
    {
        // Update SFX button color based on volume level
        sfxButton.color = (sfxSlider.value <= 0) ? lowColor : highColor;

        // Update music button color based on volume level
        musicButton.color = (musicSlider.value <= 0) ? lowColor : highColor;
       
    }

    public void OnSFXVolumeChanged(float value)
    {
        SetSFXVolume(value);
        SaveVolumeSetting(sfxVolumeKey, value);
    }

    public void OnMusicVolumeChanged(float value)
    {
        SetMusicVolume(value);
        SaveVolumeSetting(musicVolumeKey, value);
    }

    private void SetSFXVolume(float value)
    {
        mixer.SetFloat("SFXVolume", Mathf.Log10(value) * 20);
        sfxManager.SetSFXVolume(value);
    }


    private void SetMusicVolume(float value)
    {
        mixer.SetFloat("MusicVolume", Mathf.Log10(value) * 20);
        musicManager.SetSFXVolume(value);
    }

    private void SaveVolumeSetting(string key, float value)
    {
        PlayerPrefs.SetFloat(key, value);
        PlayerPrefs.Save();
    }

}