/// <summary> private method for start play sound. </summary> private void PlaySound(AudioClip clip, float volume, ClipPriority priority = ClipPriority.Low) { if (MuteSound) { return; } AudioSourcePreset sourcePreset = SoundsSource.Find(s => !s.Source.isPlaying); if (sourcePreset == null) { sourcePreset = SoundsSource.Find(s => s.Priority < priority); } if (sourcePreset == null) { sourcePreset = SoundsSource.FindLast(s => s.Priority == priority); } if (sourcePreset == null) { return; } sourcePreset.Source.Stop(); sourcePreset.Source.clip = clip; sourcePreset.Source.volume = volume * SoundVolume; sourcePreset.Source.Play(); sourcePreset.Priority = priority; }
private ClipComparer GetComparer(ClipPriority priority) { switch (priority) { case ClipPriority.MOST_DAMAGED: return(new MostDamagedComparer()); case ClipPriority.LEAST_DAMAGED: return(new LeastDamagedComparer()); case ClipPriority.MOST_RARE: return(new HighestRarityComparer()); case ClipPriority.LEAST_RARE: return(new LowestRarityComparer()); case ClipPriority.WEAPON: return(new WeaponComparer()); case ClipPriority.SHIELD: return(new ShieldComparer()); case ClipPriority.BODY: return(new BodyComparer()); case ClipPriority.AMULET: return(new AmuletComparer()); case ClipPriority.RING: return(new RingComparer()); case ClipPriority.JEWELRY: return(new JewelryComparer()); default: throw new ArgumentOutOfRangeException(nameof(priority), priority, null); } }