Sync pflags2, fix voice icon desyncs / other scary speculative desyncs!

This commit is contained in:
Antonio Martinez 2025-08-27 22:33:38 -04:00
parent 85b2f8f933
commit 814976fbc2
2 changed files with 9 additions and 4 deletions

View file

@ -316,6 +316,9 @@ static void SV_UpdateTempMute(player_t *player, boolean mute)
{
UINT8 buf[2];
if (mute == !!(player->pflags2 & PF2_SERVERTEMPMUTE))
return;
buf[0] = player - players;
buf[1] = (UINT8)(mute);
SendNetXCmd(XD_SERVERTEMPMUTEPLAYER, &buf, 2);
@ -337,18 +340,18 @@ void SV_UpdateTempMutes(void)
if (PR_IsKeyGuest(player->public_key))
{
if (cv_gamestochat.value && !(player->pflags2 & PF2_SERVERTEMPMUTE))
if (cv_gamestochat.value)
SV_UpdateTempMute(player, false);
continue;
}
serverplayer_t *stat = SV_GetStatsByPlayerIndex(i);
if (i == serverplayer || IsPlayerAdmin(i) && player->pflags2 & PF2_SERVERTEMPMUTE)
if (i == serverplayer || IsPlayerAdmin(i))
SV_UpdateTempMute(player, false);
else if (stat->finishedrounds >= (UINT32)cv_gamestochat.value && player->pflags2 & PF2_SERVERTEMPMUTE)
else if (stat->finishedrounds >= (UINT32)cv_gamestochat.value)
SV_UpdateTempMute(player, false);
else if (stat->finishedrounds < (UINT32)cv_gamestochat.value && !(player->pflags2 & PF2_SERVERTEMPMUTE))
else if (stat->finishedrounds < (UINT32)cv_gamestochat.value)
SV_UpdateTempMute(player, true);
}
}

View file

@ -245,6 +245,7 @@ static void P_NetArchivePlayers(savebuffer_t *save)
WRITEUINT8(save->p, players[i].playerstate);
WRITEUINT32(save->p, players[i].pflags);
WRITEUINT32(save->p, players[i].pflags2);
WRITEUINT8(save->p, players[i].panim);
WRITEUINT8(save->p, players[i].spectator);
WRITEUINT32(save->p, players[i].spectatewait);
@ -977,6 +978,7 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
players[i].playerstate = (playerstate_t)READUINT8(save->p);
players[i].pflags = READUINT32(save->p);
players[i].pflags2 = READUINT32(save->p);
players[i].panim = (panim_t)READUINT8(save->p);
players[i].spectator = READUINT8(save->p);
players[i].spectatewait = READUINT32(save->p);