Move player-node unlinking to a function

This commit is contained in:
LJ Sonic 2022-12-29 20:48:17 +01:00
parent f1117095b7
commit ecacb14fc1

View file

@ -2298,6 +2298,24 @@ void CL_ClearPlayer(INT32 playernum)
memset(playeraddress[playernum], 0, sizeof(*playeraddress)); memset(playeraddress[playernum], 0, sizeof(*playeraddress));
} }
static void UnlinkPlayerFromNode(INT32 playernum)
{
INT32 node = playernode[playernum];
if (node == UINT8_MAX)
return;
playernode[playernum] = UINT8_MAX;
netnodes[node].numplayers--;
if (netnodes[node].numplayers <= 0)
{
netnodes[node].ingame = false;
Net_CloseConnection(node);
ResetNode(node);
}
}
// //
// CL_RemovePlayer // CL_RemovePlayer
// //
@ -2310,17 +2328,8 @@ void CL_RemovePlayer(INT32 playernum, kickreason_t reason)
if (!playeringame[playernum]) if (!playeringame[playernum])
return; return;
if (server && !demoplayback && playernode[playernum] != UINT8_MAX) if (server)
{ UnlinkPlayerFromNode(playernum);
INT32 node = playernode[playernum];
netnodes[node].numplayers--;
if (netnodes[node].numplayers <= 0)
{
netnodes[node].ingame = false;
Net_CloseConnection(node);
ResetNode(node);
}
}
if (gametyperules & GTR_TEAMFLAGS) if (gametyperules & GTR_TEAMFLAGS)
P_PlayerFlagBurst(&players[playernum], false); // Don't take the flag with you! P_PlayerFlagBurst(&players[playernum], false); // Don't take the flag with you!
@ -2392,7 +2401,6 @@ void CL_RemovePlayer(INT32 playernum, kickreason_t reason)
// remove avatar of player // remove avatar of player
playeringame[playernum] = false; playeringame[playernum] = false;
playernode[playernum] = UINT8_MAX;
while (!playeringame[doomcom->numslots-1] && doomcom->numslots > 1) while (!playeringame[doomcom->numslots-1] && doomcom->numslots > 1)
doomcom->numslots--; doomcom->numslots--;
@ -2920,20 +2928,8 @@ static void Got_KickCmd(UINT8 **p, INT32 playernum)
} }
else if (keepbody) else if (keepbody)
{ {
if (server && !demoplayback && playernode[pnum] != UINT8_MAX) if (server)
{ UnlinkPlayerFromNode(pnum);
INT32 node = playernode[pnum];
netnodes[node].numplayers--;
if (netnodes[node].numplayers <= 0)
{
netnodes[node].ingame = false;
Net_CloseConnection(node);
ResetNode(node);
}
}
playernode[pnum] = UINT8_MAX;
players[pnum].quittime = 1; players[pnum].quittime = 1;
} }
else else