225 lines
6.5 KiB
C#
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)]);
|
|
}
|
|
}
|