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