Merge branch 'replay-height-fix' into 'next'

Made height/spinheight and height change values in replays more accurate

See merge request STJr/SRB2!1241
This commit is contained in:
James R 2020-11-22 17:25:41 -05:00
commit 92625483a4

View file

@ -453,8 +453,7 @@ void G_WriteGhostTic(mobj_t *ghost)
WRITEUINT16(demo_p,oldghost.sprite); WRITEUINT16(demo_p,oldghost.sprite);
if (ghostext.flags & EZT_HEIGHT) if (ghostext.flags & EZT_HEIGHT)
{ {
height >>= FRACBITS; WRITEFIXED(demo_p, height);
WRITEINT16(demo_p, height);
} }
ghostext.flags = 0; ghostext.flags = 0;
} }
@ -610,7 +609,7 @@ void G_ConsGhostTic(void)
if (xziptic & EZT_SPRITE) if (xziptic & EZT_SPRITE)
demo_p += sizeof(UINT16); demo_p += sizeof(UINT16);
if (xziptic & EZT_HEIGHT) if (xziptic & EZT_HEIGHT)
demo_p += sizeof(INT16); demo_p += (demoversion < 0x000e) ? sizeof(INT16) : sizeof(fixed_t);
} }
if (ziptic & GZT_FOLLOW) if (ziptic & GZT_FOLLOW)
@ -842,7 +841,7 @@ void G_GhostTicker(void)
g->mo->sprite = READUINT16(g->p); g->mo->sprite = READUINT16(g->p);
if (xziptic & EZT_HEIGHT) if (xziptic & EZT_HEIGHT)
{ {
fixed_t temp = READINT16(g->p)<<FRACBITS; fixed_t temp = (g->version < 0x000e) ? READINT16(g->p)<<FRACBITS : READFIXED(g->p);
g->mo->height = FixedMul(temp, g->mo->scale); g->mo->height = FixedMul(temp, g->mo->scale);
} }
} }
@ -1106,7 +1105,7 @@ void G_ReadMetalTic(mobj_t *metal)
metal->sprite = READUINT16(metal_p); metal->sprite = READUINT16(metal_p);
if (xziptic & EZT_HEIGHT) if (xziptic & EZT_HEIGHT)
{ {
fixed_t temp = READINT16(metal_p)<<FRACBITS; fixed_t temp = (metalversion < 0x000e) ? READINT16(metal_p)<<FRACBITS : READFIXED(metal_p);
metal->height = FixedMul(temp, metal->scale); metal->height = FixedMul(temp, metal->scale);
} }
} }
@ -1293,8 +1292,7 @@ void G_WriteMetalTic(mobj_t *metal)
WRITEUINT16(demo_p,oldmetal.sprite); WRITEUINT16(demo_p,oldmetal.sprite);
if (ghostext.flags & EZT_HEIGHT) if (ghostext.flags & EZT_HEIGHT)
{ {
height >>= FRACBITS; WRITEFIXED(demo_p, height);
WRITEINT16(demo_p, height);
} }
ghostext.flags = 0; ghostext.flags = 0;
} }
@ -1474,8 +1472,8 @@ void G_BeginRecording(void)
WRITEUINT8(demo_p,player->thrustfactor); WRITEUINT8(demo_p,player->thrustfactor);
WRITEUINT8(demo_p,player->accelstart); WRITEUINT8(demo_p,player->accelstart);
WRITEUINT8(demo_p,player->acceleration); WRITEUINT8(demo_p,player->acceleration);
WRITEUINT8(demo_p,player->height>>FRACBITS); WRITEFIXED(demo_p,player->height);
WRITEUINT8(demo_p,player->spinheight>>FRACBITS); WRITEFIXED(demo_p,player->spinheight);
WRITEUINT8(demo_p,player->camerascale>>FRACBITS); WRITEUINT8(demo_p,player->camerascale>>FRACBITS);
WRITEUINT8(demo_p,player->shieldscale>>FRACBITS); WRITEUINT8(demo_p,player->shieldscale>>FRACBITS);
@ -1901,8 +1899,8 @@ void G_DoPlayDemo(char *defdemoname)
thrustfactor = READUINT8(demo_p); thrustfactor = READUINT8(demo_p);
accelstart = READUINT8(demo_p); accelstart = READUINT8(demo_p);
acceleration = READUINT8(demo_p); acceleration = READUINT8(demo_p);
height = (fixed_t)READUINT8(demo_p)<<FRACBITS; height = (demoversion < 0x000e) ? (fixed_t)READUINT8(demo_p)<<FRACBITS : READFIXED(demo_p);
spinheight = (fixed_t)READUINT8(demo_p)<<FRACBITS; spinheight = (demoversion < 0x000e) ? (fixed_t)READUINT8(demo_p)<<FRACBITS : READFIXED(demo_p);
camerascale = (fixed_t)READUINT8(demo_p)<<FRACBITS; camerascale = (fixed_t)READUINT8(demo_p)<<FRACBITS;
shieldscale = (fixed_t)READUINT8(demo_p)<<FRACBITS; shieldscale = (fixed_t)READUINT8(demo_p)<<FRACBITS;
jumpfactor = READFIXED(demo_p); jumpfactor = READFIXED(demo_p);
@ -2150,8 +2148,7 @@ void G_AddGhost(char *defdemoname)
p++; // thrustfactor p++; // thrustfactor
p++; // accelstart p++; // accelstart
p++; // acceleration p++; // acceleration
p++; // height p += (ghostversion < 0x000e) ? 2 : 2 * sizeof(fixed_t); // height and spinheight
p++; // spinheight
p++; // camerascale p++; // camerascale
p++; // shieldscale p++; // shieldscale
p += 4; // jumpfactor p += 4; // jumpfactor