//--------------------------------------------------------
|
// [Author]: 玩个游戏
|
// [ Date ]: Tuesday, January 30, 2018
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System;
|
|
using System.Collections.Generic;
|
|
|
public class SoundUtility
|
{
|
static DateTime lastHitAudioPlayTime = DateTime.Now;
|
static int hitAudioTimeInterval = 50;//毫秒
|
|
static int hitAudioPoolMax = 2;
|
static int hitAudioCountPool = 2;
|
|
static Dictionary<int, List<int>> jobHitAudio = new Dictionary<int, List<int>>() {
|
{ 1,new List<int>(){101,102,103,104} },
|
{ 2,new List<int>(){146,147,148,149} },
|
{ 3,new List<int>(){101,102,103,104} },
|
};
|
|
public static void PlayHitAudio(AudioSource _audioSource)
|
{
|
if (_audioSource == null)
|
{
|
return;
|
}
|
|
if (hitAudioCountPool < hitAudioPoolMax)
|
{
|
hitAudioCountPool = Mathf.Clamp(hitAudioCountPool + (int)((DateTime.Now - lastHitAudioPlayTime).TotalMilliseconds / hitAudioTimeInterval), 0, hitAudioPoolMax);
|
}
|
|
if (hitAudioCountPool > 0)
|
{
|
var job = PlayerDatas.Instance.baseData.Job;
|
if (jobHitAudio.ContainsKey(job))
|
{
|
var audios = jobHitAudio[job];
|
var index = UnityEngine.Random.Range(0, audios.Count);
|
SoundPlayer.Instance.PlayAudio(_audioSource, audios[index]);
|
lastHitAudioPlayTime = DateTime.Now;
|
hitAudioCountPool--;
|
}
|
}
|
}
|
|
static Dictionary<int, int[]> fightRoars = new Dictionary<int, int[]>() {
|
{ 1,new int[]{ 97,98,99 } },
|
{ 2,new int[]{ 142,143,144 } },
|
};
|
|
public static void PlayFightRoar(AudioSource _audioSource, int _job)
|
{
|
var ableIndex = UnityEngine.Random.Range(0, 3);
|
if (ableIndex != 1)
|
{
|
return;
|
}
|
|
int[] audioList = null;
|
if (fightRoars.ContainsKey(_job))
|
{
|
audioList = fightRoars[_job];
|
}
|
|
if (audioList == null)
|
{
|
return;
|
}
|
|
var randomIndex = UnityEngine.Random.Range(0, audioList.Length);
|
var audio = audioList[randomIndex];
|
|
SoundPlayer.Instance.PlayAudio(_audioSource, audio);
|
|
}
|
|
static Dictionary<int, int> deadAudios = new Dictionary<int, int>()
|
{
|
{ 1,100},
|
{ 2,145},
|
{ 3,100},
|
};
|
|
public static void PlayDeadAudio(AudioSource _audioSource, int _job)
|
{
|
SoundPlayer.Instance.PlayAudio(_audioSource, deadAudios[_job]);
|
}
|
|
static Dictionary<int, int[]> stateFootAudios = new Dictionary<int, int[]>()
|
{
|
{ 1,new int[]{ 130, 131, 132,133} },
|
{ 2,new int[]{ 134, 135, 136, 137 } },
|
{ 3,new int[]{ 138, 139, 140, 141 } },
|
};
|
|
static Dictionary<int, int[]> rideAudios = new Dictionary<int, int[]>();
|
|
static FootAudioType currentState = FootAudioType.Walk;
|
static int audioIndex = 0;
|
static Dictionary<int, DateTime> stateFootAudioLastPlayTimes = new Dictionary<int, DateTime>();
|
|
const float overTime = 2f;
|
|
public static void PlayFootAudio(AudioSource _audioSource, FootAudioType _state, int _horseId = 0)
|
{
|
var stateInt = (int)_state;
|
if (!stateFootAudios.ContainsKey(stateInt))
|
{
|
return;
|
}
|
|
if (currentState != _state)
|
{
|
audioIndex = 0;
|
currentState = _state;
|
}
|
|
if (stateFootAudioLastPlayTimes.ContainsKey(stateInt))
|
{
|
var lastPlayTime = stateFootAudioLastPlayTimes[stateInt];
|
if ((DateTime.Now - lastPlayTime).TotalSeconds > 2f)
|
{
|
audioIndex = 0;
|
}
|
}
|
else
|
{
|
audioIndex = 0;
|
}
|
|
int[] audios = null;
|
switch (stateInt)
|
{
|
case 1:
|
case 3:
|
audios = stateFootAudios[(int)_state];
|
break;
|
// case 2:
|
// if (rideAudios.ContainsKey(_horseId))
|
// {
|
// audios = rideAudios[_horseId];
|
// }
|
// else
|
// {
|
// var config = HorseConfig.Get(_horseId);
|
// audios = new int[config.RideAudios.Length];
|
// Array.Copy(config.RideAudios, audios, config.RideAudios.Length);
|
// rideAudios[_horseId] = audios;
|
// }
|
// break;
|
default:
|
break;
|
}
|
|
|
if (audioIndex < audios.Length)
|
{
|
var audio = audios[audioIndex];
|
SoundPlayer.Instance.PlayAudio(_audioSource, audio);
|
stateFootAudioLastPlayTimes[stateInt] = DateTime.Now;
|
audioIndex++;
|
}
|
|
if (audioIndex >= audios.Length)
|
{
|
audioIndex = 0;
|
}
|
}
|
|
}
|