125 lines
3.4 KiB
C#
125 lines
3.4 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 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<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 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);
|
|
}
|
|
}
|