blankart/src/sounds.h
2025-12-08 10:06:14 -05:00

106 lines
2.2 KiB
C

// BLANKART
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2020 by Sonic Team Junior.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file sounds.h
/// \brief Sound and music info
#ifndef __SOUNDS__
#define __SOUNDS__
#include "doomdef.h"
#ifdef __cplusplus
extern "C" {
#endif
// keep this one around at least, for compatibility code
#define NUMSKINSOUNDS 11
// free sfx for S_AddSoundFx()
#define NUMSFXFREESLOTS 7000 // Matches SOC Editor.
#define NUMSKINSFXSLOTS (50000 - NUMSFXFREESLOTS)
//
// SoundFX struct.
//
struct sfxinfo_t
{
// up to 6-character name
const char *name;
// Sfx singularity (only one at a time)
boolean singularity;
// Sfx priority
INT32 priority;
// Sfx flags
INT32 flags;
// volume if a link
INT32 volume;
// sound data
void *data;
// length of sound data
size_t length;
// this is checked every second to see if sound
// can be thrown out (if 0, then decrement, if -1,
// then throw out, if > 0, then it is in use)
INT32 usefulness;
// lump number of sfx
lumpnum_t lumpnum;
// closed caption info/wiki table bait
char caption[32];
};
// the complete set of sound effects
extern sfxinfo_t S_sfx[];
//
// Identifiers for all sfx in game.
//
// List of sounds (don't modify this comment!)
typedef enum
{
#define _(name, ...) sfx_##name,
#include "info/sounds.h"
#undef _
// free slots for S_AddSoundFx() at run-time --------------------
sfx_freeslot0,
//
// ... 60 free sounds here ...
//
sfx_lastfreeslot = sfx_freeslot0 + NUMSFXFREESLOTS-1,
// end of freeslots ---------------------------------------------
sfx_skinsoundslot0,
sfx_lastskinsoundslot = sfx_skinsoundslot0 + NUMSKINSFXSLOTS-1,
NUMSFX
} sfxenum_t;
void S_InitRuntimeSounds(void);
sfxenum_t S_AddSoundFx(const char *name, boolean skinsound);
extern sfxenum_t sfxfree, skinsfxfree; // sound test and slotting
void S_RemoveSoundFx(sfxenum_t id);
#ifdef __cplusplus
} // extern "C"
#endif
#endif