Forgot to extend names in standings + bugfixes
This commit is contained in:
parent
fe33d2e9b5
commit
2dfbd66031
5 changed files with 41 additions and 47 deletions
|
|
@ -232,6 +232,7 @@ FUNCINLINE static ATTRINLINE UINT64 readulonglong(void *ptr)
|
|||
tmp_i++; \
|
||||
\
|
||||
s[tmp_i] = '\0'; \
|
||||
if (tmp_i == n - 1 && *p == '\0') p++; \
|
||||
} while (0)
|
||||
|
||||
#define READSTRING(p, s) do { \
|
||||
|
|
|
|||
|
|
@ -2722,7 +2722,7 @@ void CL_RemovePlayer(INT32 playernum, kickreason_t reason)
|
|||
playeringame[playernum] = false;
|
||||
demo_extradata[playernum] |= DXD_PLAYSTATE;
|
||||
playernode[playernum] = UINT8_MAX;
|
||||
while (!playeringame[doomcom->numslots-1] && doomcom->numslots > 1)
|
||||
while (doomcom->numslots > 1 && !playeringame[doomcom->numslots-1])
|
||||
doomcom->numslots--;
|
||||
|
||||
// Reset the name
|
||||
|
|
|
|||
81
src/g_demo.c
81
src/g_demo.c
|
|
@ -56,17 +56,6 @@
|
|||
#include "k_grandprix.h"
|
||||
#include "strbuf.h"
|
||||
|
||||
// TODO wtf... READSTRINGL max length string doesn't skip over NUL????
|
||||
#define READSTRINGX(p, s, n) do { \
|
||||
size_t tmp_i = 0; \
|
||||
\
|
||||
while (tmp_i < n - 1 && (s[tmp_i] = READCHAR(p)) != '\0') \
|
||||
tmp_i++; \
|
||||
\
|
||||
s[tmp_i] = '\0'; \
|
||||
if (tmp_i == n - 1 && *p == '\0') p++; \
|
||||
} while (0)
|
||||
|
||||
static CV_PossibleValue_t recordmultiplayerdemos_cons_t[] = {{0, "Disabled"}, {1, "Manual Save"}, {2, "Auto Save"}, {0, NULL}};
|
||||
consvar_t cv_recordmultiplayerdemos = CVAR_INIT ("netdemo_record", "Manual Save", CV_SAVE, recordmultiplayerdemos_cons_t, NULL);
|
||||
|
||||
|
|
@ -623,7 +612,7 @@ static UINT8 *G_ReadRawExtraData(extradata_t *extra, UINT8 *dp, UINT16 version)
|
|||
extra->playername[16] = '\0';
|
||||
}
|
||||
else
|
||||
READSTRINGX(dp, extra->playername, 21+1);
|
||||
READSTRINGL(dp, extra->playername, 21+1);
|
||||
}
|
||||
}
|
||||
if (extradata & DXD_SKIN)
|
||||
|
|
@ -634,7 +623,7 @@ static UINT8 *G_ReadRawExtraData(extradata_t *extra, UINT8 *dp, UINT16 version)
|
|||
extra->skinname[16] = '\0';
|
||||
}
|
||||
else
|
||||
READSTRINGX(dp, extra->skinname, 16+1);
|
||||
READSTRINGL(dp, extra->skinname, 16+1);
|
||||
extra->kartspeed = READUINT8(dp);
|
||||
extra->kartweight = READUINT8(dp);
|
||||
}
|
||||
|
|
@ -646,7 +635,7 @@ static UINT8 *G_ReadRawExtraData(extradata_t *extra, UINT8 *dp, UINT16 version)
|
|||
extra->colorname[16] = '\0';
|
||||
}
|
||||
else
|
||||
READSTRINGX(dp, extra->colorname, 16+1);
|
||||
READSTRINGL(dp, extra->colorname, 16+1);
|
||||
}
|
||||
if (kart)
|
||||
{
|
||||
|
|
@ -671,8 +660,8 @@ static UINT8 *G_ReadRawExtraData(extradata_t *extra, UINT8 *dp, UINT16 version)
|
|||
}
|
||||
else
|
||||
{
|
||||
READSTRINGX(dp, extra->followername, 16+1);
|
||||
READSTRINGX(dp, extra->followercolor, 16+1);
|
||||
READSTRINGL(dp, extra->followername, 16+1);
|
||||
READSTRINGL(dp, extra->followercolor, 16+1);
|
||||
}
|
||||
}
|
||||
if (extradata & DXD_WEAPONPREF)
|
||||
|
|
@ -792,7 +781,7 @@ static headerstatus_e G_ReadDemoHeader(UINT8 *dp, demoheader_t *header)
|
|||
|
||||
if (rapreset)
|
||||
{
|
||||
READSTRINGX(dp, header->rapreset, sizeof(header->rapreset));
|
||||
READSTRINGL(dp, header->rapreset, sizeof(header->rapreset));
|
||||
header->rapresetversion = READUINT8(dp);
|
||||
}
|
||||
|
||||
|
|
@ -954,11 +943,11 @@ skipfiles:
|
|||
|
||||
if (rapreset)
|
||||
{
|
||||
READSTRINGX(dp, plr->name, 21+1);
|
||||
READSTRINGX(dp, plr->skin, 16+1);
|
||||
READSTRINGX(dp, plr->color, 16+1);
|
||||
READSTRINGX(dp, plr->follower, 16+1);
|
||||
READSTRINGX(dp, plr->followercolor, 16+1);
|
||||
READSTRINGL(dp, plr->name, 21+1);
|
||||
READSTRINGL(dp, plr->skin, 16+1);
|
||||
READSTRINGL(dp, plr->color, 16+1);
|
||||
READSTRINGL(dp, plr->follower, 16+1);
|
||||
READSTRINGL(dp, plr->followercolor, 16+1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -3039,8 +3028,6 @@ void G_BeginMetal(void)
|
|||
|
||||
void G_WriteStanding(UINT8 ranking, char *name, INT32 skinnum, UINT16 color, UINT32 val)
|
||||
{
|
||||
char temp[16];
|
||||
|
||||
if (demoinfo_p && *(UINT32 *)demoinfo_p == 0)
|
||||
{
|
||||
WRITEUINT8(demobuf.p, DEMOMARKER); // add the demo end marker
|
||||
|
|
@ -3051,22 +3038,13 @@ void G_WriteStanding(UINT8 ranking, char *name, INT32 skinnum, UINT16 color, UIN
|
|||
WRITEUINT8(demobuf.p, ranking);
|
||||
|
||||
// Name
|
||||
memset(temp, 0, 16);
|
||||
strncpy(temp, name, 16);
|
||||
M_Memcpy(demobuf.p,temp,16);
|
||||
demobuf.p += 16;
|
||||
WRITESTRINGL(demobuf.p, name, 21+1);
|
||||
|
||||
// Skin
|
||||
memset(temp, 0, 16);
|
||||
strncpy(temp, skins[skinnum].name, 16);
|
||||
M_Memcpy(demobuf.p,temp,16);
|
||||
demobuf.p += 16;
|
||||
WRITESTRINGL(demobuf.p, skins[skinnum].name, 16+1);
|
||||
|
||||
// Color
|
||||
memset(temp, 0, 16);
|
||||
strncpy(temp, skincolors[color].name, 16);
|
||||
M_Memcpy(demobuf.p,temp,16);
|
||||
demobuf.p += 16;
|
||||
WRITESTRINGL(demobuf.p, skincolors[color].name, 16+1);
|
||||
|
||||
// Score/time/whatever
|
||||
WRITEUINT32(demobuf.p, val);
|
||||
|
|
@ -3393,17 +3371,27 @@ void G_LoadDemoInfo(menudemo_t *pdemo)
|
|||
while (READUINT8(extrainfo_p) == DW_STANDING) // Assume standings are always first in the extrainfo
|
||||
{
|
||||
INT32 i;
|
||||
char temp[16];
|
||||
char temp[17];
|
||||
|
||||
pdemo->standings[count].ranking = READUINT8(extrainfo_p);
|
||||
|
||||
// Name
|
||||
M_Memcpy(pdemo->standings[count].name, extrainfo_p, 16);
|
||||
extrainfo_p += 16;
|
||||
if (header.demoversion <= 0x000C)
|
||||
{
|
||||
READMEM(extrainfo_p, pdemo->standings[count].name, 16);
|
||||
pdemo->standings[count].name[16] = '\0';
|
||||
}
|
||||
else
|
||||
READSTRINGL(extrainfo_p, pdemo->standings[count].name, 21+1);
|
||||
|
||||
// Skin
|
||||
M_Memcpy(temp,extrainfo_p,16);
|
||||
extrainfo_p += 16;
|
||||
if (header.demoversion <= 0x000C)
|
||||
{
|
||||
READMEM(extrainfo_p, temp, 16);
|
||||
temp[16] = '\0';
|
||||
}
|
||||
else
|
||||
READSTRINGL(extrainfo_p, temp, 16+1);
|
||||
pdemo->standings[count].skin = UINT16_MAX;
|
||||
for (i = 0; i < numskins; i++)
|
||||
if (stricmp(skins[i].name, temp) == 0)
|
||||
|
|
@ -3413,8 +3401,13 @@ void G_LoadDemoInfo(menudemo_t *pdemo)
|
|||
}
|
||||
|
||||
// Color
|
||||
M_Memcpy(temp,extrainfo_p,16);
|
||||
extrainfo_p += 16;
|
||||
if (header.demoversion <= 0x000C)
|
||||
{
|
||||
READMEM(extrainfo_p, temp, 16);
|
||||
temp[16] = '\0';
|
||||
}
|
||||
else
|
||||
READSTRINGL(extrainfo_p, temp, 16+1);
|
||||
pdemo->standings[count].color = SKINCOLOR_NONE;
|
||||
for (i = 0; i < numskincolors; i++)
|
||||
if (!stricmp(skincolors[i].name,temp)) // SRB2kart
|
||||
|
|
@ -3792,7 +3785,7 @@ void G_DoPlayDemo(char *defdemoname)
|
|||
}
|
||||
|
||||
// Name
|
||||
M_Memcpy(player_names[p], plr->name, 16);
|
||||
strcpy(player_names[p], plr->name);
|
||||
|
||||
/*if (players[p].spectator)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ struct menudemo_t {
|
|||
|
||||
struct {
|
||||
UINT8 ranking;
|
||||
char name[17];
|
||||
char name[21+1];
|
||||
UINT16 skin, color;
|
||||
UINT32 timeorscore;
|
||||
} standings[MAXPLAYERS];
|
||||
|
|
|
|||
|
|
@ -3985,7 +3985,7 @@ static void DrawReplayHutReplayInfo(void)
|
|||
|
||||
//CONS_Printf("%d %s\n", demolist[dir_on[menudepthleft]].map, G_BuildMapName(demolist[dir_on[menudepthleft]].map));
|
||||
fixed_t scale = M_GetMapThumbnail(demolist[dir_on[menudepthleft]].map, &patch)/4;
|
||||
if (patch == blanklvl && !mapheaderinfo[demolist[dir_on[menudepthleft]].map])
|
||||
if (patch == blanklvl && demolist[dir_on[menudepthleft]].map == NEXTMAP_INVALID)
|
||||
patch = nolvl;
|
||||
|
||||
if (!(demolist[dir_on[menudepthleft]].kartspeed & DF_ENCORE))
|
||||
|
|
|
|||
Loading…
Reference in a new issue