{
unsigned int track;
sfx_t* sfx;
+ char filename[MAX_QPATH];
Host_StartVideo();
// Try playing a fake track (sound file) first
if(track >= 1)
{
- sfx = S_PrecacheSound (va ("cdtracks/track%02u.wav", track), false, false);
- if (sfx == NULL || !S_IsSoundPrecached (sfx))
- sfx = S_PrecacheSound (va ("cdtracks/track%03u.wav", track), false, false);
- if (sfx == NULL || !S_IsSoundPrecached (sfx))
- sfx = S_PrecacheSound (va ("cdtracks/track%02u", track), false, false);
- if (sfx == NULL || !S_IsSoundPrecached (sfx))
- sfx = S_PrecacheSound (va ("cdtracks/track%03u", track), false, false);
+ dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%03u.wav", track);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%03u.ogg", track);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%02u.wav", track);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/track%02u.ogg", track);
}
else
{
- sfx = S_PrecacheSound (va("cdtracks/%s.wav", trackname), false, false);
- if (sfx == NULL || !S_IsSoundPrecached (sfx))
- sfx = S_PrecacheSound (va("cdtracks/%s", trackname), false, false);
- if (sfx == NULL || !S_IsSoundPrecached (sfx))
- sfx = S_PrecacheSound (va("%s.wav", trackname), false, false);
- if (sfx == NULL || !S_IsSoundPrecached (sfx))
- sfx = S_PrecacheSound (va("%s", trackname), false, false);
+ dpsnprintf(filename, sizeof(filename), "%s", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "%s.wav", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "%s.ogg", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/%s", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/%s.wav", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/%s.ogg", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/%s", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/%s.wav", trackname);
+ if (!FS_FileExists(filename)) dpsnprintf(filename, sizeof(filename), "sound/cdtracks/%s.ogg", trackname);
}
- if (sfx != NULL)
+ if (FS_FileExists(filename) && (sfx = S_PrecacheSound (filename, false, false)))
{
faketrack = S_StartSound (-1, 0, sfx, vec3_origin, cdvolume, 0);
if (faketrack != -1)
if (looping)
S_SetChannelFlag (faketrack, CHANNELFLAG_FORCELOOP, true);
S_SetChannelFlag (faketrack, CHANNELFLAG_FULLVOLUME, true);
+ S_SetChannelFlag (faketrack, CHANNELFLAG_LOCALSOUND, true); // not pausable
if(track >= 1)
{
if(cdaudio.integer != 0 || developer.integer) // we don't need these messages if only fake tracks can be played anyway
cl.model_bolt2 = Mod_ForName("progs/bolt2.mdl", false, false, NULL);
cl.model_bolt3 = Mod_ForName("progs/bolt3.mdl", false, false, NULL);
cl.model_beam = Mod_ForName("progs/beam.mdl", false, false, NULL);
- Mod_PurgeUnused();
+
+ // we purge the models and sounds later in CL_SignonReply
+ //Mod_PurgeUnused();
// now we try to load everything that is new
cl.sound_precache[i] = S_PrecacheSound(cl.sound_name[i], true, false);
}
+ // we purge the models and sounds later in CL_SignonReply
+ //S_PurgeUnused();
+
// check memory integrity
Mem_CheckSentinelsGlobal();
case 4:
// after the level has been loaded, we shouldn't need the shaders, and
// if they are needed again they will be automatically loaded...
+ // we also don't need the unused models or sounds from the last level
Mod_FreeQ3Shaders();
+ Mod_PurgeUnused();
+ S_PurgeUnused();
Con_ClearNotify();
if (COM_CheckParm("-profilegameonly"))
cl.model_bolt2 = Mod_ForName("progs/bolt2.mdl", false, false, NULL);
cl.model_bolt3 = Mod_ForName("progs/bolt3.mdl", false, false, NULL);
cl.model_beam = Mod_ForName("progs/beam.mdl", false, false, NULL);
- Mod_PurgeUnused();
+
+ // we purge the models and sounds later in CL_SignonReply
+ //Mod_PurgeUnused();
+ //S_PurgeUnused();
// do the same for sounds
- // FIXME: S_ServerSounds does not know about cl.sfx_ sounds
S_ServerSounds (cl.sound_name, numsounds);
// precache any sounds used by the client