mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-25 19:43:22 +00:00
Minor touchups to netcode
This commit is contained in:
parent
99a1bacb81
commit
ef8f2e6fa4
3 changed files with 48 additions and 47 deletions
|
|
@ -259,22 +259,24 @@ void SendNetXCmdForPlayer(UINT8 playerid, netxcmd_t id, const void *param, size_
|
||||||
if (localtextcmd[playerid][0]+2+nparam > MAXTEXTCMD)
|
if (localtextcmd[playerid][0]+2+nparam > MAXTEXTCMD)
|
||||||
{
|
{
|
||||||
// for future reference: if (cv_debug) != debug disabled.
|
// for future reference: if (cv_debug) != debug disabled.
|
||||||
CONS_Alert(CONS_ERROR, M_GetText("NetXCmd buffer full, cannot add netcmd %d! (size: %d, needed: %s)\n"), id, localtextcmd[0][0], sizeu1(nparam));
|
CONS_Alert(CONS_ERROR, M_GetText("NetXCmd buffer full, cannot add netcmd %d! (size: %d, needed: %s)\n"), id, localtextcmd[playerid][0], sizeu1(nparam));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
localtextcmd[playerid][0]++;
|
localtextcmd[playerid][0]++;
|
||||||
localtextcmd[playerid][localtextcmd[playerid][0]] = (UINT8)id;
|
localtextcmd[playerid][localtextcmd[playerid][0]] = (UINT8)id;
|
||||||
|
|
||||||
if (param && nparam)
|
if (param && nparam)
|
||||||
{
|
{
|
||||||
M_Memcpy(&localtextcmd[playerid][localtextcmd[playerid][0]+1], param, nparam);
|
M_Memcpy(&localtextcmd[playerid][localtextcmd[playerid][0] + 1], param, nparam);
|
||||||
localtextcmd[playerid][0] = (UINT8)(localtextcmd[playerid][0] + (UINT8)nparam);
|
localtextcmd[playerid][0] = (UINT8)(localtextcmd[playerid][0] + (UINT8)nparam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT8 GetFreeXCmdSize(void)
|
UINT8 GetFreeXCmdSize(UINT8 playerid)
|
||||||
{
|
{
|
||||||
// -1 for the size and another -1 for the ID.
|
// -1 for the size and another -1 for the ID.
|
||||||
return (UINT8)(localtextcmd[0][0] - 2);
|
return (UINT8)(localtextcmd[playerid][0] - 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Frees all textcmd memory for the specified tic
|
// Frees all textcmd memory for the specified tic
|
||||||
|
|
@ -3972,10 +3974,8 @@ void SV_StopServer(void)
|
||||||
Y_EndVote();
|
Y_EndVote();
|
||||||
gamestate = wipegamestate = GS_NULL;
|
gamestate = wipegamestate = GS_NULL;
|
||||||
|
|
||||||
localtextcmd[0][0] = 0;
|
for (i = 0; i < MAXSPLITSCREENPLAYERS; i++)
|
||||||
localtextcmd[1][0] = 0;
|
localtextcmd[i][0] = 0;
|
||||||
localtextcmd[2][0] = 0;
|
|
||||||
localtextcmd[3][0] = 0;
|
|
||||||
|
|
||||||
for (i = firstticstosend; i < firstticstosend + TICQUEUE; i++)
|
for (i = firstticstosend; i < firstticstosend + TICQUEUE; i++)
|
||||||
D_Clearticcmd(i);
|
D_Clearticcmd(i);
|
||||||
|
|
@ -5265,44 +5265,33 @@ static void CL_SendClientCmd(void)
|
||||||
|
|
||||||
if (cl_mode == CL_CONNECTED || dedicated)
|
if (cl_mode == CL_CONNECTED || dedicated)
|
||||||
{
|
{
|
||||||
|
UINT8 i;
|
||||||
// Send extra data if needed
|
// Send extra data if needed
|
||||||
if (localtextcmd[0][0])
|
for (i = 0; i < MAXSPLITSCREENPLAYERS; i++)
|
||||||
{
|
{
|
||||||
netbuffer->packettype = PT_TEXTCMD;
|
if (localtextcmd[i][0])
|
||||||
M_Memcpy(netbuffer->u.textcmd,localtextcmd[0], localtextcmd[0][0]+1);
|
{
|
||||||
// All extra data have been sent
|
switch (i)
|
||||||
if (HSendPacket(servernode, true, 0, localtextcmd[0][0]+1)) // Send can fail...
|
{
|
||||||
localtextcmd[0][0] = 0;
|
case 3:
|
||||||
}
|
netbuffer->packettype = PT_TEXTCMD4;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
netbuffer->packettype = PT_TEXTCMD3;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
netbuffer->packettype = PT_TEXTCMD2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
netbuffer->packettype = PT_TEXTCMD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Send extra data if needed for player 2 (splitscreen == 1)
|
M_Memcpy(netbuffer->u.textcmd, localtextcmd[i], localtextcmd[i][0]+1);
|
||||||
if (localtextcmd[1][0])
|
// All extra data have been sent
|
||||||
{
|
if (HSendPacket(servernode, true, 0, localtextcmd[i][0]+1)) // Send can fail...
|
||||||
netbuffer->packettype = PT_TEXTCMD2;
|
localtextcmd[i][0] = 0;
|
||||||
M_Memcpy(netbuffer->u.textcmd, localtextcmd[1], localtextcmd[1][0]+1);
|
}
|
||||||
// All extra data have been sent
|
|
||||||
if (HSendPacket(servernode, true, 0, localtextcmd[1][0]+1)) // Send can fail...
|
|
||||||
localtextcmd[1][0] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send extra data if needed for player 3 (splitscreen == 2)
|
|
||||||
if (localtextcmd[2][0])
|
|
||||||
{
|
|
||||||
netbuffer->packettype = PT_TEXTCMD3;
|
|
||||||
M_Memcpy(netbuffer->u.textcmd, localtextcmd[2], localtextcmd[2][0]+1);
|
|
||||||
// All extra data have been sent
|
|
||||||
if (HSendPacket(servernode, true, 0, localtextcmd[2][0]+1)) // Send can fail...
|
|
||||||
localtextcmd[2][0] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send extra data if needed for player 4 (splitscreen == 3)
|
|
||||||
if (localtextcmd[3][0])
|
|
||||||
{
|
|
||||||
netbuffer->packettype = PT_TEXTCMD4;
|
|
||||||
M_Memcpy(netbuffer->u.textcmd, localtextcmd[3], localtextcmd[3][0]+1);
|
|
||||||
// All extra data have been sent
|
|
||||||
if (HSendPacket(servernode, true, 0, localtextcmd[3][0]+1)) // Send can fail...
|
|
||||||
localtextcmd[3][0] = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5487,7 +5476,7 @@ static void SV_Maketic(void)
|
||||||
{
|
{
|
||||||
// empty inputs but consider recieved
|
// empty inputs but consider recieved
|
||||||
memset(ticcmd, 0, sizeof(netcmds[0][0]));
|
memset(ticcmd, 0, sizeof(netcmds[0][0]));
|
||||||
ticcmd->flags = prevticcmd->flags | TICCMD_RECEIVED;
|
ticcmd->flags |= TICCMD_RECEIVED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -5495,6 +5484,18 @@ static void SV_Maketic(void)
|
||||||
// Copy the input from the previous tic
|
// Copy the input from the previous tic
|
||||||
*ticcmd = *prevticcmd;
|
*ticcmd = *prevticcmd;
|
||||||
ticcmd->flags &= ~TICCMD_RECEIVED;
|
ticcmd->flags &= ~TICCMD_RECEIVED;
|
||||||
|
|
||||||
|
#if 1
|
||||||
|
CONS_Printf(
|
||||||
|
"[PLAYER %d] move: %d, turn: %d, buttons: %d, latency: %d, flags: %d\n",
|
||||||
|
i,
|
||||||
|
ticcmd->forwardmove,
|
||||||
|
ticcmd->turning,
|
||||||
|
ticcmd->buttons,
|
||||||
|
ticcmd->latency,
|
||||||
|
ticcmd->flags
|
||||||
|
);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -675,7 +675,7 @@ boolean D_IsPlayerHumanAndGaming(INT32 player_number);
|
||||||
void D_ResetTiccmds(void);
|
void D_ResetTiccmds(void);
|
||||||
|
|
||||||
tic_t GetLag(INT32 node);
|
tic_t GetLag(INT32 node);
|
||||||
UINT8 GetFreeXCmdSize(void);
|
UINT8 GetFreeXCmdSize(UINT8 playerid);
|
||||||
|
|
||||||
void D_MD5PasswordPass(const UINT8 *buffer, size_t len, const char *salt, void *dest);
|
void D_MD5PasswordPass(const UINT8 *buffer, size_t len, const char *salt, void *dest);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -349,7 +349,7 @@ static void P_DoAutobalanceTeams(void)
|
||||||
|
|
||||||
// Only do it if we have enough room in the net buffer to send it.
|
// Only do it if we have enough room in the net buffer to send it.
|
||||||
// Otherwise, come back next time and try again.
|
// Otherwise, come back next time and try again.
|
||||||
if (sizeof(usvalue) > GetFreeXCmdSize())
|
if (sizeof(usvalue) > GetFreeXCmdSize(0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//We have to store the players in an array with the rest of their team.
|
//We have to store the players in an array with the rest of their team.
|
||||||
|
|
@ -425,7 +425,7 @@ void P_DoTeamscrambling(void)
|
||||||
|
|
||||||
// Only do it if we have enough room in the net buffer to send it.
|
// Only do it if we have enough room in the net buffer to send it.
|
||||||
// Otherwise, come back next time and try again.
|
// Otherwise, come back next time and try again.
|
||||||
if (sizeof(usvalue) > GetFreeXCmdSize())
|
if (sizeof(usvalue) > GetFreeXCmdSize(0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (scramblecount < scrambletotal)
|
if (scramblecount < scrambletotal)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue