UPF/Assets/Game/Scripts/AudioManager.cs
2022-12-14 01:49:10 +05:30

225 lines
6.5 KiB
C#

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<AudioManager>().Length > 1){
Debug.LogError("Audio manager already exists. Self destructing");
Destroy(gameObject);
}
}
void Start()
{
audioSrc = GetComponent<AudioSource>();
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)]);
}
}