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