﻿using UnityEngine;
using System.Collections;

namespace NDRLiteFPS
{
    public class AudioManager : MonoBehaviour
    {
        private static AudioManager _instance;

        public static AudioManager instance
        {
            get
            {
                if (_instance == null)
                {
                    _instance = GameObject.FindObjectOfType<AudioManager>();
                }

                return _instance;
            }
        }

        [SerializeField] AudioSource playerSource;
        [SerializeField] AudioSource interactSource;
        [SerializeField] AudioSource genericSource;
        [SerializeField] AudioSource weaponSource;
        [SerializeField] AudioSource impactSource;
        [SerializeField] AudioSource phoneSource;

        [SerializeField] AudioClip healthPickupClip;
        [SerializeField] AudioClip armorPickupClip;
        [SerializeField] AudioClip ammoPickupClip;
        [SerializeField] AudioClip genericPickupClip;
        [SerializeField] AudioClip drinkingClip;

        [SerializeField] AudioClip weaponPickup;

        [SerializeField]
        AudioClip phoneRingTone;
        [SerializeField]
        AudioClip phoneDialTone;

        public void PlayHealthPickup() => interactSource.PlayOneShot(healthPickupClip);
        public void PlayArmorPickup() => interactSource.PlayOneShot(armorPickupClip);


        public void PlayWeaponEquip() => interactSource.PlayOneShot(weaponPickup);
        public void PlayGunShot(AudioClip fireShot) => weaponSource.PlayOneShot(fireShot);
        public void PlayGenericSound(AudioClip clip) => genericSource.PlayOneShot(clip);

        public void PlayPhoneRing() => phoneSource.PlayOneShot(phoneRingTone);
        public void PlayPhoneDialTone() => phoneSource.PlayOneShot(phoneDialTone);

        public void PlayDrinkingSound() => genericSource.PlayOneShot(drinkingClip);
        public void PlayInteractSound(AudioClip clip) => interactSource.PlayOneShot(clip);

        public void StopPhoneSound()
        {
            if (phoneSource.isPlaying)
                phoneSource.Stop();
        }
    }
}