Files
@ r17167:68f47a8db1b5
Branch filter:
Location: cpp/openttd-patchpack/source/src/newgrf_sound.cpp - annotation
r17167:68f47a8db1b5
2.4 KiB
text/x-c
(svn r21916) -Fix [FS#4442]: the minimum speed needed for (realistic) acceleration to work properly can sometimes be more than the (temporary) maximum speed causing Clamp to "fail". Make sure that the minimum speed always overrules the maximum speed
r5584:545d748cc681 r5584:545d748cc681 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r6348:a905c3e6d8fa r5584:545d748cc681 r9070:e059c65164f3 r12222:eb1f720072c3 r5584:545d748cc681 r5584:545d748cc681 r8144:1432edd15267 r8157:cf41aa22cd09 r5584:545d748cc681 r14426:0aaa0726efa5 r5584:545d748cc681 r5584:545d748cc681 r11936:9ec1ad99161c r11936:9ec1ad99161c r5584:545d748cc681 r12043:09b52ef58850 r12043:09b52ef58850 r12043:09b52ef58850 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r6247:96e840dbefcc r5584:545d748cc681 r11937:a20ea20743ca r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r11936:9ec1ad99161c r5584:545d748cc681 r11937:a20ea20743ca r11937:a20ea20743ca r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r6247:96e840dbefcc r5584:545d748cc681 r11937:a20ea20743ca r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r13026:0c3f00ec0a74 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r5584:545d748cc681 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r5584:545d748cc681 r5584:545d748cc681 r6332:7393965b5322 r11936:9ec1ad99161c r6332:7393965b5322 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r9018:0a11b607e602 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r15047:549cfe65e8b5 r6332:7393965b5322 | /* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file newgrf_sound.cpp Handling NewGRF provided sounds. */
#include "stdafx.h"
#include "engine_base.h"
#include "newgrf.h"
#include "newgrf_engine.h"
#include "newgrf_sound.h"
#include "vehicle_base.h"
#include "sound_func.h"
static SmallVector<SoundEntry, 8> _sounds;
/* Allocate a new Sound */
SoundEntry *AllocateSound()
{
SoundEntry *sound = _sounds.Append();
MemSetT(sound, 0);
return sound;
}
void InitializeSoundPool()
{
_sounds.Clear();
/* Copy original sound data to the pool */
SndCopyToPool();
}
SoundEntry *GetSound(SoundID index)
{
if (index >= _sounds.Length()) return NULL;
return &_sounds[index];
}
uint GetNumSounds()
{
return _sounds.Length();
}
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)->callback_mask, CBM_VEHICLE_SOUND_EFFECT)) return false;
callback = GetVehicleCallback(CBID_VEHICLE_SOUND_EFFECT, event, 0, v->engine_type, v);
if (callback == CALLBACK_FAILED) return false;
if (callback >= ORIGINAL_SAMPLE_COUNT) {
callback -= ORIGINAL_SAMPLE_COUNT;
if (callback > file->num_sounds) return false;
callback += file->sound_offset;
}
assert(callback < GetNumSounds());
SndPlayVehicleFx(callback, v);
return true;
}
bool PlayTileSound(const GRFFile *file, SoundID sound_id, TileIndex tile)
{
if (sound_id >= ORIGINAL_SAMPLE_COUNT) {
sound_id -= ORIGINAL_SAMPLE_COUNT;
if (sound_id > file->num_sounds) return false;
sound_id += file->sound_offset;
}
assert(sound_id < GetNumSounds());
SndPlayTileFx(sound_id, tile);
return true;
}
|