savegame fixes (#1376)

* restore function pointer reading

There seems to be a check for NULL somewhere.

* remove saveg_compat checks in write function, formatting
This commit is contained in:
Roman Fomin 2024-01-06 17:40:03 +07:00 committed by GitHub
parent dd4e2b55b6
commit 63e625e295
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -264,8 +264,7 @@ static void saveg_read_thinker_t(thinker_t *str)
str->next = saveg_readp();
// think_t function;
saveg_readp();
str->function.v = NULL;
str->function.v = (actionf_v)saveg_readp();
// struct thinker_s* cnext;
str->cnext = saveg_readp();
@ -384,12 +383,12 @@ static void saveg_read_mobj_t(mobj_t *str)
if (saveg_compat > saveg_woof510)
{
// [Woof!]: mbf21: int flags2;
str->flags2 = saveg_read32();
// [Woof!]: mbf21: int flags2;
str->flags2 = saveg_read32();
}
else
{
str->flags2 = mobjinfo[str->type].flags2;
str->flags2 = mobjinfo[str->type].flags2;
}
// int intflags
@ -448,11 +447,11 @@ static void saveg_read_mobj_t(mobj_t *str)
if (saveg_compat > saveg_mbf)
{
// [Woof!]: int friction;
str->friction = saveg_read32();
// [Woof!]: int friction;
str->friction = saveg_read32();
// [Woof!]: int movefactor;
str->movefactor = saveg_read32();
// [Woof!]: int movefactor;
str->movefactor = saveg_read32();
}
else
{
@ -465,20 +464,20 @@ static void saveg_read_mobj_t(mobj_t *str)
if (saveg_compat > saveg_mbf)
{
// [Woof!]: int interp;
str->interp = saveg_read32();
// [Woof!]: int interp;
str->interp = saveg_read32();
// [Woof!]: fixed_t oldx;
str->oldx = saveg_read32();
// [Woof!]: fixed_t oldx;
str->oldx = saveg_read32();
// [Woof!]: fixed_t oldy;
str->oldy = saveg_read32();
// [Woof!]: fixed_t oldy;
str->oldy = saveg_read32();
// [Woof!]: fixed_t oldz;
str->oldz = saveg_read32();
// [Woof!]: fixed_t oldz;
str->oldz = saveg_read32();
// [Woof!]: angle_t oldangle;
str->oldangle = saveg_read32();
// [Woof!]: angle_t oldangle;
str->oldangle = saveg_read32();
}
else
{
@ -491,12 +490,12 @@ static void saveg_read_mobj_t(mobj_t *str)
if (saveg_compat > saveg_woof510)
{
// [Woof!]: int bloodcolor;
str->bloodcolor = saveg_read32();
// [Woof!]: int bloodcolor;
str->bloodcolor = saveg_read32();
}
else
{
str->bloodcolor = 0;
str->bloodcolor = 0;
}
// [FG] height of the sprite in pixels
@ -583,11 +582,8 @@ static void saveg_write_mobj_t(mobj_t *str)
// int flags;
saveg_write32(str->flags);
if (saveg_compat > saveg_woof510)
{
// [Woof!]: mbf21: int flags2;
saveg_write32(str->flags2);
}
// int intflags;
saveg_write32(str->intflags);
@ -667,11 +663,8 @@ static void saveg_write_mobj_t(mobj_t *str)
// [Woof!]: int oldangle;
saveg_write32(str->oldangle);
if (saveg_compat > saveg_woof510)
{
// [Woof!]: int bloodcolor;
saveg_write32(str->bloodcolor);
}
}
//
@ -752,11 +745,11 @@ static void saveg_read_pspdef_t(pspdef_t *str)
if (saveg_compat > saveg_mbf)
{
// [Woof!]: fixed_t sx2;
str->sx2 = saveg_read32();
// [Woof!]: fixed_t sx2;
str->sx2 = saveg_read32();
// [Woof!]: fixed_t sy2;
str->sy2 = saveg_read32();
// [Woof!]: fixed_t sy2;
str->sy2 = saveg_read32();
}
else
{
@ -767,7 +760,6 @@ static void saveg_read_pspdef_t(pspdef_t *str)
static void saveg_write_pspdef_t(pspdef_t *str)
{
// state_t* state;
if (str->state)
{
saveg_write32(str->state - states);
@ -839,13 +831,13 @@ static void saveg_read_player_t(player_t *str)
str->armortype = saveg_read32();
// int powers[NUMPOWERS];
for (i=0; i<NUMPOWERS; ++i)
for (i = 0; i < NUMPOWERS; ++i)
{
str->powers[i] = saveg_read32();
}
// boolean cards[NUMCARDS];
for (i=0; i<NUMCARDS; ++i)
for (i = 0; i < NUMCARDS; ++i)
{
str->cards[i] = saveg_read32();
}
@ -854,7 +846,7 @@ static void saveg_read_player_t(player_t *str)
str->backpack = saveg_read32();
// int frags[MAXPLAYERS];
for (i=0; i<MAXPLAYERS; ++i)
for (i = 0; i < MAXPLAYERS; ++i)
{
str->frags[i] = saveg_read32();
}
@ -866,19 +858,19 @@ static void saveg_read_player_t(player_t *str)
str->pendingweapon = saveg_read_enum();
// boolean weaponowned[NUMWEAPONS];
for (i=0; i<NUMWEAPONS; ++i)
for (i = 0; i < NUMWEAPONS; ++i)
{
str->weaponowned[i] = saveg_read32();
}
// int ammo[NUMAMMO];
for (i=0; i<NUMAMMO; ++i)
for (i = 0; i < NUMAMMO; ++i)
{
str->ammo[i] = saveg_read32();
}
// int maxammo[NUMAMMO];
for (i=0; i<NUMAMMO; ++i)
for (i = 0; i < NUMAMMO; ++i)
{
str->maxammo[i] = saveg_read32();
}
@ -926,7 +918,7 @@ static void saveg_read_player_t(player_t *str)
str->colormap = saveg_read32();
// pspdef_t psprites[NUMPSPRITES];
for (i=0; i<NUMPSPRITES; ++i)
for (i = 0; i < NUMPSPRITES; ++i)
{
saveg_read_pspdef_t(&str->psprites[i]);
}
@ -939,12 +931,12 @@ static void saveg_read_player_t(player_t *str)
if (saveg_compat > saveg_mbf)
{
// [Woof!]: angle_t oldviewz;
str->oldviewz = saveg_read32();
// [Woof!]: angle_t oldviewz;
str->oldviewz = saveg_read32();
}
else
{
str->oldviewz = 0;
str->oldviewz = 0;
}
}
@ -989,13 +981,13 @@ static void saveg_write_player_t(player_t *str)
saveg_write32(str->armortype);
// int powers[NUMPOWERS];
for (i=0; i<NUMPOWERS; ++i)
for (i = 0; i < NUMPOWERS; ++i)
{
saveg_write32(str->powers[i]);
}
// boolean cards[NUMCARDS];
for (i=0; i<NUMCARDS; ++i)
for (i = 0; i < NUMCARDS; ++i)
{
saveg_write32(str->cards[i]);
}
@ -1004,7 +996,7 @@ static void saveg_write_player_t(player_t *str)
saveg_write32(str->backpack);
// int frags[MAXPLAYERS];
for (i=0; i<MAXPLAYERS; ++i)
for (i = 0; i < MAXPLAYERS; ++i)
{
saveg_write32(str->frags[i]);
}
@ -1016,19 +1008,19 @@ static void saveg_write_player_t(player_t *str)
saveg_write_enum(str->pendingweapon);
// boolean weaponowned[NUMWEAPONS];
for (i=0; i<NUMWEAPONS; ++i)
for (i = 0; i < NUMWEAPONS; ++i)
{
saveg_write32(str->weaponowned[i]);
}
// int ammo[NUMAMMO];
for (i=0; i<NUMAMMO; ++i)
for (i = 0; i < NUMAMMO; ++i)
{
saveg_write32(str->ammo[i]);
}
// int maxammo[NUMAMMO];
for (i=0; i<NUMAMMO; ++i)
for (i = 0; i < NUMAMMO; ++i)
{
saveg_write32(str->maxammo[i]);
}
@ -1076,7 +1068,7 @@ static void saveg_write_player_t(player_t *str)
saveg_write32(str->colormap);
// pspdef_t psprites[NUMPSPRITES];
for (i=0; i<NUMPSPRITES; ++i)
for (i = 0; i < NUMPSPRITES; ++i)
{
saveg_write_pspdef_t(&str->psprites[i]);
}
@ -1204,7 +1196,7 @@ static void saveg_write_ceiling_t(ceiling_t *str)
static void saveg_read_vldoor_t(vldoor_t *str)
{
int sector;
int sector, line;
// thinker_t thinker;
saveg_read_thinker_t(&str->thinker);
@ -1232,7 +1224,16 @@ static void saveg_read_vldoor_t(vldoor_t *str)
str->topcountdown = saveg_read32();
// line_t *line;
str->line = saveg_readp();
//jff 1/31/98 unarchive line remembered by door as well
line = saveg_read32();
if (line == -1)
{
str->line = NULL;
}
else
{
str->line = &lines[line];
}
// int lighttag;
str->lighttag = saveg_read32();
@ -1267,9 +1268,13 @@ static void saveg_write_vldoor_t(vldoor_t *str)
// line_t *line;
//jff 1/31/98 archive line remembered by door as well
if (str->line)
saveg_write32(str->line - lines);
{
saveg_write32(str->line - lines);
}
else
saveg_write32(-1);
{
saveg_write32(-1);
}
// int lighttag;
saveg_write32(str->lighttag);
@ -2593,10 +2598,6 @@ void P_UnArchiveSpecials (void)
{
vldoor_t *door = Z_Malloc (sizeof(*door), PU_LEVEL, NULL);
saveg_read_vldoor_t(door);
//jff 1/31/98 unarchive line remembered by door as well
door->line = (intptr_t)door->line!=-1? &lines[(size_t)door->line] : NULL;
door->sector->ceilingdata = door; //jff 2/22/98
door->thinker.function.p1 = (actionf_p1)T_VerticalDoor;
P_AddThinker (&door->thinker);