UnityGameProjectsCode / RelianceGame / Save Data Control / SettingsControl.cs
SettingsControl.cs
Raw
using UnityEngine;
using UnityEngine.Audio;

public class SettingsControl : MonoBehaviour
{
    public AudioMixer mix;

    private float masterDefault = -10;
    private float envDefault = 0;
    private float musicDefault = 0;
    private float sfxDefault = -15;

    public SettingsSliderSendValue masterSet;
    public SettingsSliderSendValue envSet;
    public SettingsSliderSendValue musicSet;
    public SettingsSliderSendValue sfxSet;

    public void SetDefaultValues() //used for the reset button on the settings menu
    {
        SetMasterVolume(masterDefault);
        SetEnvVolume(envDefault);
        SetMusicVolume(musicDefault);
        SetSFXVolume(sfxDefault);
        masterSet.UpdateValues();
        envSet.UpdateValues();
        musicSet.UpdateValues();
        sfxSet.UpdateValues();
    }

    public void ModifyAllVolumes(float master, float env, float music, float sfx)
    {
        SetMasterVolume(master);
        SetEnvVolume(env);
        SetMusicVolume(music);
        SetSFXVolume(sfx);
        masterSet.UpdateValues();
        envSet.UpdateValues();
        musicSet.UpdateValues();
        sfxSet.UpdateValues();
    }

    public void SetMasterVolume(float value)
    {
        mix.SetFloat("Master Volume", value);
        mix.GetFloat("Master Volume", out float master);
        Debug.Log("Master set to " + master);
    }

    public float GetMasterVolume()
    {
        mix.GetFloat("Master Volume", out float currentVolume);

        return currentVolume;
    }

    public void SetEnvVolume(float value)
    {
        mix.SetFloat("Environment Volume", value);
        Debug.Log("Env set to " + value);
    }

    public float GetEnvVolume()
    {
        mix.GetFloat("Environment Volume", out float currentVolume);

        return currentVolume;
    }

    public void SetMusicVolume(float value)
    {
        mix.SetFloat("Music Volume", value);
        mix.SetFloat("Level Audio Volume", value);
        Debug.Log("Music set to " + value);
    }

    public float GetMusicVolume()
    {
        mix.GetFloat("Music Volume", out float currentVolume);

        return currentVolume;
    }

    public void SetSFXVolume(float value)
    {
        mix.SetFloat("Friendly Bot Volume", value);
        mix.SetFloat("Player Movement", value);
        mix.SetFloat("Friendly Movement", value);
        mix.SetFloat("Enemy Movement", value);
        mix.SetFloat("Enemy Bot Volume", value);
        mix.SetFloat("Explosion Volume", value);
        mix.SetFloat("Physics Coll Volume", value);

        Debug.Log("SFX set to " + value);

        mix.GetFloat("Master Volume", out float master);
        mix.GetFloat("Environment Volume", out float env);
        mix.GetFloat("Music Volume", out float music);
        mix.GetFloat("Friendly Bot Volume", out float sfx);

        Debug.Log("Volumes: " + master + " " + env + " " + music + " " + sfx);
    }

    public float GetSFXVolume()
    {
        mix.GetFloat("Friendly Bot Volume", out float currentVolume);

        return currentVolume;
    }
}