broken spectator stuff?

This commit is contained in:
fickleheart 2019-01-27 16:23:34 -06:00
parent 26770c5103
commit 3cec3d9658
2 changed files with 15 additions and 5 deletions

View File

@ -4483,6 +4483,8 @@ char *G_BuildMapTitle(INT32 mapnum)
#define DF_ATTACKSHIFT 1
#define DF_MULTIPLAYER 0x80 // This demo contains a dynamic number of players!
#define DEMO_SPECTATOR 0x40
// For demos
#define ZT_FWD 0x01
#define ZT_SIDE 0x02
@ -5498,10 +5500,10 @@ void G_BeginRecording(void)
// Now store a SIMPLIFIED data struct for each in-game player
for (p = 0; p < MAXPLAYERS; p++) {
if (playeringame[p] && !players[p].spectator) {
if (playeringame[p]) {
player = &players[p];
WRITEUINT8(demo_p, p);
WRITEUINT8(demo_p, p | (player->spectator ? DEMO_SPECTATOR : 0));
// Name
memset(name, 0, 16);
@ -5991,15 +5993,23 @@ void G_DoPlayDemo(char *defdemoname)
if (multiplayer) {
player_t *player;
boolean spectator;
// Load players that were in-game when the map started
p = READUINT8(demo_p);
while (p != 0xFF)
{
if (!playeringame[displayplayer])
spectator = false;
if (p & DEMO_SPECTATOR) {
spectator = true;
p &= ~DEMO_SPECTATOR;
}
if (!playeringame[displayplayer] || players[displayplayer].spectator)
displayplayer = consoleplayer = p;
playeringame[p] = true;
players[p].spectator = spectator;
// Name
M_Memcpy(player_names[p],demo_p,16);

View File

@ -604,7 +604,7 @@ void P_Ticker(boolean run)
G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0);
} else {
for (i = 0; i < MAXPLAYERS; i++)
if (playeringame[i] && !players[i].spectator)
if (playeringame[i])
G_WriteDemoTiccmd(&players[i].cmd, i);
}
}
@ -615,7 +615,7 @@ void P_Ticker(boolean run)
G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0);
} else {
for (i = 0; i < MAXPLAYERS; i++)
if (playeringame[i] && !players[i].spectator)
if (playeringame[i])
G_ReadDemoTiccmd(&players[i].cmd, i);
}
}