mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-22 11:22:18 -04:00
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:
parent
dd4e2b55b6
commit
63e625e295
117
src/p_saveg.c
117
src/p_saveg.c
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user