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 UI_ShopButton; [SerializeField]private AudioClip battleButton; [SerializeField]private AudioClip battleCasual,battleRanked; [SerializeField]private AudioClip spend; [SerializeField]private AudioClip chestOpenRiser; [SerializeField]private AudioClip chestOpen; [SerializeField]private AudioClip epicChestOpen; [SerializeField]private AudioClip buildingUpgrade; [SerializeField]private AudioClip buildingUpgradeWhoosh; [SerializeField]private AudioClip[] rocketUpgrade; [SerializeField]private AudioClip rocketBuild; [SerializeField]private AudioClip[] bpOpen; [SerializeField]private AudioClip bpFound; [SerializeField]private AudioClip reward; [SerializeField]private AudioClip gemsCollect; [Header("Gold")] public AudioClip collectGoldBegin; public AudioClip[] collectGoldArray; // public float [Header("Minigame")] [SerializeField]private AudioSource EngineSource; [SerializeField]private AudioSource PickupSource; [SerializeField]private AudioClip moonCollected; [SerializeField]private AudioClip starCollected; [SerializeField]private AudioClip minigameVictory; [SerializeField]private AudioClip minigameFailed; [SerializeField]private AudioClip minigameDied; [SerializeField]private AudioClip[] typewriters; [SerializeField]private AudioClip[] boostStart; 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 SetCustomMusic(AudioClip musicClip){ musicAudioSource.clip = musicClip; 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 ShopButton(){ audioSrc.PlayOneShot(UI_ShopButton); } public void BattleButton(){ audioSrc.PlayOneShot(battleButton); } public void BattleCasual(){ audioSrc.PlayOneShot(battleCasual); } public void BattleRanked(){ audioSrc.PlayOneShot(battleRanked); } public void CollectMoon(float trailTime, float maxTrailTime){ // audioSrc.PlayOneShot(moonCollected, 0.3f); float mult = Mathf.Clamp(trailTime / maxTrailTime, 0f,1f); PickupSource.pitch = 0.5f + (mult/2f); Debug.Log(PickupSource.pitch); PickupSource.Play(); } public void Spend(){ audioSrc.PlayOneShot(spend); } public void ChestOpenRiser(){ audioSrc.PlayOneShot(chestOpenRiser); } public void ChestOpen(){ audioSrc.PlayOneShot(chestOpen); } public void EpicChestOpen(){ audioSrc.PlayOneShot(epicChestOpen); } public void UpgradeBuilding(){ audioSrc.PlayOneShot(buildingUpgrade); audioSrc.PlayOneShot(buildingUpgradeWhoosh); // PlayWithDelay(buildingUpgrade.length, buildingUpgradeWhoosh); } public void UpgradeRocket(){ audioSrc.PlayOneShot(rocketUpgrade[Random.Range(0, rocketUpgrade.Length)]); } public void BuildRocket(){ audioSrc.PlayOneShot(rocketBuild); } public void OpenBP(){ audioSrc.PlayOneShot(bpOpen[Random.Range(0, bpOpen.Length)]); } public void FindBP(){ audioSrc.PlayOneShot(bpFound); } void PlayWithDelay(float time, AudioClip clip){ StartCoroutine(playWithDelay(time, clip)); } IEnumerator playWithDelay(float time,AudioClip clip){ yield return new WaitForSeconds(time); audioSrc.PlayOneShot(clip); } public void Reward(){ audioSrc.PlayOneShot(reward); } public void MinigameWon(){ audioSrc.PlayOneShot(minigameVictory); } public void MinigameLost(){ audioSrc.PlayOneShot(minigameFailed); } public void MinigameDied(){ audioSrc.PlayOneShot(minigameDied); } public void TypeWriter(){ audioSrc.PlayOneShot(typewriters[Random.Range(0, typewriters.Length)],0.1f); } public void CollectGold(int amount){ audioSrc.PlayOneShot(collectGoldBegin); // int index = Mathf.Clamp((Mathf.Clamp(amount,0,100) / 100) * collectGoldArray.Length,0,collectGoldArray.Length-1); int index =0; if(amount < 10){ index=0; }else if(amount < 100){ index=1; }else if(amount < 1000){ index = 2; }else if(amount < 10000){ index = 3; }else{ index = 4; } audioSrc.PlayOneShot(collectGoldArray[index]); } public void CollectGems(){ audioSrc.PlayOneShot(gemsCollect); } public void Boost(){ audioSrc.PlayOneShot(boostStart[Random.Range(0,boostStart.Length)]); } }