Savegame floorrover fixes

This commit is contained in:
mazmazz 2018-09-10 00:07:22 -04:00
parent dd35871699
commit 03d1baf422

View file

@ -1199,11 +1199,11 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
WRITEFIXED(save_p, mobj->floorz); WRITEFIXED(save_p, mobj->floorz);
WRITEFIXED(save_p, mobj->ceilingz); WRITEFIXED(save_p, mobj->ceilingz);
if (diff & MD2_FLOORROVER) if (diff2 & MD2_FLOORROVER)
{ {
ffloor_t *rover; ffloor_t *rover;
size_t i = 0; size_t i = 0;
INT32 roverindex = -1; UINT32 roverindex = 0;
for (rover = mobj->floorrover->target->ffloors; rover; rover = rover->next) for (rover = mobj->floorrover->target->ffloors; rover; rover = rover->next)
{ {
@ -1216,14 +1216,14 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
} }
WRITEUINT32(save_p, (UINT32)(mobj->floorrover->target - sectors)); WRITEUINT32(save_p, (UINT32)(mobj->floorrover->target - sectors));
WRITEUINT32(save_p, (UINT32)roverindex); WRITEUINT32(save_p, rover ? roverindex : i); // store max index to denote invalid ffloor ref
} }
if (diff & MD2_CEILINGROVER) if (diff2 & MD2_CEILINGROVER)
{ {
ffloor_t *rover; ffloor_t *rover;
size_t i = 0; size_t i = 0;
INT32 roverindex = -1; UINT32 roverindex = 0;
for (rover = mobj->ceilingrover->target->ffloors; rover; rover = rover->next) for (rover = mobj->ceilingrover->target->ffloors; rover; rover = rover->next)
{ {
@ -1235,8 +1235,8 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
i++; i++;
} }
WRITEUINT32(save_p, mobj->ceilingrover->target - sectors); WRITEUINT32(save_p, (UINT32)(mobj->ceilingrover->target - sectors));
WRITEUINT32(save_p, roverindex); WRITEUINT32(save_p, rover ? roverindex : i); // store max index to denote invalid ffloor ref
} }
if (diff & MD_SPAWNPOINT) if (diff & MD_SPAWNPOINT)