Poison unused exploding walls
This commit is contained in:
parent
d289fec43b
commit
7b08144aee
|
@ -1298,7 +1298,11 @@ array<expl_wall, MAX_EXPLODING_WALLS> expl_wall_list;
|
|||
void init_exploding_walls()
|
||||
{
|
||||
range_for (auto &i, expl_wall_list)
|
||||
{
|
||||
expl_wall *const p = &i;
|
||||
DXX_POISON_MEMORY(reinterpret_cast<uint8_t *>(p), sizeof(*p), 0xfd);
|
||||
i.segnum = segment_none;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1410,7 +1414,11 @@ void do_exploding_wall_frame()
|
|||
);
|
||||
}
|
||||
if (i.time >= EXPL_WALL_TIME)
|
||||
{
|
||||
expl_wall *const p = &i;
|
||||
DXX_POISON_MEMORY(reinterpret_cast<uint8_t *>(p), sizeof(*p), 0xfd);
|
||||
i.segnum = segment_none; //flag this slot as free
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1089,13 +1089,23 @@ int state_save_all_sub(const char *filename, const char *desc)
|
|||
const int i = expl_wall_list.size();
|
||||
PHYSFS_write(fp, &i, sizeof(int), 1);
|
||||
}
|
||||
{
|
||||
const disk_expl_wall None{-1, 0, 0};
|
||||
range_for (auto &e, expl_wall_list)
|
||||
{
|
||||
disk_expl_wall d;
|
||||
const disk_expl_wall *i;
|
||||
if (e.segnum == segment_none)
|
||||
i = &None;
|
||||
else
|
||||
{
|
||||
i = &d;
|
||||
d.segnum = e.segnum;
|
||||
d.sidenum = e.sidenum;
|
||||
d.time = e.time;
|
||||
PHYSFS_write(fp, &d, sizeof(d), 1);
|
||||
}
|
||||
PHYSFS_write(fp, i, sizeof(d), 1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue