| | |
| | | |
| | | using System.Collections.Generic; |
| | | |
| | | namespace vnxbqy.UI |
| | | |
| | | public class SoundUtility |
| | | { |
| | | static DateTime lastHitAudioPlayTime = DateTime.Now; |
| | | static int hitAudioTimeInterval = 50;//毫秒 |
| | | |
| | | public class SoundUtility |
| | | 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) |
| | | { |
| | | static DateTime lastHitAudioPlayTime = DateTime.Now; |
| | | static int hitAudioTimeInterval = 50;//毫秒 |
| | | if (_audioSource == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | static int hitAudioPoolMax = 2; |
| | | static int hitAudioCountPool = 2; |
| | | if (hitAudioCountPool < hitAudioPoolMax) |
| | | { |
| | | hitAudioCountPool = Mathf.Clamp(hitAudioCountPool + (int)((DateTime.Now - lastHitAudioPlayTime).TotalMilliseconds / hitAudioTimeInterval), 0, hitAudioPoolMax); |
| | | } |
| | | |
| | | 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} }, |
| | | 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 PlayHitAudio(AudioSource _audioSource) |
| | | public static void PlayFightRoar(AudioSource _audioSource, int _job) |
| | | { |
| | | var ableIndex = UnityEngine.Random.Range(0, 3); |
| | | if (ableIndex != 1) |
| | | { |
| | | 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--; |
| | | } |
| | | } |
| | | return; |
| | | } |
| | | |
| | | 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) |
| | | int[] audioList = null; |
| | | if (fightRoars.ContainsKey(_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); |
| | | |
| | | audioList = fightRoars[_job]; |
| | | } |
| | | |
| | | static Dictionary<int, int> deadAudios = new Dictionary<int, int>() |
| | | if (audioList == null) |
| | | { |
| | | { 1,100}, |
| | | { 2,145}, |
| | | { 3,100}, |
| | | }; |
| | | |
| | | public static void PlayDeadAudio(AudioSource _audioSource, int _job) |
| | | { |
| | | SoundPlayer.Instance.PlayAudio(_audioSource, deadAudios[_job]); |
| | | return; |
| | | } |
| | | |
| | | 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 } }, |
| | | }; |
| | | var randomIndex = UnityEngine.Random.Range(0, audioList.Length); |
| | | var audio = audioList[randomIndex]; |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |