public void PlayAudioSource(ClipIdentifier identifier) { if (audioSourcesDictionary.ContainsKey(identifier)) { audioSourcesDictionary[identifier].Play(); } }
private SfxClip GetRandomClip(List <SfxClip> clipsOfDesiredType, ClipIdentifier clipIdentifier) { if (clipsOfDesiredType.Count == 1) { return(clipsOfDesiredType[0]); } var indexOfLastOne = _indexOfLastPlayedClip[clipIdentifier]; if (indexOfLastOne == -1) { var randomClipIndex = Random.Range(0, clipsOfDesiredType.Count); _indexOfLastPlayedClip[clipIdentifier] = randomClipIndex; return(clipsOfDesiredType[randomClipIndex]); } else { var lastPlayedClip = clipsOfDesiredType[indexOfLastOne]; var otherClips = clipsOfDesiredType.Where(clip => clip != lastPlayedClip).ToArray(); var randomClipIndex = Random.Range(0, otherClips.Length); var randomClip = otherClips[randomClipIndex]; _indexOfLastPlayedClip[clipIdentifier] = clipsOfDesiredType.IndexOf(randomClip); return(randomClip); } }
// Passed functions public void PlayAudioSource(ClipIdentifier identifier) { if (IsNull()) { return; } manager.PlayAudioSource(identifier); }
public void PlayClip(ClipIdentifier clipIdentifier) { var clipsOfDesiredType = _clips.Clips.Where(clip => clip.Clip == clipIdentifier).ToList(); var sfxClip = GetRandomClip(clipsOfDesiredType, clipIdentifier); Play(sfxClip.AudioClip); }