mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-13 06:13:18 +00:00
Fix archived mobjs having no default blend mode and sprite scales
This commit is contained in:
parent
d004515d6a
commit
24ba782144
1 changed files with 13 additions and 5 deletions
|
@ -1506,7 +1506,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
||||||
{
|
{
|
||||||
const mobj_t *mobj = (const mobj_t *)th;
|
const mobj_t *mobj = (const mobj_t *)th;
|
||||||
UINT32 diff;
|
UINT32 diff;
|
||||||
UINT16 diff2;
|
UINT32 diff2;
|
||||||
|
|
||||||
// Ignore stationary hoops - these will be respawned from mapthings.
|
// Ignore stationary hoops - these will be respawned from mapthings.
|
||||||
if (mobj->type == MT_HOOP)
|
if (mobj->type == MT_HOOP)
|
||||||
|
@ -1638,7 +1638,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
||||||
diff2 |= MD2_SHADOWSCALE;
|
diff2 |= MD2_SHADOWSCALE;
|
||||||
if (mobj->renderflags)
|
if (mobj->renderflags)
|
||||||
diff2 |= MD2_RENDERFLAGS;
|
diff2 |= MD2_RENDERFLAGS;
|
||||||
if (mobj->renderflags)
|
if (mobj->blendmode != AST_TRANSLUCENT)
|
||||||
diff2 |= MD2_BLENDMODE;
|
diff2 |= MD2_BLENDMODE;
|
||||||
if (mobj->spritexscale != FRACUNIT)
|
if (mobj->spritexscale != FRACUNIT)
|
||||||
diff2 |= MD2_SPRITEXSCALE;
|
diff2 |= MD2_SPRITEXSCALE;
|
||||||
|
@ -1646,6 +1646,8 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
||||||
diff2 |= MD2_SPRITEYSCALE;
|
diff2 |= MD2_SPRITEYSCALE;
|
||||||
if (mobj->spritexoffset)
|
if (mobj->spritexoffset)
|
||||||
diff2 |= MD2_SPRITEXOFFSET;
|
diff2 |= MD2_SPRITEXOFFSET;
|
||||||
|
if (mobj->spriteyoffset)
|
||||||
|
diff2 |= MD2_SPRITEYOFFSET;
|
||||||
if (mobj->floorspriteslope)
|
if (mobj->floorspriteslope)
|
||||||
{
|
{
|
||||||
pslope_t *slope = mobj->floorspriteslope;
|
pslope_t *slope = mobj->floorspriteslope;
|
||||||
|
@ -1667,7 +1669,7 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
||||||
WRITEUINT8(save_p, type);
|
WRITEUINT8(save_p, type);
|
||||||
WRITEUINT32(save_p, diff);
|
WRITEUINT32(save_p, diff);
|
||||||
if (diff & MD_MORE)
|
if (diff & MD_MORE)
|
||||||
WRITEUINT16(save_p, diff2);
|
WRITEUINT32(save_p, diff2);
|
||||||
|
|
||||||
// save pointer, at load time we will search this pointer to reinitilize pointers
|
// save pointer, at load time we will search this pointer to reinitilize pointers
|
||||||
WRITEUINT32(save_p, (size_t)mobj);
|
WRITEUINT32(save_p, (size_t)mobj);
|
||||||
|
@ -2615,14 +2617,14 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
|
||||||
thinker_t *next;
|
thinker_t *next;
|
||||||
mobj_t *mobj;
|
mobj_t *mobj;
|
||||||
UINT32 diff;
|
UINT32 diff;
|
||||||
UINT16 diff2;
|
UINT32 diff2;
|
||||||
INT32 i;
|
INT32 i;
|
||||||
fixed_t z, floorz, ceilingz;
|
fixed_t z, floorz, ceilingz;
|
||||||
ffloor_t *floorrover = NULL, *ceilingrover = NULL;
|
ffloor_t *floorrover = NULL, *ceilingrover = NULL;
|
||||||
|
|
||||||
diff = READUINT32(save_p);
|
diff = READUINT32(save_p);
|
||||||
if (diff & MD_MORE)
|
if (diff & MD_MORE)
|
||||||
diff2 = READUINT16(save_p);
|
diff2 = READUINT32(save_p);
|
||||||
else
|
else
|
||||||
diff2 = 0;
|
diff2 = 0;
|
||||||
|
|
||||||
|
@ -2843,10 +2845,16 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
|
||||||
mobj->renderflags = READUINT32(save_p);
|
mobj->renderflags = READUINT32(save_p);
|
||||||
if (diff2 & MD2_BLENDMODE)
|
if (diff2 & MD2_BLENDMODE)
|
||||||
mobj->blendmode = READINT32(save_p);
|
mobj->blendmode = READINT32(save_p);
|
||||||
|
else
|
||||||
|
mobj->blendmode = AST_TRANSLUCENT;
|
||||||
if (diff2 & MD2_SPRITEXSCALE)
|
if (diff2 & MD2_SPRITEXSCALE)
|
||||||
mobj->spritexscale = READFIXED(save_p);
|
mobj->spritexscale = READFIXED(save_p);
|
||||||
|
else
|
||||||
|
mobj->spritexscale = FRACUNIT;
|
||||||
if (diff2 & MD2_SPRITEYSCALE)
|
if (diff2 & MD2_SPRITEYSCALE)
|
||||||
mobj->spriteyscale = READFIXED(save_p);
|
mobj->spriteyscale = READFIXED(save_p);
|
||||||
|
else
|
||||||
|
mobj->spriteyscale = FRACUNIT;
|
||||||
if (diff2 & MD2_SPRITEXOFFSET)
|
if (diff2 & MD2_SPRITEXOFFSET)
|
||||||
mobj->spritexoffset = READFIXED(save_p);
|
mobj->spritexoffset = READFIXED(save_p);
|
||||||
if (diff2 & MD2_SPRITEYOFFSET)
|
if (diff2 & MD2_SPRITEYOFFSET)
|
||||||
|
|
Loading…
Reference in a new issue