| author | egladil | 
| Sat, 29 Dec 2007 05:15:13 +0000 | |
| changeset 8652 | e06732646b8a | 
| parent 8640 | 1e93b81e96d2 | 
| child 8653 | a83f7a536919 | 
| permissions | -rw-r--r-- | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
1  | 
/* $Id$ */  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
2  | 
|
| 
6674
 
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
 
belugas 
parents: 
6658 
diff
changeset
 | 
3  | 
/** @file newgrf_sound.cpp */  | 
| 
 
64f4781b4653
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
 
belugas 
parents: 
6658 
diff
changeset
 | 
4  | 
|
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
5  | 
#include "stdafx.h"  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
6  | 
#include "openttd.h"  | 
| 
5216
 
d581e4db95b6
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
 
matthijs 
parents: 
4975 
diff
changeset
 | 
7  | 
#include "oldpool.h"  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
8  | 
#include "sound.h"  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
9  | 
#include "engine.h"  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
10  | 
#include "newgrf_callbacks.h"  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
11  | 
#include "newgrf_engine.h"  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
12  | 
#include "newgrf_sound.h"  | 
| 
8640
 
1e93b81e96d2
(svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
13  | 
#include "vehicle_base.h"  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
14  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
15  | 
static uint _sound_count = 0;  | 
| 
5216
 
d581e4db95b6
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
 
matthijs 
parents: 
4975 
diff
changeset
 | 
16  | 
STATIC_OLD_POOL(SoundInternal, FileEntry, 3, 1000, NULL, NULL)  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
17  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
18  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
19  | 
/* Allocate a new FileEntry */  | 
| 6573 | 20  | 
FileEntry *AllocateFileEntry()  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
21  | 
{
 | 
| 
4975
 
3a19f44fb5d4
(svn r6978) Use the pool macros for the SoundInternal pool
 
tron 
parents: 
4701 
diff
changeset
 | 
22  | 
	if (_sound_count == GetSoundInternalPoolSize()) {
 | 
| 
7897
 
222641b84fc4
(svn r10773) -Codechange: use pool.CleanPool instead of CleanPool(&pool) and similarly for AddBlock*.
 
rubidium 
parents: 
6674 
diff
changeset
 | 
23  | 
if (!_SoundInternal_pool.AddBlockToPool()) return NULL;  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
24  | 
}  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
25  | 
|
| 
4975
 
3a19f44fb5d4
(svn r6978) Use the pool macros for the SoundInternal pool
 
tron 
parents: 
4701 
diff
changeset
 | 
26  | 
return GetSoundInternal(_sound_count++);  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
27  | 
}  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
28  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
29  | 
|
| 6573 | 30  | 
void InitializeSoundPool()  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
31  | 
{
 | 
| 
7897
 
222641b84fc4
(svn r10773) -Codechange: use pool.CleanPool instead of CleanPool(&pool) and similarly for AddBlock*.
 
rubidium 
parents: 
6674 
diff
changeset
 | 
32  | 
_SoundInternal_pool.CleanPool();  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
33  | 
_sound_count = 0;  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
34  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
35  | 
/* Copy original sound data to the pool */  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
36  | 
SndCopyToPool();  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
37  | 
}  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
38  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
39  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
40  | 
FileEntry *GetSound(uint index)  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
41  | 
{
 | 
| 
6450
 
1c2016673250
(svn r8860) -Cleanup: some style changes, proper #endif comments, variable initialisation, WINCE ifdef and a vsprintf to vsnprintf change.
 
Darkvater 
parents: 
5838 
diff
changeset
 | 
42  | 
if (index >= GetNumSounds()) return NULL;  | 
| 
4975
 
3a19f44fb5d4
(svn r6978) Use the pool macros for the SoundInternal pool
 
tron 
parents: 
4701 
diff
changeset
 | 
43  | 
return GetSoundInternal(index);  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
44  | 
}  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
45  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
46  | 
|
| 6573 | 47  | 
uint GetNumSounds()  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
48  | 
{
 | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
49  | 
return _sound_count;  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
50  | 
}  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
51  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
52  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
53  | 
bool PlayVehicleSound(const Vehicle *v, VehicleSoundEvent event)  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
54  | 
{
 | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
55  | 
const GRFFile *file = GetEngineGRF(v->engine_type);  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
56  | 
uint16 callback;  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
57  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
58  | 
/* If the engine has no GRF ID associated it can't ever play any new sounds */  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
59  | 
if (file == NULL) return false;  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
60  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
61  | 
/* Check that the vehicle type uses the sound effect callback */  | 
| 
8424
 
4a488a90ccab
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
 
skidd13 
parents: 
8138 
diff
changeset
 | 
62  | 
if (!HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_SOUND_EFFECT)) return false;  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
63  | 
|
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
64  | 
callback = GetVehicleCallback(CBID_VEHICLE_SOUND_EFFECT, event, 0, v->engine_type, v);  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
65  | 
if (callback == CALLBACK_FAILED) return false;  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
66  | 
if (callback >= GetNumOriginalSounds()) callback += file->sound_offset - GetNumOriginalSounds();  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
67  | 
|
| 
5838
 
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
 
rubidium 
parents: 
5835 
diff
changeset
 | 
68  | 
if (callback < GetNumSounds()) SndPlayVehicleFx((SoundFx)callback, v);  | 
| 
4656
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
69  | 
return true;  | 
| 
 
acffecd6f484
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
 
peter1138 
parents:  
diff
changeset
 | 
70  | 
}  | 
| 
6658
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
71  | 
|
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
72  | 
bool PlayHouseSound(uint16 sound_id, TileIndex tile)  | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
73  | 
{
 | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
74  | 
	if (sound_id < GetNumOriginalSounds()) {
 | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
75  | 
SndPlayTileFx((SoundFx)sound_id, tile);  | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
76  | 
return true;  | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
77  | 
}  | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
78  | 
return false;  | 
| 
 
59048224be55
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
 
maedhros 
parents: 
6573 
diff
changeset
 | 
79  | 
}  |