123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 Jiang Yin. All rights reserved.
- // Homepage: https://gameframework.cn/
- // Feedback: mailto:ellan@gameframework.cn
- //------------------------------------------------------------
- using GameFramework;
- using GameFramework.DataTable;
- using GameFramework.Sound;
- using UnityGameFramework.Runtime;
- namespace MetaClient
- {
- public static class SoundExtension
- {
- private const float FadeVolumeDuration = 1f;
- private static int? s_MusicSerialId = null;
- public static int? PlayMusic(this SoundComponent soundComponent, int musicId, object userData = null)
- {
- soundComponent.StopMusic();
- IDataTable<DRMusic> dtMusic = GameEntry.DataTable.GetDataTable<DRMusic>();
- DRMusic drMusic = dtMusic.GetDataRow(musicId);
- if (drMusic == null)
- {
- Log.Warning("Can not load music '{0}' from data table.", musicId.ToString());
- return null;
- }
- PlaySoundParams playSoundParams = PlaySoundParams.Create();
- playSoundParams.Priority = 64;
- playSoundParams.Loop = true;
- playSoundParams.VolumeInSoundGroup = 1f;
- playSoundParams.FadeInSeconds = FadeVolumeDuration;
- playSoundParams.SpatialBlend = 0f;
- s_MusicSerialId = soundComponent.PlaySound(AssetUtility.GetMusicAsset(drMusic.AssetName), "Music", Constant.AssetPriority.MusicAsset, playSoundParams, null, userData);
- return s_MusicSerialId;
- }
- public static void StopMusic(this SoundComponent soundComponent)
- {
- if (!s_MusicSerialId.HasValue)
- {
- return;
- }
- soundComponent.StopSound(s_MusicSerialId.Value, FadeVolumeDuration);
- s_MusicSerialId = null;
- }
- public static int? PlaySound(this SoundComponent soundComponent, int soundId, Entity bindingEntity = null, object userData = null)
- {
- IDataTable<DRSound> dtSound = GameEntry.DataTable.GetDataTable<DRSound>();
- DRSound drSound = dtSound.GetDataRow(soundId);
- if (drSound == null)
- {
- Log.Warning("Can not load sound '{0}' from data table.", soundId.ToString());
- return null;
- }
- PlaySoundParams playSoundParams = PlaySoundParams.Create();
- playSoundParams.Priority = drSound.Priority;
- playSoundParams.Loop = drSound.Loop;
- playSoundParams.VolumeInSoundGroup = drSound.Volume;
- playSoundParams.SpatialBlend = drSound.SpatialBlend;
- return soundComponent.PlaySound(AssetUtility.GetSoundAsset(drSound.AssetName), "Sound", Constant.AssetPriority.SoundAsset, playSoundParams, bindingEntity != null ? bindingEntity.Entity : null, userData);
- }
- public static int? PlayUISound(this SoundComponent soundComponent, int uiSoundId, object userData = null)
- {
- IDataTable<DRUISound> dtUISound = GameEntry.DataTable.GetDataTable<DRUISound>();
- DRUISound drUISound = dtUISound.GetDataRow(uiSoundId);
- if (drUISound == null)
- {
- Log.Warning("Can not load UI sound '{0}' from data table.", uiSoundId.ToString());
- return null;
- }
- PlaySoundParams playSoundParams = PlaySoundParams.Create();
- playSoundParams.Priority = drUISound.Priority;
- playSoundParams.Loop = false;
- playSoundParams.VolumeInSoundGroup = drUISound.Volume;
- playSoundParams.SpatialBlend = 0f;
- return soundComponent.PlaySound(AssetUtility.GetUISoundAsset(drUISound.AssetName), "UISound", Constant.AssetPriority.UISoundAsset, playSoundParams, userData);
- }
- public static bool IsMuted(this SoundComponent soundComponent, string soundGroupName)
- {
- if (string.IsNullOrEmpty(soundGroupName))
- {
- Log.Warning("Sound group is invalid.");
- return true;
- }
- ISoundGroup soundGroup = soundComponent.GetSoundGroup(soundGroupName);
- if (soundGroup == null)
- {
- Log.Warning("Sound group '{0}' is invalid.", soundGroupName);
- return true;
- }
- return soundGroup.Mute;
- }
- public static void Mute(this SoundComponent soundComponent, string soundGroupName, bool mute)
- {
- if (string.IsNullOrEmpty(soundGroupName))
- {
- Log.Warning("Sound group is invalid.");
- return;
- }
- ISoundGroup soundGroup = soundComponent.GetSoundGroup(soundGroupName);
- if (soundGroup == null)
- {
- Log.Warning("Sound group '{0}' is invalid.", soundGroupName);
- return;
- }
- soundGroup.Mute = mute;
- GameEntry.Setting.SetBool(Utility.Text.Format(Constant.Setting.SoundGroupMuted, soundGroupName), mute);
- GameEntry.Setting.Save();
- }
- public static float GetVolume(this SoundComponent soundComponent, string soundGroupName)
- {
- if (string.IsNullOrEmpty(soundGroupName))
- {
- Log.Warning("Sound group is invalid.");
- return 0f;
- }
- ISoundGroup soundGroup = soundComponent.GetSoundGroup(soundGroupName);
- if (soundGroup == null)
- {
- Log.Warning("Sound group '{0}' is invalid.", soundGroupName);
- return 0f;
- }
- return soundGroup.Volume;
- }
- public static void SetVolume(this SoundComponent soundComponent, string soundGroupName, float volume)
- {
- if (string.IsNullOrEmpty(soundGroupName))
- {
- Log.Warning("Sound group is invalid.");
- return;
- }
- ISoundGroup soundGroup = soundComponent.GetSoundGroup(soundGroupName);
- if (soundGroup == null)
- {
- Log.Warning("Sound group '{0}' is invalid.", soundGroupName);
- return;
- }
- soundGroup.Volume = volume;
- GameEntry.Setting.SetFloat(Utility.Text.Format(Constant.Setting.SoundGroupVolume, soundGroupName), volume);
- GameEntry.Setting.Save();
- }
- }
- }
|