diff --git a/quakespasm/Quake/bgmusic.c b/quakespasm/Quake/bgmusic.c index 8a466946..c7108631 100644 --- a/quakespasm/Quake/bgmusic.c +++ b/quakespasm/Quake/bgmusic.c @@ -37,7 +37,9 @@ #define MUSIC_DIRNAME "music" qboolean bgmloop; +cvar_t bgm_extmusic = {"bgm_extmusic", "1", true}; +static qboolean no_extmusic= false; static float old_volume = -1.0f; typedef enum _bgm_player @@ -127,12 +129,16 @@ qboolean BGM_Init (void) music_handler_t *handlers = NULL; int i; + Cvar_RegisterVariable(&bgm_extmusic, NULL); Cmd_AddCommand("music", BGM_Play_f); Cmd_AddCommand("music_pause", BGM_Pause_f); Cmd_AddCommand("music_resume", BGM_Resume_f); Cmd_AddCommand("music_loop", BGM_Loop_f); Cmd_AddCommand("music_stop", BGM_Stop_f); + if (COM_CheckParm("-nomusic") != 0) + no_extmusic = true; + bgmloop = true; for (i = 0; wanted_handlers[i].type != CODECTYPE_NONE; i++) @@ -304,6 +310,9 @@ void BGM_PlayCDtrack (byte track, qboolean looping) if (CDAudio_Play(track, looping) == 0) return; /* success */ + if (no_extmusic || !bgm_extmusic.value) + return; + prev_id = 0; type = 0; ext = NULL; diff --git a/quakespasm/Quake/bgmusic.h b/quakespasm/Quake/bgmusic.h index b139b09a..8d4472b7 100644 --- a/quakespasm/Quake/bgmusic.h +++ b/quakespasm/Quake/bgmusic.h @@ -28,6 +28,7 @@ #define _BGMUSIC_H_ extern qboolean bgmloop; +extern cvar_t bgm_extmusic; qboolean BGM_Init (void); void BGM_Shutdown (void); diff --git a/quakespasm/Quake/menu.c b/quakespasm/Quake/menu.c index c6d84e1b..e26508e2 100644 --- a/quakespasm/Quake/menu.c +++ b/quakespasm/Quake/menu.c @@ -24,6 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "net_sys.h" /* FIXME */ #include "quakedef.h" #include "net_defs.h" /* FIXME */ +#include "bgmusic.h" void (*vid_menucmdfn)(void); //johnfitz void (*vid_menudrawfn)(void); @@ -954,8 +955,9 @@ enum OPT_GAMMA, OPT_MOUSESPEED, OPT_SBALPHA, - OPT_MUSICVOL, OPT_SNDVOL, + OPT_MUSICVOL, + OPT_MUSICEXT, OPT_ALWAYRUN, OPT_INVMOUSE, OPT_ALWAYSMLOOK, @@ -1041,6 +1043,9 @@ void M_AdjustSliders (int dir) bgmvolume.value = 1; Cvar_SetValue ("bgmvolume", bgmvolume.value); break; + case OPT_MUSICEXT: // enable external music vs cdaudio + Cvar_SetValue ("bgm_extmusic", !bgm_extmusic.value); + break; case OPT_SNDVOL: // sfx volume sfxvolume.value += dir * 0.1; if (sfxvolume.value < 0) @@ -1156,15 +1161,19 @@ void M_Options_Draw (void) r = (1.0 - scr_sbaralpha.value) ; // scr_sbaralpha range is 1.0 to 0.0 M_DrawSlider (220, 32 + 8*OPT_SBALPHA, r); + // OPT_SNDVOL: + M_Print (16, 32 + 8*OPT_SNDVOL, " Sound Volume"); + r = sfxvolume.value; + M_DrawSlider (220, 32 + 8*OPT_SNDVOL, r); + // OPT_MUSICVOL: M_Print (16, 32 + 8*OPT_MUSICVOL, " Music Volume"); r = bgmvolume.value; M_DrawSlider (220, 32 + 8*OPT_MUSICVOL, r); - // OPT_SNDVOL: - M_Print (16, 32 + 8*OPT_SNDVOL, " Sound Volume"); - r = sfxvolume.value; - M_DrawSlider (220, 32 + 8*OPT_SNDVOL, r); + // OPT_MUSICEXT: + M_Print (16, 32 + 8*OPT_MUSICEXT, " External Music"); + M_DrawCheckbox (220, 32 + 8*OPT_MUSICEXT, bgm_extmusic.value); // OPT_ALWAYRUN: M_Print (16, 32 + 8*OPT_ALWAYRUN, " Always Run");