mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
Sound fixes... again. Also fixes SPINNINGNUKEICON visible in the upper left corner in widescreen.
git-svn-id: https://svn.eduke32.com/eduke32@1667 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
7be36ebcd4
commit
d62c6117fe
2 changed files with 51 additions and 35 deletions
|
@ -144,16 +144,19 @@ static int32_t probe_(int32_t type,int32_t x,int32_t y,int32_t i,int32_t n)
|
|||
if (probey >= n)
|
||||
probey = 0;
|
||||
|
||||
if (centre)
|
||||
if (x || y)
|
||||
{
|
||||
// rotatesprite(((320>>1)+(centre)+54)<<16,(y+(probey*i)-4)<<16,65536L,0,SPINNINGNUKEICON+6-((6+(totalclock>>3))%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
// rotatesprite(((320>>1)-(centre)-54)<<16,(y+(probey*i)-4)<<16,65536L,0,SPINNINGNUKEICON+((totalclock>>3)%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
if (centre)
|
||||
{
|
||||
// rotatesprite(((320>>1)+(centre)+54)<<16,(y+(probey*i)-4)<<16,65536L,0,SPINNINGNUKEICON+6-((6+(totalclock>>3))%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
// rotatesprite(((320>>1)-(centre)-54)<<16,(y+(probey*i)-4)<<16,65536L,0,SPINNINGNUKEICON+((totalclock>>3)%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
|
||||
rotatesprite(((320>>1)+(centre>>1)+70)<<16,(y+(probey*i)-4)<<16,65536L>>type,0,SPINNINGNUKEICON+6-((6+(totalclock>>3))%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
rotatesprite(((320>>1)-(centre>>1)-70)<<16,(y+(probey*i)-4)<<16,65536L>>type,0,SPINNINGNUKEICON+((totalclock>>3)%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
rotatesprite(((320>>1)+(centre>>1)+70)<<16,(y+(probey*i)-4)<<16,65536L>>type,0,SPINNINGNUKEICON+6-((6+(totalclock>>3))%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
rotatesprite(((320>>1)-(centre>>1)-70)<<16,(y+(probey*i)-4)<<16,65536L>>type,0,SPINNINGNUKEICON+((totalclock>>3)%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
}
|
||||
else
|
||||
rotatesprite((x<<16)-((tilesizx[BIGFNTCURSOR]-4)<<(16-type)),(y+(probey*i)-(4>>type))<<16,65536L>>type,0,SPINNINGNUKEICON+(((totalclock>>3))%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
}
|
||||
else
|
||||
rotatesprite((x<<16)-((tilesizx[BIGFNTCURSOR]-4)<<(16-type)),(y+(probey*i)-(4>>type))<<16,65536L>>type,0,SPINNINGNUKEICON+(((totalclock>>3))%7),sh,0,10,0,0,xdim-1,ydim-1);
|
||||
|
||||
if (KB_KeyPressed(sc_Space) || KB_KeyPressed(sc_kpad_Enter) || KB_KeyPressed(sc_Enter) || (LMB && !onbar))
|
||||
{
|
||||
|
|
|
@ -322,11 +322,12 @@ void S_Cleanup(void)
|
|||
{
|
||||
uint32_t num = ldq[--ldnum];
|
||||
|
||||
if (num >= 65536)
|
||||
{
|
||||
g_soundlocks[num-65536]--;
|
||||
continue;
|
||||
}
|
||||
// num + 65536 is a sound played globally for which there was no open slot to keep track of the voice
|
||||
if (num >= 65536)
|
||||
{
|
||||
g_soundlocks[num-65536]--;
|
||||
continue;
|
||||
}
|
||||
|
||||
// negative index is RTS playback
|
||||
if ((int32_t)num < 0)
|
||||
|
@ -413,7 +414,10 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
|
|||
|
||||
if (g_sounds[num].m&128)
|
||||
{
|
||||
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice > 0)
|
||||
if ((voice = S_PlaySound(num)) <= FX_Ok)
|
||||
return -1;
|
||||
|
||||
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice != voice)
|
||||
j++;
|
||||
|
||||
if (j >= MAXSOUNDINSTANCES)
|
||||
|
@ -422,18 +426,8 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if ((voice = S_PlaySound(num)) <= FX_Ok)
|
||||
return -1;
|
||||
|
||||
if (FX_SetVoiceCallback(voice, (num * MAXSOUNDINSTANCES) + j))
|
||||
{
|
||||
OSD_Printf(OSD_ERROR "S_PlaySound3D(): error setting callback!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
g_sounds[num].SoundOwner[j].i = i;
|
||||
g_sounds[num].num++;
|
||||
g_sounds[num].SoundOwner[j].voice = voice;
|
||||
|
||||
return voice;
|
||||
}
|
||||
|
||||
|
@ -564,6 +558,7 @@ int32_t S_PlaySound(int32_t num)
|
|||
{
|
||||
int32_t pitch, cx;
|
||||
int32_t voice, j;
|
||||
int32_t doretry = 0;
|
||||
|
||||
if (ud.config.FXDevice < 0) return -1;
|
||||
if (ud.config.SoundToggle==0) return -1;
|
||||
|
@ -597,16 +592,13 @@ int32_t S_PlaySound(int32_t num)
|
|||
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice > 0)
|
||||
j++;
|
||||
|
||||
if (j >= MAXSOUNDINSTANCES)
|
||||
{
|
||||
g_soundlocks[num]--;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (j >= MAXSOUNDINSTANCES) // no slots available, so let's see if one opens up after multivoc kills a voice
|
||||
doretry = 1;
|
||||
|
||||
voice = (g_sounds[num].m&1) ?
|
||||
FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
|
||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].soundsiz, 65536 + num) :
|
||||
FX_PlayAuto3D(g_sounds[ num ].ptr, g_sounds[num].soundsiz, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, 65536 + num);
|
||||
pitch,LOUDESTVOLUME,LOUDESTVOLUME,LOUDESTVOLUME,g_sounds[num].soundsiz, (num * MAXSOUNDINSTANCES) + j) :
|
||||
FX_PlayAuto3D(g_sounds[ num ].ptr, g_sounds[num].soundsiz, pitch,0,255-LOUDESTVOLUME,g_sounds[num].pr, (num * MAXSOUNDINSTANCES) + j);
|
||||
|
||||
if (voice <= FX_Ok)
|
||||
{
|
||||
|
@ -614,6 +606,24 @@ int32_t S_PlaySound(int32_t num)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (doretry)
|
||||
{
|
||||
S_Cleanup();
|
||||
|
||||
j = 0;
|
||||
|
||||
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice > 0)
|
||||
j++;
|
||||
|
||||
if (j >= MAXSOUNDINSTANCES) // still no slots available
|
||||
{
|
||||
FX_SetVoiceCallback(voice, num + 65536);
|
||||
return voice;
|
||||
}
|
||||
|
||||
FX_SetVoiceCallback(voice, (num * MAXSOUNDINSTANCES) + j);
|
||||
}
|
||||
|
||||
g_sounds[num].num++;
|
||||
g_sounds[num].SoundOwner[j].i = -1;
|
||||
g_sounds[num].SoundOwner[j].voice = voice;
|
||||
|
@ -646,11 +656,11 @@ void S_StopEnvSound(int32_t num, int32_t i)
|
|||
|
||||
for (j=MAXSOUNDINSTANCES-1; j>=0; j--)
|
||||
{
|
||||
if (i == -1 || g_sounds[num].SoundOwner[j].i == i)
|
||||
if ((i == -1 && g_sounds[num].SoundOwner[j].voice > FX_Ok) || (i != -1 && g_sounds[num].SoundOwner[j].i == i))
|
||||
{
|
||||
if (g_sounds[num].SoundOwner[j].voice <= FX_Ok || g_sounds[num].SoundOwner[j].voice > ud.config.NumVoices)
|
||||
if (i >= 0 && g_sounds[num].SoundOwner[j].voice <= FX_Ok)
|
||||
initprintf(OSD_ERROR "S_StopEnvSound(): bad voice %d for sound ID %d index %d!\n", g_sounds[num].SoundOwner[j].voice, num, j);
|
||||
else if (FX_SoundActive(g_sounds[num].SoundOwner[j].voice))
|
||||
else if (g_sounds[num].SoundOwner[j].voice > FX_Ok && FX_SoundActive(g_sounds[num].SoundOwner[j].voice))
|
||||
FX_StopSound(g_sounds[num].SoundOwner[j].voice);
|
||||
|
||||
// FX_SoundActive returning false could mean one of two things: we asked to stop the sound
|
||||
|
@ -675,6 +685,9 @@ void S_Update(void)
|
|||
|
||||
S_Cleanup();
|
||||
|
||||
if ((g_player[myconnectindex].ps->gm & (MODE_GAME|MODE_DEMO)) == 0)
|
||||
return;
|
||||
|
||||
g_numEnvSoundsPlaying = 0;
|
||||
|
||||
if (ud.camerasprite == -1)
|
||||
|
|
Loading…
Reference in a new issue