4bb5208421fe95494498a046ecaf5206f2bf2afe
[rocksndiamonds.git] / src / game_sp / Sound.c
1 // ----------------------------------------------------------------------------
2 // Sound.c
3 // ----------------------------------------------------------------------------
4
5 #include "Sound.h"
6
7 // static char *VB_Name = "modSound";
8
9 // --- Option Explicit
10
11 int MusicOnFlag;
12 int FXOnFlag;
13
14 DirectSoundBuffer ZonkFX[1 + 1];
15 DirectSoundBuffer InfotronFX[1 + 1];
16 DirectSoundBuffer BugFX[1 + 1];
17 DirectSoundBuffer ExplosionFX[1 + 1];
18 DirectSoundBuffer PushFX;
19 DirectSoundBuffer ExitFX;
20 DirectSoundBuffer BaseFX;
21
22 void LoadSoundFX()
23 {
24
25 #if 0
26
27   DSBUFFERDESC bufferDesc;
28   WAVEFORMATEX waveFormat;
29   char *FName;
30   int i;
31
32   bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_STATIC;
33   waveFormat.nFormatTag = WAVE_FORMAT_PCM;
34   waveFormat.nChannels = 1;
35   waveFormat.lSamplesPerSec = 8000;
36   waveFormat.nBitsPerSample = 8;
37   waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels;
38   waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign;
39   FName = CAT(App.Path, "/Sound/");
40   for (i = 0; i <= 1; i++)
41   {
42     ZonkFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Zonk.wav"), bufferDesc, waveFormat);
43     InfotronFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Infotron.wav"), bufferDesc, waveFormat);
44     BugFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Bug.wav"), bufferDesc, waveFormat);
45     ExplosionFX[i] = DSound.CreateSoundBufferFromFile(CAT(FName, "Explosion.wav"), bufferDesc, waveFormat);
46   }
47
48   BaseFX = DSound.CreateSoundBufferFromFile(CAT(FName, "Base.wav"), bufferDesc, waveFormat);
49   ExitFX = DSound.CreateSoundBufferFromFile(CAT(FName, "Exit.wav"), bufferDesc, waveFormat);
50   PushFX = DSound.CreateSoundBufferFromFile(CAT(FName, "Push.wav"), bufferDesc, waveFormat);
51   //  FXOnFlag = 0
52
53 #endif
54
55 }
56
57 void subSoundFXZonk()
58 {
59   int i;
60
61   if (FXOnFlag == 0)
62     return;
63
64   for (i = 0; i <= 1; i++)
65   {
66     if (! IS_NOTHING(&ZonkFX[i], sizeof(ZonkFX[i])))
67     {
68       if (ZonkFX[i].GetStatus() != DSBSTATUS_PLAYING)
69       {
70         ZonkFX[i].Play DSBPLAY_DEFAULT;
71         break;
72       }
73     }
74   }
75 }
76
77 void subSoundFXBug()
78 {
79   int i;
80
81   if (FXOnFlag == 0)
82     return;
83
84   for (i = 0; i <= 1; i++)
85   {
86     if (! IS_NOTHING(&BugFX[i], sizeof(BugFX[i])))
87     {
88       if (BugFX[i].GetStatus() != DSBSTATUS_PLAYING)
89       {
90         BugFX[i].Play DSBPLAY_DEFAULT;
91         break;
92       }
93     }
94   }
95 }
96
97 void subSoundFXInfotron()
98 {
99   int i;
100
101   if (FXOnFlag == 0)
102     return;
103
104   for (i = 0; i <= 1; i++)
105   {
106     if (! IS_NOTHING(&InfotronFX[i], sizeof(InfotronFX[i])))
107     {
108       if (InfotronFX[i].GetStatus() != DSBSTATUS_PLAYING)
109       {
110         InfotronFX[i].Play DSBPLAY_DEFAULT;
111         break;
112       }
113     }
114   }
115 }
116
117 void subSoundFXExplosion()
118 {
119   int i;
120
121   if (FXOnFlag == 0)
122     return;
123
124   for (i = 0; i <= 1; i++)
125   {
126     if (! IS_NOTHING(&ExplosionFX[i], sizeof(ExplosionFX[i])))
127     {
128       if (ExplosionFX[i].GetStatus() != DSBSTATUS_PLAYING)
129       {
130         ExplosionFX[i].Play DSBPLAY_DEFAULT;
131         break;
132       }
133     }
134   }
135 }
136
137 void subSoundFXBase()
138 {
139   if (FXOnFlag == 0)
140     return;
141
142   if (IS_NOTHING(&BaseFX, sizeof(BaseFX)))
143     return;
144
145   if (BaseFX.GetStatus() != DSBSTATUS_PLAYING)
146   {
147     BaseFX.Play DSBPLAY_DEFAULT;
148   }
149 }
150
151 void subSoundFXPush()
152 {
153   if (FXOnFlag == 0)
154     return;
155
156   if (IS_NOTHING(&PushFX, sizeof(PushFX)))
157     return;
158
159   if (PushFX.GetStatus() != DSBSTATUS_PLAYING)
160   {
161     PushFX.Play DSBPLAY_DEFAULT;
162   }
163 }
164
165 void subSoundFXExit()
166 {
167   if (FXOnFlag == 0)
168     return;
169
170   if (IS_NOTHING(&ExitFX, sizeof(ExitFX)))
171     return;
172
173   if (ExitFX.GetStatus() != DSBSTATUS_PLAYING)
174   {
175     ExitFX.Play DSBPLAY_DEFAULT;
176   }
177 }
178
179 void subMusicInit()
180 {
181 }