/* ================= S_StartBackgroundTrack ================= */ void S_StartBackgroundTrack (const char *introTrack, const char *loopTrack) { if (!ogg_started) // was sound_started return; // Stop any playing tracks S_StopBackgroundTrack(); // Start it up // Q_strncpyz(s_bgTrack.introName, introTrack, sizeof(s_bgTrack.introName)); // Q_strncpyz(s_bgTrack.loopName, loopTrack, sizeof(s_bgTrack.loopName)); // Q_strncpyz(s_bgTrack.ambientName, va("music/%s.ogg", ogg_ambient_track->string), sizeof(s_bgTrack.ambientName)); Com_strcpy(s_bgTrack.introName, sizeof(s_bgTrack.introName), introTrack); Com_strcpy(s_bgTrack.loopName, sizeof(s_bgTrack.loopName), loopTrack); Com_strcpy(s_bgTrack.ambientName, sizeof(s_bgTrack.ambientName), va("music/%s.ogg", ogg_ambient_track->string)); // set a loop counter so that this track will change to the ambient track later ogg_loopcounter = 0; // Cvar_ForceSet ("ogg_loopcount", va("%i", Cvar_VariableValue("cd_loopcount")-1)); S_StartStreaming(); // Open the intro track if (!S_OpenBackgroundTrack(s_bgTrack.introName, &s_bgTrack)) { S_StopBackgroundTrack(); return; } ogg_status = PLAY; S_StreamBackgroundTrack(); }
/* ================= S_StartBackgroundTrack ================= */ void S_StartBackgroundTrack (const char *introTrack, const char *loopTrack) { extern void Q_strncpyz (char *dst, const char *src, int dstSize); if (!ogg_started) return; // stop any playing tracks S_StopBackgroundTrack(); // start it up Q_strncpyz(s_bgTrack.introName, introTrack, sizeof(s_bgTrack.introName)); Q_strncpyz(s_bgTrack.loopName, loopTrack, sizeof(s_bgTrack.loopName)); Q_strncpyz(s_bgTrack.ambientName, va("music/%s.ogg", ogg_ambient_track->string), sizeof(s_bgTrack.ambientName)); // set a loop counter so that this track will change to the ambient track later ogg_loopcounter = 0; S_StartStreaming(); // open the intro track if (!S_OpenBackgroundTrack(s_bgTrack.introName, &s_bgTrack)) { S_StopBackgroundTrack(); return; } ogg_status = PLAY; S_StreamBackgroundTrack(); }
/* ================== SCR_PlayCinematic ================== */ qboolean SCR_PlayCinematic( const char *arg ) { string path; const char *fullpath; fullpath = FS_GetDiskPath( arg, false ); if( FS_FileExists( arg, false ) && !fullpath ) { MsgDev( D_ERROR, "Couldn't load %s from packfile. Please extract it\n", path ); return false; } AVI_OpenVideo( cin_state, fullpath, true, true, false ); if( !AVI_IsActive( cin_state )) { AVI_CloseVideo( cin_state ); return false; } if( !( AVI_GetVideoInfo( cin_state, &xres, &yres, &video_duration ))) // couldn't open this at all. { AVI_CloseVideo( cin_state ); return false; } if( AVI_GetAudioInfo( cin_state, &cin_audio )) { // begin streaming S_StopAllSounds(); S_StartStreaming(); } UI_SetActiveMenu( false ); SCR_RebuildGammaTable(); cls.state = ca_cinematic; cin_time = 0.0f; return true; }
/* ================= S_StartBackgroundTrack ================= */ void S_StartBackgroundTrack( const char *introTrack, const char *mainTrack ) { S_StopBackgroundTrack(); if(( !introTrack || !*introTrack ) && ( !mainTrack || !*mainTrack )) return; if( !introTrack ) { introTrack = ""; } if( !mainTrack || !*mainTrack ) { mainTrack = introTrack; } if( !*introTrack ) return; if( mainTrack ) { com.snprintf( s_bgTrack.loopName, sizeof( s_bgTrack.loopName ), "media/%s", mainTrack ); } else s_bgTrack.loopName[0] = 0; S_StartStreaming(); // close the background track, but DON'T reset s_rawend // if restarting the same back ground track if( s_bgTrack.stream ) { FS_CloseStream( s_bgTrack.stream ); s_bgTrack.stream = NULL; } // open stream s_bgTrack.stream = FS_OpenStream( va( "media/%s", introTrack )); }