/* * Play files in sequence. */ void OGG_Sequence(void) { if (strcmp(ogg_sequence->string, "next") == 0) { OGG_Open(REL, 1); } else if (strcmp(ogg_sequence->string, "prev") == 0) { OGG_Open(REL, -1); } else if (strcmp(ogg_sequence->string, "random") == 0) { OGG_Open(ABS, randk() % ogg_numfiles); } else if (strcmp(ogg_sequence->string, "loop") == 0) { OGG_Open(REL, 0); } else if (strcmp(ogg_sequence->string, "none") != 0) { Com_Printf("Invalid value of ogg_sequence: %s\n", ogg_sequence->string); Cvar_Set("ogg_sequence", "none"); } }
/* * Play Ogg Vorbis file (with name only). */ qboolean OGG_OpenName(char *filename) { char *name; /* File name. */ int i; /* Loop counter. */ /* If the track name is '00', and ogg_ignoretrack0 is set to 0, stop playback */ if ((!strncmp(filename, "00", sizeof(char) * 3)) && ogg_ignoretrack0->value == 0) { OGG_PauseCmd(); return false; } name = va("%s/%s.ogg", OGG_DIR, filename); for (i = 0; i < ogg_numfiles; i++) { if (strcmp(name, ogg_filelist[i]) == 0) { break; } } if (i < ogg_numfiles) { return OGG_Open(ABS, i); } else { Com_Printf("OGG_OpenName: '%s' not in the list.\n", filename); return false; } }
/* ========== OGG_ParseCmd Parse play controls. ========== */ void OGG_ParseCmd(char *arg) { int n; switch (arg[0]) { case '#': n = atoi(arg+1) - 1; OGG_Open(ABS, n); break; case '?': OGG_Open(ABS, rand() % ogg_numfiles); break; case '>': if (strlen(arg) > 1) OGG_Open(REL, atoi(arg+1)); else OGG_Open(REL, 1); break; case '<': if (strlen(arg) > 1) OGG_Open(REL, -atoi(arg+1)); else OGG_Open(REL, -1); break; default: OGG_OpenName(arg); break; } }
/* * Parse play controls. */ void OGG_ParseCmd(char *arg) { int n; cvar_t *ogg_enable; ogg_enable = Cvar_Get("ogg_enable", "1", CVAR_ARCHIVE); switch (arg[0]) { case '#': n = (int)strtol(arg + 1, (char **)NULL, 10) - 1; OGG_Open(ABS, n); break; case '?': OGG_Open(ABS, randk() % ogg_numfiles); break; case '>': if (strlen(arg) > 1) { OGG_Open(REL, (int)strtol(arg + 1, (char **)NULL, 10)); } else { OGG_Open(REL, 1); } break; case '<': if (strlen(arg) > 1) { OGG_Open(REL, -(int)strtol(arg + 1, (char **)NULL, 10)); } else { OGG_Open(REL, -1); } break; default: if (ogg_enable->value != 0) { OGG_OpenName(arg); } break; } }
/* ========== OGG_OpenName Play Ogg Vorbis file (with name only). ========== */ qboolean OGG_OpenName(char *filename) { char *name; /* File name. */ int i; /* Loop counter. */ name = va("%s/%s.ogg", OGG_DIR, filename); for (i = 0; i < ogg_numfiles; i++) if (strcmp(name, ogg_filelist[i]) == 0) break; if (i < ogg_numfiles) return (OGG_Open(ABS, i)); else { Com_Printf("OGG_OpenName: '%s' not in the list.\n", filename); return (false); } }