Files
nethack/sound/fmod/fmod.c
nhmall dbb41f4a2d const warning in sound/fmod/fmod.c
Parameter did not match those in include/sndprocs.h
2023-12-08 12:31:49 -05:00

105 lines
2.7 KiB
C

/* fmod.c */
/* Copyright (c) Taylor Daley, 2023. */
/* NetHack may be freely redistributed. See license for details. */
#ifdef SND_LIB_FMOD
#include "hack.h"
#include "fmod.h"
static FMOD_SYSTEM *systemvar;
static FMOD_SOUND *soundvar;
static FMOD_CHANNEL *channel1;
static FMOD_CHANNEL *channelMus;
static void fmod_init_nhsound(void);
static void fmod_exit_nhsound(const char *);
static void fmod_achievement(schar, schar, int32_t);
static void fmod_soundeffect(char *, int32_t, int32_t);
static void fmod_hero_playnotes(int32_t instrument, const char *str, int32_t volume);
static void fmod_play_usersound(char *, int32_t, int32_t);
static void fmod_ambience(int32_t, int32_t, int32_t);
static void fmod_verbal(char *, int32_t, int32_t, int32_t, int32_t);
struct sound_procs fmod_procs = {
SOUNDID(fmod),
SOUND_TRIGGER_USERSOUNDS | 0,
fmod_init_nhsound,
fmod_exit_nhsound,
fmod_achievement,
fmod_soundeffect,
fmod_hero_playnotes,
fmod_play_usersound,
fmod_ambience,
fmod_verbal
};
static void
fmod_init_nhsound(void)
{
/* Initialize external sound library */
FMOD_System_Create(&systemvar, FMOD_VERSION);
FMOD_System_Init(systemvar, 32, FMOD_INIT_NORMAL, 0);
}
static void
fmod_exit_nhsound(const char *reason)
{
/* Close / Terminate external sound library */
FMOD_System_Close(systemvar);
FMOD_System_Release(systemvar);
}
/* fulfill SNDCAP_ACHIEVEMENTS */
static void
fmod_achievement(schar ach1, schar ach2, int32_t repeat)
{
// to be added in future
}
/* fulfill SNDCAP_SOUNDEFFECTS */
static void
fmod_soundeffect(char *desc, int32_t seid, int32_t volume)
{
// to be added in future
}
/* fulfill SNDCAP_HEROMUSIC */
static void fmod_hero_playnotes(int32_t instrument, const char *str, int32_t volume)
{
// to be added in future
}
/* fulfill SOUND_TRIGGER_USERSOUNDS */
static void
fmod_play_usersound(char *filename, int32_t volume UNUSED, int32_t idx UNUSED)
{
FMOD_System_CreateSound(systemvar, filename, FMOD_CREATESAMPLE, 0,
&soundvar);
if (strstr(filename, "music_") != NULL) {
FMOD_Channel_Stop(channelMus);
FMOD_System_PlaySound(systemvar, soundvar, 0, 0, &channelMus);
FMOD_Channel_SetMode(channelMus, FMOD_LOOP_NORMAL);
} else {
FMOD_Channel_Stop(channel1);
FMOD_System_PlaySound(systemvar, soundvar, 0, 0, &channel1);
}
}
static void
fmod_ambience(int32_t ambienceid, int32_t ambience_action,
int32_t hero_proximity)
{
// to be added in future
}
static void
fmod_verbal(char *text, int32_t gender, int32_t tone,
int32_t vol, int32_t moreinfo)
{
// to be added in future
}
#endif /* SND_LIB_FMOD */
/* end of fmod.c */