Add tmvolume from Spearhead and Breakthrough

This commit is contained in:
smallmodel 2024-11-11 14:21:21 +01:00
parent 51c7e27bc1
commit 5edee7d12e
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512
2 changed files with 34 additions and 3 deletions

View file

@ -646,6 +646,8 @@ qboolean S_OPENAL_Init()
Cmd_AddCommand("tmstart", S_TriggeredMusic_Start); Cmd_AddCommand("tmstart", S_TriggeredMusic_Start);
Cmd_AddCommand("tmstartloop", S_TriggeredMusic_StartLoop); Cmd_AddCommand("tmstartloop", S_TriggeredMusic_StartLoop);
Cmd_AddCommand("tmstop", S_TriggeredMusic_Stop); Cmd_AddCommand("tmstop", S_TriggeredMusic_Stop);
// Added in 2.0
Cmd_AddCommand("tmvolume", S_TriggeredMusic_Volume);
S_OPENAL_ClearLoopingSounds(); S_OPENAL_ClearLoopingSounds();
load_sfx_info(); load_sfx_info();
@ -3049,7 +3051,13 @@ bool openal_channel::set_sfx(sfx_t *pSfx)
qalGenBuffers(1, &pSfx->buffer); qalGenBuffers(1, &pSfx->buffer);
alDieIfError(); alDieIfError();
qalBufferData(pSfx->buffer, fmt, &pSfx->data[pSfx->info.dataofs], pSfx->info.datasize - pSfx->info.dataofs, pSfx->info.rate); qalBufferData(
pSfx->buffer,
fmt,
&pSfx->data[pSfx->info.dataofs],
pSfx->info.datasize - pSfx->info.dataofs,
pSfx->info.rate
);
alDieIfError(); alDieIfError();
} }
} }
@ -4139,6 +4147,28 @@ void S_TriggeredMusic_Stop()
openal.tm_loopcount = 0; openal.tm_loopcount = 0;
} }
/*
==============
S_TriggeredMusic_Volume
Added in 2.0
==============
*/
void S_TriggeredMusic_Volume()
{
if (!s_bSoundStarted) {
return;
}
if (Cmd_Argc() != 2) {
Com_Printf("tmvolume <0-1>\n\n");
return;
}
openal.chan_trig_music.fVolume = atof(Cmd_Argv(1));
music_volume_changed = true;
}
/* /*
============== ==============
S_TriggeredMusic_Pause S_TriggeredMusic_Pause
@ -4565,7 +4595,7 @@ U32 openal_channel_two_d_stream::sample_offset()
alDieIfError(); alDieIfError();
totalQueueLength = getQueueLength(); totalQueueLength = getQueueLength();
bytesPerSample = getBytesPerSample(); bytesPerSample = getBytesPerSample();
assert(playerByteOffset < totalQueueLength); assert(playerByteOffset < totalQueueLength);
assert(streamNextOffset >= totalQueueLength || stream); assert(streamNextOffset >= totalQueueLength || stream);
@ -4878,7 +4908,7 @@ unsigned int openal_channel_two_d_stream::getCurrentStreamPosition() const
if (streamNextOffset >= queueLength) { if (streamNextOffset >= queueLength) {
return streamNextOffset - queueLength; return streamNextOffset - queueLength;
} else if (streamHandle) { } else if (streamHandle) {
snd_stream_t* stream = (snd_stream_t*)streamHandle; snd_stream_t *stream = (snd_stream_t *)streamHandle;
return (stream->info.size + streamNextOffset - queueLength) % stream->info.size; return (stream->info.size + streamNextOffset - queueLength) % stream->info.size;
} else { } else {
return queueLength - streamNextOffset; return queueLength - streamNextOffset;

View file

@ -150,6 +150,7 @@ void S_TriggeredMusic_SetupHandle(const char* pszName, int iLoopCount, int iOffs
void S_TriggeredMusic_Start(); void S_TriggeredMusic_Start();
void S_TriggeredMusic_StartLoop(); void S_TriggeredMusic_StartLoop();
void S_TriggeredMusic_Stop(); void S_TriggeredMusic_Stop();
void S_TriggeredMusic_Volume();
void S_TriggeredMusic_Pause(); void S_TriggeredMusic_Pause();
void S_TriggeredMusic_Unpause(); void S_TriggeredMusic_Unpause();
void S_TriggeredMusic_PlayIntroMusic(); void S_TriggeredMusic_PlayIntroMusic();