#include "sound.h"
// used by menu to ghost CD audio slider
-cvar_t cdaudioinitialized = {CVAR_READONLY,"cdaudioinitialized","0","indicates if CD Audio system is active"};
+cvar_t cdaudioinitialized = {CVAR_CLIENT | CVAR_READONLY,"cdaudioinitialized","0","indicates if CD Audio system is active"};
#define MAX_PLAYLISTS 10
int music_playlist_active = -1;
int music_playlist_playing = 0; // 0 = not playing, 1 = playing, -1 = tried and failed
-cvar_t music_playlist_index = {0, "music_playlist_index", "-1", "selects which of the music_playlist_ variables is the active one, -1 disables playlists"};
+cvar_t music_playlist_index = {CVAR_CLIENT, "music_playlist_index", "-1", "selects which of the music_playlist_ variables is the active one, -1 disables playlists"};
cvar_t music_playlist_list[MAX_PLAYLISTS] =
{
- {0, "music_playlist_list0", "", "list of tracks to play"},
- {0, "music_playlist_list1", "", "list of tracks to play"},
- {0, "music_playlist_list2", "", "list of tracks to play"},
- {0, "music_playlist_list3", "", "list of tracks to play"},
- {0, "music_playlist_list4", "", "list of tracks to play"},
- {0, "music_playlist_list5", "", "list of tracks to play"},
- {0, "music_playlist_list6", "", "list of tracks to play"},
- {0, "music_playlist_list7", "", "list of tracks to play"},
- {0, "music_playlist_list8", "", "list of tracks to play"},
- {0, "music_playlist_list9", "", "list of tracks to play"}
+ {CVAR_CLIENT, "music_playlist_list0", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list1", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list2", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list3", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list4", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list5", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list6", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list7", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list8", "", "list of tracks to play"},
+ {CVAR_CLIENT, "music_playlist_list9", "", "list of tracks to play"}
};
cvar_t music_playlist_current[MAX_PLAYLISTS] =
{
- {0, "music_playlist_current0", "0", "current track index to play in list"},
- {0, "music_playlist_current1", "0", "current track index to play in list"},
- {0, "music_playlist_current2", "0", "current track index to play in list"},
- {0, "music_playlist_current3", "0", "current track index to play in list"},
- {0, "music_playlist_current4", "0", "current track index to play in list"},
- {0, "music_playlist_current5", "0", "current track index to play in list"},
- {0, "music_playlist_current6", "0", "current track index to play in list"},
- {0, "music_playlist_current7", "0", "current track index to play in list"},
- {0, "music_playlist_current8", "0", "current track index to play in list"},
- {0, "music_playlist_current9", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current0", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current1", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current2", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current3", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current4", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current5", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current6", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current7", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current8", "0", "current track index to play in list"},
+ {CVAR_CLIENT, "music_playlist_current9", "0", "current track index to play in list"},
};
cvar_t music_playlist_random[MAX_PLAYLISTS] =
{
- {0, "music_playlist_random0", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random1", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random2", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random3", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random4", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random5", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random6", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random7", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random8", "0", "enables random play order if 1, 0 is sequential play"},
- {0, "music_playlist_random9", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random0", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random1", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random2", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random3", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random4", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random5", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random6", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random7", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random8", "0", "enables random play order if 1, 0 is sequential play"},
+ {CVAR_CLIENT, "music_playlist_random9", "0", "enables random play order if 1, 0 is sequential play"},
};
cvar_t music_playlist_sampleposition[MAX_PLAYLISTS] =
{
- {0, "music_playlist_sampleposition0", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition1", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition2", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition3", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition4", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition5", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition6", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition7", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition8", "-1", "resume position for track, -1 restarts every time"},
- {0, "music_playlist_sampleposition9", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition0", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition1", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition2", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition3", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition4", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition5", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition6", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition7", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition8", "-1", "resume position for track, -1 restarts every time"},
+ {CVAR_CLIENT, "music_playlist_sampleposition9", "-1", "resume position for track, -1 restarts every time"},
};
static qboolean wasPlaying = false;
#endif
static int faketrack = -1;
-// exported variables
-qboolean cdPlaying = false;
-qboolean cdPlayLooping = false;
-unsigned char cdPlayTrack;
-
-cl_cdstate_t cd;
+static qboolean cdPlaying = false;
+static qboolean cdPlayLooping = false;
+static unsigned char cdPlayTrack;
static void CDAudio_Eject (void)
{
return -1;
}
-void CDAudio_Play_byName (const char *trackname, qboolean looping, qboolean tryreal, float startposition)
+// Helper for CDAudio_Play, the "cd" command, and the music_playlist system.
+// Does _not_ act as NOP when a playlist is active, simply because this is used
+// _by_ playlist code. So beware when calling this.
+static void CDAudio_Play_byName (const char *trackname, qboolean looping, qboolean tryreal, float startposition)
{
unsigned int track;
sfx_t* sfx;
cdPlaying = true;
}
-static void CD_f (void)
+static void CD_f(cmd_state_t *cmd)
{
const char *command;
#ifdef MAXTRACKS
int n;
#endif
- command = Cmd_Argv (1);
+ command = Cmd_Argv(cmd, 1);
if (strcasecmp(command, "remap") != 0)
Host_StartVideo();
if (strcasecmp(command, "remap") == 0)
{
#ifdef MAXTRACKS
- ret = Cmd_Argc() - 2;
+ ret = Cmd_Argc(cmd) - 2;
if (ret <= 0)
{
for (n = 1; n < MAXTRACKS; n++)
return;
}
for (n = 1; n <= ret; n++)
- strlcpy(remap[n], Cmd_Argv (n+1), sizeof(*remap));
+ strlcpy(remap[n], Cmd_Argv(cmd, n+1), sizeof(*remap));
#endif
return;
}
{
if (music_playlist_index.integer >= 0)
return;
- CDAudio_Play_byName(Cmd_Argv (2), false, true, (Cmd_Argc() > 3) ? atof( Cmd_Argv(3) ) : 0);
+ CDAudio_Play_byName(Cmd_Argv(cmd, 2), false, true, (Cmd_Argc(cmd) > 3) ? atof( Cmd_Argv(cmd, 3) ) : 0);
return;
}
{
if (music_playlist_index.integer >= 0)
return;
- CDAudio_Play_byName(Cmd_Argv (2), true, true, (Cmd_Argc() > 3) ? atof( Cmd_Argv(3) ) : 0);
+ CDAudio_Play_byName(Cmd_Argv(cmd, 2), true, true, (Cmd_Argc(cmd) > 3) ? atof( Cmd_Argv(cmd, 3) ) : 0);
return;
}
music_playlist_playing = 0; // not playing
}
-void CDAudio_StartPlaylist(qboolean resume)
+static void CDAudio_StartPlaylist(qboolean resume)
{
const char *list;
const char *t;
Cvar_RegisterVariable(&music_playlist_sampleposition[i]);
}
- Cmd_AddCommand("cd", CD_f, "execute a CD drive command (cd on/off/reset/remap/close/play/loop/stop/pause/resume/eject/info) - use cd by itself for usage");
+ Cmd_AddCommand(&cmd_client, "cd", CD_f, "execute a CD drive command (cd on/off/reset/remap/close/play/loop/stop/pause/resume/eject/info) - use cd by itself for usage");
+ Cmd_AddCommand(&cmd_clientfromserver, "cd", CD_f, "execute a CD drive command (cd on/off/reset/remap/close/play/loop/stop/pause/resume/eject/info) - use cd by itself for usage");
return 0;
}