Files
@ r5073:59dc96582bd4
Branch filter:
Location: cpp/openttd-patchpack/source/newgrf_sound.c - annotation
r5073:59dc96582bd4
1.5 KiB
text/x-c
(svn r7131) -Fix (r7126) which fixes (r2817) the activating of a function call that was
1. never executed before that and even if it would, it
2. could never be executed because if it did OpenTTD would crash
1. never executed before that and even if it would, it
2. could never be executed because if it did OpenTTD would crash
r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4975:8635c20f7325 r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4975:8635c20f7325 r4975:8635c20f7325 r4656:515f0929a2ed r4656:515f0929a2ed r4975:8635c20f7325 r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4975:8635c20f7325 r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4975:8635c20f7325 r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4656:515f0929a2ed r4701:1f61bf70d36f r4656:515f0929a2ed r4656:515f0929a2ed | /* $Id$ */
#include "stdafx.h"
#include "openttd.h"
#include "pool.h"
#include "sound.h"
#include "engine.h"
#include "vehicle.h"
#include "newgrf_callbacks.h"
#include "newgrf_engine.h"
#include "newgrf_sound.h"
static uint _sound_count = 0;
STATIC_POOL(SoundInternal, FileEntry, 3, 1000, NULL, NULL)
/* Allocate a new FileEntry */
FileEntry *AllocateFileEntry(void)
{
if (_sound_count == GetSoundInternalPoolSize()) {
if (!AddBlockToPool(&_SoundInternal_pool)) return NULL;
}
return GetSoundInternal(_sound_count++);
}
void InitializeSoundPool(void)
{
CleanPool(&_SoundInternal_pool);
_sound_count = 0;
/* Copy original sound data to the pool */
SndCopyToPool();
}
FileEntry *GetSound(uint index)
{
if (index >= _sound_count) return NULL;
return GetSoundInternal(index);
}
uint GetNumSounds(void)
{
return _sound_count;
}
bool PlayVehicleSound(const Vehicle *v, VehicleSoundEvent event)
{
const GRFFile *file = GetEngineGRF(v->engine_type);
uint16 callback;
/* If the engine has no GRF ID associated it can't ever play any new sounds */
if (file == NULL) return false;
/* Check that the vehicle type uses the sound effect callback */
if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_SOUND_EFFECT)) return false;
callback = GetVehicleCallback(CBID_VEHICLE_SOUND_EFFECT, event, 0, v->engine_type, v);
if (callback == CALLBACK_FAILED) return false;
if (callback >= GetNumOriginalSounds()) callback += file->sound_offset - GetNumOriginalSounds();
if (callback < GetNumSounds()) SndPlayVehicleFx(callback, v);
return true;
}
|