OpenTTD Source 20241224-master-gf74b0cf984
newgrf_sound.h File Reference

Functions related to NewGRF provided sounds. More...

#include "sound_type.h"
#include "tile_type.h"
#include "vehicle_type.h"

Go to the source code of this file.

Enumerations

enum  VehicleSoundEvent {
  VSE_START = 1 , VSE_TUNNEL = 2 , VSE_BREAKDOWN = 3 , VSE_RUNNING = 4 ,
  VSE_TOUCHDOWN = 5 , VSE_VISUAL_EFFECT = 6 , VSE_RUNNING_16 = 7 , VSE_STOPPED_16 = 8 ,
  VSE_LOAD_UNLOAD = 9
}
 Events at which a sound might be played. More...
 

Functions

SoundEntryAllocateSound (uint num)
 Allocate sound slots.
 
void InitializeSoundPool ()
 
bool LoadNewGRFSound (SoundEntry &sound, SoundID sound_id)
 Extract meta data from a NewGRF sound.
 
SoundID GetNewGRFSoundID (const struct GRFFile *file, SoundID sound_id)
 
SoundEntryGetSound (SoundID sound_id)
 
uint GetNumSounds ()
 
size_t GetSoundPoolAllocatedMemory ()
 Get size of memory allocated to sound effects.
 
bool PlayVehicleSound (const Vehicle *v, VehicleSoundEvent event, bool force=false)
 Checks whether a NewGRF wants to play a different vehicle sound effect.
 
void PlayTileSound (const struct GRFFile *file, SoundID sound_id, TileIndex tile)
 

Detailed Description

Functions related to NewGRF provided sounds.

Definition in file newgrf_sound.h.

Enumeration Type Documentation

◆ VehicleSoundEvent

Events at which a sound might be played.

Enumerator
VSE_START 

Vehicle starting, i.e. leaving, the station.

VSE_TUNNEL 

Train entering a tunnel.

VSE_BREAKDOWN 

Vehicle breaking down.

VSE_RUNNING 

Vehicle running normally.

VSE_TOUCHDOWN 

Whenever a plane touches down.

VSE_VISUAL_EFFECT 

Vehicle visual effect (steam, diesel smoke or electric spark) is shown.

VSE_RUNNING_16 

Every 16 ticks while the vehicle is running (speed > 0).

VSE_STOPPED_16 

Every 16 ticks while the vehicle is stopped (speed == 0).

VSE_LOAD_UNLOAD 

Whenever cargo payment is made for a vehicle.

Definition at line 18 of file newgrf_sound.h.

Function Documentation

◆ AllocateSound()

SoundEntry * AllocateSound ( uint  num)

Allocate sound slots.

Parameters
numNumber of slots to allocate.
Returns
First allocated slot.

Definition at line 33 of file newgrf_sound.cpp.

◆ GetNumSounds()

uint GetNumSounds ( )

Definition at line 57 of file newgrf_sound.cpp.

◆ GetSound()

SoundEntry * GetSound ( SoundID  sound_id)

Definition at line 50 of file newgrf_sound.cpp.

◆ GetSoundPoolAllocatedMemory()

size_t GetSoundPoolAllocatedMemory ( )

Get size of memory allocated to sound effects.

Returns
Approximate memory allocated by loaded sound effects.

Definition at line 66 of file newgrf_sound.cpp.

◆ InitializeSoundPool()

void InitializeSoundPool ( )

Definition at line 41 of file newgrf_sound.cpp.

◆ LoadNewGRFSound()

bool LoadNewGRFSound ( SoundEntry sound,
SoundID  sound_id 
)

Extract meta data from a NewGRF sound.

Parameters
soundSound to load.
Returns
True if a valid sound was loaded.

Definition at line 83 of file newgrf_sound.cpp.

References Debug, RandomAccessFile::GetSimplifiedFilename(), SoundEntry::grf_container_ver, RandomAccessFile::ReadBlock(), RandomAccessFile::ReadByte(), RandomAccessFile::ReadDword(), RandomAccessFile::ReadWord(), RandomAccessFile::SeekTo(), and StrMakeValid().

◆ PlayVehicleSound()

bool PlayVehicleSound ( const Vehicle v,
VehicleSoundEvent  event,
bool  force 
)

Checks whether a NewGRF wants to play a different vehicle sound effect.

Parameters
vVehicle to play sound effect for.
eventTrigger for the sound effect.
forceShould we play the sound effect even if vehicle sound effects are muted?
Returns
false if the default sound effect shall be played instead.

Definition at line 143 of file newgrf_sound.cpp.

References _settings_client, CALLBACK_FAILED, EngineInfo::callback_mask, CBID_VEHICLE_SOUND_EFFECT, CBM_VEHICLE_SOUND_EFFECT, Vehicle::engine_type, Vehicle::GetGRF(), GetNewGRFSoundID(), GetVehicleCallback(), HasBit(), ClientSettings::sound, and SoundSettings::vehicle.

Referenced by AircraftController(), AircraftLandAirplane(), Vehicle::HandleBreakdown(), Ship::PlayLeaveStationSound(), Train::PlayLeaveStationSound(), and Vehicle::ShowVisualEffect().