X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=snd_3dras.c;h=0619796a670b433167eb7f12017d0f0dafeadaec;hp=30b3c4df9b595d1cc4bbc0ea83fa0785bf495d7a;hb=3d604171a34bc172c17a00109fb71b322c3f9d14;hpb=10e1054afd86d2b6994acffd2fa5ec4b4495a216 diff --git a/snd_3dras.c b/snd_3dras.c index 30b3c4df..0619796a 100644 --- a/snd_3dras.c +++ b/snd_3dras.c @@ -5,11 +5,11 @@ #include "snd_3dras.h" cvar_t bgmvolume = {CVAR_SAVE, "bgmvolume", "1", "volume of background music (such as CD music or replacement files such as sound/cdtracks/track002.ogg)"}; +cvar_t mastervolume = {CVAR_SAVE, "mastervolume", "1", "master volume"}; cvar_t volume = {CVAR_SAVE, "volume", "0.7", "volume of sound effects"}; cvar_t snd_staticvolume = {CVAR_SAVE, "snd_staticvolume", "1", "volume of ambient sound effects (such as swampy sounds at the start of e1m2)"}; cvar_t snd_initialized = { CVAR_READONLY, "snd_initialized", "0", "indicates the sound subsystem is active"}; cvar_t snd_mutewhenidle = {CVAR_SAVE, "snd_mutewhenidle", "1", "whether to disable sound output when game window is inactive"}; -cvar_t snd_streaming = { CVAR_SAVE, "snd_streaming", "1", "enables keeping compressed ogg sound files compressed, decompressing them only as needed, otherwise they will be decompressed completely at load (may use a lot of memory)"}; static cvar_t snd_precache = {0, "snd_precache", "1", "loads sounds before they are used"}; static dllhandle_t ras_dll = NULL; @@ -115,15 +115,13 @@ static dllfunction_t ras_funcs[] = }; static const char* ras_dllname [] = { - #if defined(WIN64) - "3dras64.dll", - #elif defined(WIN32) +#if defined(WIN32) "3dras32.dll", - #elif defined(MACOSX) +#elif defined(MACOSX) "3dras.dylib", - #else +#else "3dras.so", - #endif +#endif NULL }; @@ -268,7 +266,7 @@ static void S_Play_Common (float fvol, float attenuation){ i++; } - sfx = S_PrecacheSound (name, true, false); + sfx = S_PrecacheSound (name, true, true); if (sfx) S_StartSound (-1, 0, sfx, listener_location, fvol, attenuation); } @@ -370,6 +368,7 @@ void S_Init (void){ Con_Printf ("Version %i found\n",ras_version); Cvar_RegisterVariable(&volume); Cvar_RegisterVariable(&bgmvolume); + Cvar_RegisterVariable(&mastervolume); Cvar_RegisterVariable(&snd_staticvolume); Cvar_RegisterVariable(&snd_precache); @@ -599,7 +598,7 @@ int S_LoadSound(sfx_t *sfx, int complain){ void* decoder_ptr=NULL; if(ras_version>0 && ras_dll){ - fileext[4]=0; //Terminator + fileext[3]=0; //Terminator // See if already loaded if (sfx->rasptr) return true; @@ -686,11 +685,11 @@ int S_LoadSound(sfx_t *sfx, int complain){ } return false; } -sfx_t *S_PrecacheSound (const char *name, qboolean complain, qboolean lock){ +sfx_t *S_PrecacheSound (const char *name, qboolean complain, qboolean serversound){ sfx_t *sfx; if(ras_version>0 && ras_dll){ #ifdef RAS_PRINT - Con_Printf("Called S_PrecacheSound %s, %i, %i\n",name,complain,lock); + Con_Printf("Called S_PrecacheSound %s, %i, %i\n",name,complain,serversound); #endif if (name == NULL || name[0] == 0) return NULL; @@ -702,12 +701,12 @@ sfx_t *S_PrecacheSound (const char *name, qboolean complain, qboolean lock){ } return NULL; } -void S_ServerSounds (char serversound [][MAX_QPATH], unsigned int numsounds){ +void S_ClearUsed (void){ sfx_t *prev_s, *now_s; unsigned int i; if(ras_version>0 && ras_dll){ - Con_Printf("Called S_ServerSounds\n"); + Con_Printf("Called S_ClearUsed\n"); for(i=0;iflags & SFXFLAG_SERVERSOUND) now_s->flags &= ~SFXFLAG_SERVERSOUND; sfx_next(&prev_s,&now_s); } - - // Add 1 lock and the SFXFLAG_SERVERSOUND flag to each sfx in "serversound" - for (i = 1; i < numsounds; i++){ - now_s = S_FindName (serversound[i]); - if (now_s != NULL) - now_s->flags |= SFXFLAG_SERVERSOUND; - } - - Free_Unlocked_Sfx(); } } } +void S_PurgeUnused(void){ + Free_Unlocked_Sfx(); +} qboolean S_IsSoundPrecached (const sfx_t *sfx){ if(ras_version>0 && ras_dll){ return !sfx->rasptr; @@ -796,13 +789,13 @@ int S_StartSound_OnEnt (int entnum, int entchannel, sfx_t *sfx, float fvol, floa S_KillChannel(now_c); }else{ //We found no channel .... So we need to make a new one ... channel_new_smart(&prev_c,&now_c); - now_c->entnum =entnum; - now_c->entchannel=entchannel; if(!now_c){ Con_Printf("S_StartSound_OnEnt: could not make new channel_t\n"); channel_delete_and_next(&prev_c,&now_c); return -1; } + now_c->entnum =entnum; + now_c->entchannel=entchannel; } //Lets start the sound on the acquired sound source and channel @@ -905,7 +898,7 @@ qboolean S_LocalSound (const char *s){ Con_Printf("Called S_LocalSound %s\n",s); #endif - sfx = S_PrecacheSound (s, true, false); + sfx = S_PrecacheSound (s, true, true); if (!sfx) { Con_Printf("S_LocalSound: can't precache %s\n", s); @@ -1008,6 +1001,12 @@ void S_SetChannelVolume (unsigned int ch_ind, float fvol){ } } +float S_GetChannelPosition (unsigned int ch_ind) +{ + // FIXME unsupported + return -1; +} + void S_BlockSound (void){ soundblocked++; } @@ -1029,3 +1028,15 @@ int S_GetSoundChannels (void){ Con_Printf("So let's assume 2.\n"); return 2; } + +/* +==================== +SndSys_SendKeyEvents + +Send keyboard events originating from the sound system (e.g. MIDI) +==================== +*/ +void SndSys_SendKeyEvents(void) +{ + // not supported +}