using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(AudioSource))] public class AudioManager : MonoBehaviour { public static AudioManager instnace; public AudioSource musicAudioSource; [SerializeField]private AudioClip[] musics; [SerializeField]private AudioClip UI_click; [SerializeField]private AudioClip UI_popup; [SerializeField]private AudioClip collectGold; [SerializeField]private AudioClip spend; [SerializeField]private AudioClip chestOpenRiser; [SerializeField]private AudioClip chestOpen; [SerializeField]private AudioClip upgrade; [SerializeField]private AudioClip reward; [Header("Minigame")] [SerializeField]private AudioClip pickupCollected; [SerializeField]private AudioClip minigameVictory; [SerializeField]private AudioClip minigameFailed; [SerializeField]private AudioClip[] typewriters; AudioSource audioSrc; public static bool SFX_enabled = false; public static bool Music_enabled= false; void Awake(){ if(FindObjectsOfType().Length > 1){ Debug.LogError("Audio manager already exists. Self destructing"); Destroy(gameObject); } } void Start() { audioSrc = GetComponent(); instnace=this; if(!PlayerPrefs.HasKey("sfx")){ ToggleSFX(true); }else{ ToggleSFX(PlayerPrefs.GetInt("sfx") == 1); } if(!PlayerPrefs.HasKey("music")){ ToggleMusic(true); }else{ ToggleMusic(PlayerPrefs.GetInt("music") == 1); } SetMusic(0); DontDestroyOnLoad(gameObject); } public void SetMusic(int level){ if(level < 0){musicAudioSource.Stop();return;} musicAudioSource.clip = musics[level]; musicAudioSource.Play(); } public void ToggleSFX() => ToggleSFX(!SFX_enabled); public void ToggleMusic()=>ToggleMusic(!Music_enabled); public void ToggleSFX(bool value){ PlayerPrefs.SetInt("sfx",value? 1:0); PlayerPrefs.Save(); SFX_enabled=value; audioSrc.volume = value ? 1: 0; Settings.Refresh(); } public void ToggleMusic(bool value){ PlayerPrefs.SetInt("music",value ? 1: 0); PlayerPrefs.Save(); Music_enabled=value; musicAudioSource.volume = value ? 0.25f: 0; Settings.Refresh(); } public void UIClick(){ audioSrc.PlayOneShot(UI_click); } public void UIPopup(){ audioSrc.PlayOneShot(UI_popup); } public void CollectGold(){ audioSrc.PlayOneShot(collectGold); } public void CollectPickup(){ audioSrc.PlayOneShot(pickupCollected, 0.3f); } public void Spend(){ audioSrc.PlayOneShot(spend); } public void ChestOpenRiser(){ audioSrc.PlayOneShot(chestOpenRiser); } public void ChestOpen(){ audioSrc.PlayOneShot(chestOpen); } public void UpgradeBuilding(){ audioSrc.PlayOneShot(upgrade); } public void Reward(){ audioSrc.PlayOneShot(reward); } public void MinigameWon(){ audioSrc.PlayOneShot(minigameVictory); } public void MinigameLost(){ audioSrc.PlayOneShot(minigameFailed); } public void TypeWriter(){ audioSrc.PlayOneShot(typewriters[Random.Range(0, typewriters.Length)],0.1f); } }