ISoundManager.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. //------------------------------------------------------------
  2. // Game Framework
  3. // Copyright © 2013-2021 loyalsoft. All rights reserved.
  4. // Homepage: http://www.game7000.com/
  5. // Feedback: http://www.game7000.com/
  6. //------------------------------------------------------------
  7. using GameFramework.Resource;
  8. using System;
  9. using System.Collections.Generic;
  10. namespace GameFramework.Sound
  11. {
  12. /// <summary>
  13. /// 声音管理器接口。
  14. /// </summary>
  15. public interface ISoundManager
  16. {
  17. /// <summary>
  18. /// 获取声音组数量。
  19. /// </summary>
  20. int SoundGroupCount
  21. {
  22. get;
  23. }
  24. /// <summary>
  25. /// 播放声音成功事件。
  26. /// </summary>
  27. event EventHandler<PlaySoundSuccessEventArgs> PlaySoundSuccess;
  28. /// <summary>
  29. /// 播放声音失败事件。
  30. /// </summary>
  31. event EventHandler<PlaySoundFailureEventArgs> PlaySoundFailure;
  32. /// <summary>
  33. /// 播放声音更新事件。
  34. /// </summary>
  35. event EventHandler<PlaySoundUpdateEventArgs> PlaySoundUpdate;
  36. /// <summary>
  37. /// 播放声音时加载依赖资源事件。
  38. /// </summary>
  39. event EventHandler<PlaySoundDependencyAssetEventArgs> PlaySoundDependencyAsset;
  40. /// <summary>
  41. /// 设置资源管理器。
  42. /// </summary>
  43. /// <param name="resourceManager">资源管理器。</param>
  44. void SetResourceManager(IResourceManager resourceManager);
  45. /// <summary>
  46. /// 设置声音辅助器。
  47. /// </summary>
  48. /// <param name="soundHelper">声音辅助器。</param>
  49. void SetSoundHelper(ISoundHelper soundHelper);
  50. /// <summary>
  51. /// 是否存在指定声音组。
  52. /// </summary>
  53. /// <param name="soundGroupName">声音组名称。</param>
  54. /// <returns>指定声音组是否存在。</returns>
  55. bool HasSoundGroup(string soundGroupName);
  56. /// <summary>
  57. /// 获取指定声音组。
  58. /// </summary>
  59. /// <param name="soundGroupName">声音组名称。</param>
  60. /// <returns>要获取的声音组。</returns>
  61. ISoundGroup GetSoundGroup(string soundGroupName);
  62. /// <summary>
  63. /// 获取所有声音组。
  64. /// </summary>
  65. /// <returns>所有声音组。</returns>
  66. ISoundGroup[] GetAllSoundGroups();
  67. /// <summary>
  68. /// 获取所有声音组。
  69. /// </summary>
  70. /// <param name="results">所有声音组。</param>
  71. void GetAllSoundGroups(List<ISoundGroup> results);
  72. /// <summary>
  73. /// 增加声音组。
  74. /// </summary>
  75. /// <param name="soundGroupName">声音组名称。</param>
  76. /// <param name="soundGroupHelper">声音组辅助器。</param>
  77. /// <returns>是否增加声音组成功。</returns>
  78. bool AddSoundGroup(string soundGroupName, ISoundGroupHelper soundGroupHelper);
  79. /// <summary>
  80. /// 增加声音组。
  81. /// </summary>
  82. /// <param name="soundGroupName">声音组名称。</param>
  83. /// <param name="soundGroupAvoidBeingReplacedBySamePriority">声音组中的声音是否避免被同优先级声音替换。</param>
  84. /// <param name="soundGroupMute">声音组是否静音。</param>
  85. /// <param name="soundGroupVolume">声音组音量。</param>
  86. /// <param name="soundGroupHelper">声音组辅助器。</param>
  87. /// <returns>是否增加声音组成功。</returns>
  88. bool AddSoundGroup(string soundGroupName, bool soundGroupAvoidBeingReplacedBySamePriority, bool soundGroupMute, float soundGroupVolume, ISoundGroupHelper soundGroupHelper);
  89. /// <summary>
  90. /// 增加声音代理辅助器。
  91. /// </summary>
  92. /// <param name="soundGroupName">声音组名称。</param>
  93. /// <param name="soundAgentHelper">要增加的声音代理辅助器。</param>
  94. void AddSoundAgentHelper(string soundGroupName, ISoundAgentHelper soundAgentHelper);
  95. /// <summary>
  96. /// 获取所有正在加载声音的序列编号。
  97. /// </summary>
  98. /// <returns>所有正在加载声音的序列编号。</returns>
  99. int[] GetAllLoadingSoundSerialIds();
  100. /// <summary>
  101. /// 获取所有正在加载声音的序列编号。
  102. /// </summary>
  103. /// <param name="results">所有正在加载声音的序列编号。</param>
  104. void GetAllLoadingSoundSerialIds(List<int> results);
  105. /// <summary>
  106. /// 是否正在加载声音。
  107. /// </summary>
  108. /// <param name="serialId">声音序列编号。</param>
  109. /// <returns>是否正在加载声音。</returns>
  110. bool IsLoadingSound(int serialId);
  111. /// <summary>
  112. /// 播放声音。
  113. /// </summary>
  114. /// <param name="soundAssetName">声音资源名称。</param>
  115. /// <param name="soundGroupName">声音组名称。</param>
  116. /// <returns>声音的序列编号。</returns>
  117. int PlaySound(string soundAssetName, string soundGroupName);
  118. /// <summary>
  119. /// 播放声音。
  120. /// </summary>
  121. /// <param name="soundAssetName">声音资源名称。</param>
  122. /// <param name="soundGroupName">声音组名称。</param>
  123. /// <param name="priority">加载声音资源的优先级。</param>
  124. /// <returns>声音的序列编号。</returns>
  125. int PlaySound(string soundAssetName, string soundGroupName, int priority);
  126. /// <summary>
  127. /// 播放声音。
  128. /// </summary>
  129. /// <param name="soundAssetName">声音资源名称。</param>
  130. /// <param name="soundGroupName">声音组名称。</param>
  131. /// <param name="playSoundParams">播放声音参数。</param>
  132. /// <returns>声音的序列编号。</returns>
  133. int PlaySound(string soundAssetName, string soundGroupName, PlaySoundParams playSoundParams);
  134. /// <summary>
  135. /// 播放声音。
  136. /// </summary>
  137. /// <param name="soundAssetName">声音资源名称。</param>
  138. /// <param name="soundGroupName">声音组名称。</param>
  139. /// <param name="userData">用户自定义数据。</param>
  140. /// <returns>声音的序列编号。</returns>
  141. int PlaySound(string soundAssetName, string soundGroupName, object userData);
  142. /// <summary>
  143. /// 播放声音。
  144. /// </summary>
  145. /// <param name="soundAssetName">声音资源名称。</param>
  146. /// <param name="soundGroupName">声音组名称。</param>
  147. /// <param name="priority">加载声音资源的优先级。</param>
  148. /// <param name="playSoundParams">播放声音参数。</param>
  149. /// <returns>声音的序列编号。</returns>
  150. int PlaySound(string soundAssetName, string soundGroupName, int priority, PlaySoundParams playSoundParams);
  151. /// <summary>
  152. /// 播放声音。
  153. /// </summary>
  154. /// <param name="soundAssetName">声音资源名称。</param>
  155. /// <param name="soundGroupName">声音组名称。</param>
  156. /// <param name="priority">加载声音资源的优先级。</param>
  157. /// <param name="userData">用户自定义数据。</param>
  158. /// <returns>声音的序列编号。</returns>
  159. int PlaySound(string soundAssetName, string soundGroupName, int priority, object userData);
  160. /// <summary>
  161. /// 播放声音。
  162. /// </summary>
  163. /// <param name="soundAssetName">声音资源名称。</param>
  164. /// <param name="soundGroupName">声音组名称。</param>
  165. /// <param name="playSoundParams">播放声音参数。</param>
  166. /// <param name="userData">用户自定义数据。</param>
  167. /// <returns>声音的序列编号。</returns>
  168. int PlaySound(string soundAssetName, string soundGroupName, PlaySoundParams playSoundParams, object userData);
  169. /// <summary>
  170. /// 播放声音。
  171. /// </summary>
  172. /// <param name="soundAssetName">声音资源名称。</param>
  173. /// <param name="soundGroupName">声音组名称。</param>
  174. /// <param name="priority">加载声音资源的优先级。</param>
  175. /// <param name="playSoundParams">播放声音参数。</param>
  176. /// <param name="userData">用户自定义数据。</param>
  177. /// <returns>声音的序列编号。</returns>
  178. int PlaySound(string soundAssetName, string soundGroupName, int priority, PlaySoundParams playSoundParams, object userData);
  179. /// <summary>
  180. /// 停止播放声音。
  181. /// </summary>
  182. /// <param name="serialId">要停止播放声音的序列编号。</param>
  183. /// <returns>是否停止播放声音成功。</returns>
  184. bool StopSound(int serialId);
  185. /// <summary>
  186. /// 停止播放声音。
  187. /// </summary>
  188. /// <param name="serialId">要停止播放声音的序列编号。</param>
  189. /// <param name="fadeOutSeconds">声音淡出时间,以秒为单位。</param>
  190. /// <returns>是否停止播放声音成功。</returns>
  191. bool StopSound(int serialId, float fadeOutSeconds);
  192. /// <summary>
  193. /// 停止所有已加载的声音。
  194. /// </summary>
  195. void StopAllLoadedSounds();
  196. /// <summary>
  197. /// 停止所有已加载的声音。
  198. /// </summary>
  199. /// <param name="fadeOutSeconds">声音淡出时间,以秒为单位。</param>
  200. void StopAllLoadedSounds(float fadeOutSeconds);
  201. /// <summary>
  202. /// 停止所有正在加载的声音。
  203. /// </summary>
  204. void StopAllLoadingSounds();
  205. /// <summary>
  206. /// 暂停播放声音。
  207. /// </summary>
  208. /// <param name="serialId">要暂停播放声音的序列编号。</param>
  209. void PauseSound(int serialId);
  210. /// <summary>
  211. /// 暂停播放声音。
  212. /// </summary>
  213. /// <param name="serialId">要暂停播放声音的序列编号。</param>
  214. /// <param name="fadeOutSeconds">声音淡出时间,以秒为单位。</param>
  215. void PauseSound(int serialId, float fadeOutSeconds);
  216. /// <summary>
  217. /// 恢复播放声音。
  218. /// </summary>
  219. /// <param name="serialId">要恢复播放声音的序列编号。</param>
  220. void ResumeSound(int serialId);
  221. /// <summary>
  222. /// 恢复播放声音。
  223. /// </summary>
  224. /// <param name="serialId">要恢复播放声音的序列编号。</param>
  225. /// <param name="fadeInSeconds">声音淡入时间,以秒为单位。</param>
  226. void ResumeSound(int serialId, float fadeInSeconds);
  227. }
  228. }