sound2dhandle.cpp 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. /*
  2. ** Command & Conquer Generals(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /***********************************************************************************************
  19. *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
  20. ***********************************************************************************************
  21. * *
  22. * Project Name : wwaudio *
  23. * *
  24. * $Archive:: /Commando/Code/WWAudio/sound2dhandle.cpp $*
  25. * *
  26. * Author:: Patrick Smith *
  27. * *
  28. * $Modtime:: 8/23/01 5:07p $*
  29. * *
  30. * $Revision:: 2 $*
  31. * *
  32. *---------------------------------------------------------------------------------------------*
  33. * Functions: *
  34. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
  35. #include "sound2dhandle.h"
  36. #include "audiblesound.h"
  37. //////////////////////////////////////////////////////////////////////
  38. //
  39. // Sound2DHandleClass
  40. //
  41. //////////////////////////////////////////////////////////////////////
  42. Sound2DHandleClass::Sound2DHandleClass (void) :
  43. SampleHandle ((HSAMPLE)INVALID_MILES_HANDLE)
  44. {
  45. return ;
  46. }
  47. //////////////////////////////////////////////////////////////////////
  48. //
  49. // ~Sound2DHandleClass
  50. //
  51. //////////////////////////////////////////////////////////////////////
  52. Sound2DHandleClass::~Sound2DHandleClass (void)
  53. {
  54. return ;
  55. }
  56. //////////////////////////////////////////////////////////////////////
  57. //
  58. // Initialize
  59. //
  60. //////////////////////////////////////////////////////////////////////
  61. void
  62. Sound2DHandleClass::Initialize (SoundBufferClass *buffer)
  63. {
  64. SoundHandleClass::Initialize (buffer);
  65. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  66. //
  67. // Make sure this handle is fresh
  68. //
  69. ::AIL_init_sample (SampleHandle);
  70. //
  71. // Pass the actual sound data onto the sample
  72. //
  73. if (Buffer != NULL) {
  74. ::AIL_set_named_sample_file (SampleHandle, (char *)Buffer->Get_Filename (),
  75. Buffer->Get_Raw_Buffer (), Buffer->Get_Raw_Length (), 0);
  76. }
  77. }
  78. return ;
  79. }
  80. //////////////////////////////////////////////////////////////////////
  81. //
  82. // Start_Sample
  83. //
  84. //////////////////////////////////////////////////////////////////////
  85. void
  86. Sound2DHandleClass::Start_Sample (void)
  87. {
  88. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  89. ::AIL_start_sample (SampleHandle);
  90. }
  91. return ;
  92. }
  93. //////////////////////////////////////////////////////////////////////
  94. //
  95. // Stop_Sample
  96. //
  97. //////////////////////////////////////////////////////////////////////
  98. void
  99. Sound2DHandleClass::Stop_Sample (void)
  100. {
  101. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  102. ::AIL_stop_sample (SampleHandle);
  103. }
  104. return ;
  105. }
  106. //////////////////////////////////////////////////////////////////////
  107. //
  108. // Resume_Sample
  109. //
  110. //////////////////////////////////////////////////////////////////////
  111. void
  112. Sound2DHandleClass::Resume_Sample (void)
  113. {
  114. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  115. ::AIL_resume_sample (SampleHandle);
  116. }
  117. return ;
  118. }
  119. //////////////////////////////////////////////////////////////////////
  120. //
  121. // End_Sample
  122. //
  123. //////////////////////////////////////////////////////////////////////
  124. void
  125. Sound2DHandleClass::End_Sample (void)
  126. {
  127. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  128. ::AIL_end_sample (SampleHandle);
  129. }
  130. return ;
  131. }
  132. //////////////////////////////////////////////////////////////////////
  133. //
  134. // Set_Sample_Pan
  135. //
  136. //////////////////////////////////////////////////////////////////////
  137. void
  138. Sound2DHandleClass::Set_Sample_Pan (S32 pan)
  139. {
  140. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  141. ::AIL_set_sample_pan (SampleHandle, pan);
  142. }
  143. return ;
  144. }
  145. //////////////////////////////////////////////////////////////////////
  146. //
  147. // Get_Sample_Pan
  148. //
  149. //////////////////////////////////////////////////////////////////////
  150. S32
  151. Sound2DHandleClass::Get_Sample_Pan (void)
  152. {
  153. S32 retval = 0;
  154. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  155. retval = ::AIL_sample_pan (SampleHandle);
  156. }
  157. return retval;
  158. }
  159. //////////////////////////////////////////////////////////////////////
  160. //
  161. // Set_Sample_Volume
  162. //
  163. //////////////////////////////////////////////////////////////////////
  164. void
  165. Sound2DHandleClass::Set_Sample_Volume (S32 volume)
  166. {
  167. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  168. ::AIL_set_sample_volume (SampleHandle, volume);
  169. }
  170. return ;
  171. }
  172. //////////////////////////////////////////////////////////////////////
  173. //
  174. // Get_Sample_Volume
  175. //
  176. //////////////////////////////////////////////////////////////////////
  177. S32
  178. Sound2DHandleClass::Get_Sample_Volume (void)
  179. {
  180. S32 retval = 0;
  181. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  182. retval = ::AIL_sample_volume (SampleHandle);
  183. }
  184. return retval;
  185. }
  186. //////////////////////////////////////////////////////////////////////
  187. //
  188. // Set_Sample_Loop_Count
  189. //
  190. //////////////////////////////////////////////////////////////////////
  191. void
  192. Sound2DHandleClass::Set_Sample_Loop_Count (U32 count)
  193. {
  194. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  195. ::AIL_set_sample_loop_count (SampleHandle, count);
  196. }
  197. return ;
  198. }
  199. //////////////////////////////////////////////////////////////////////
  200. //
  201. // Get_Sample_Loop_Count
  202. //
  203. //////////////////////////////////////////////////////////////////////
  204. U32
  205. Sound2DHandleClass::Get_Sample_Loop_Count (void)
  206. {
  207. U32 retval = 0;
  208. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  209. retval = ::AIL_sample_loop_count (SampleHandle);
  210. }
  211. return retval;
  212. }
  213. //////////////////////////////////////////////////////////////////////
  214. //
  215. // Set_Sample_MS_Position
  216. //
  217. //////////////////////////////////////////////////////////////////////
  218. void
  219. Sound2DHandleClass::Set_Sample_MS_Position (U32 ms)
  220. {
  221. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  222. ::AIL_set_sample_ms_position (SampleHandle, ms);
  223. }
  224. return ;
  225. }
  226. //////////////////////////////////////////////////////////////////////
  227. //
  228. // Get_Sample_MS_Position
  229. //
  230. //////////////////////////////////////////////////////////////////////
  231. void
  232. Sound2DHandleClass::Get_Sample_MS_Position (S32 *len, S32 *pos)
  233. {
  234. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  235. ::AIL_sample_ms_position (SampleHandle, len, pos);
  236. }
  237. return ;
  238. }
  239. //////////////////////////////////////////////////////////////////////
  240. //
  241. // Set_Sample_User_Data
  242. //
  243. //////////////////////////////////////////////////////////////////////
  244. void
  245. Sound2DHandleClass::Set_Sample_User_Data (S32 i, U32 val)
  246. {
  247. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  248. ::AIL_set_sample_user_data (SampleHandle, i, val);
  249. }
  250. return ;
  251. }
  252. //////////////////////////////////////////////////////////////////////
  253. //
  254. // Get_Sample_User_Data
  255. //
  256. //////////////////////////////////////////////////////////////////////
  257. U32
  258. Sound2DHandleClass::Get_Sample_User_Data (S32 i)
  259. {
  260. U32 retval = 0;
  261. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  262. retval = ::AIL_sample_user_data (SampleHandle, i);
  263. }
  264. return retval;
  265. }
  266. //////////////////////////////////////////////////////////////////////
  267. //
  268. // Get_Sample_Playback_Rate
  269. //
  270. //////////////////////////////////////////////////////////////////////
  271. S32
  272. Sound2DHandleClass::Get_Sample_Playback_Rate (void)
  273. {
  274. S32 retval = 0;
  275. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  276. retval = ::AIL_sample_playback_rate (SampleHandle);
  277. }
  278. return retval;
  279. }
  280. //////////////////////////////////////////////////////////////////////
  281. //
  282. // Set_Sample_Playback_Rate
  283. //
  284. //////////////////////////////////////////////////////////////////////
  285. void
  286. Sound2DHandleClass::Set_Sample_Playback_Rate (S32 rate)
  287. {
  288. if (SampleHandle != (HSAMPLE)INVALID_MILES_HANDLE) {
  289. ::AIL_set_sample_playback_rate (SampleHandle, rate);
  290. }
  291. return ;
  292. }
  293. //////////////////////////////////////////////////////////////////////
  294. //
  295. // Set_Miles_Handle
  296. //
  297. //////////////////////////////////////////////////////////////////////
  298. void
  299. Sound2DHandleClass::Set_Miles_Handle (uint32 handle)
  300. {
  301. SampleHandle = (HSAMPLE)handle;
  302. return ;
  303. }