Cleanup objects properly

This commit is contained in:
Sally Coolatta 2022-09-15 20:03:32 -04:00
parent eda9e0cd9d
commit cb2d2cb2ba
3 changed files with 31 additions and 9 deletions

View file

@ -10,6 +10,8 @@ void Obj_HyudoroCollide(mobj_t *special, mobj_t *toucher);
/* Shrink */ /* Shrink */
void Obj_PohbeeThinker(mobj_t *pohbee); void Obj_PohbeeThinker(mobj_t *pohbee);
void Obj_PohbeeRemoved(mobj_t *pohbee);
void Obj_ShrinkGunRemoved(mobj_t *gun);
boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim); boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim);
void Obj_CreateShrinkPohbees(player_t *owner); void Obj_CreateShrinkPohbees(player_t *owner);

View file

@ -429,25 +429,35 @@ void Obj_PohbeeThinker(mobj_t *pohbee)
} }
} }
/*
void Obj_PohbeeRemoved(mobj_t *pohbee) void Obj_PohbeeRemoved(mobj_t *pohbee)
{
mobj_t *gun = pohbee_guns(pohbee);
while (gun != NULL && P_MobjWasRemoved(gun) == false)
{
mobj_t *nextGun = pohbee_guns(gun);
P_RemoveMobj(gun);
gun = nextGun;
}
}
void Obj_ShrinkGunRemoved(mobj_t *gun)
{ {
mobj_t *chain = NULL; mobj_t *chain = NULL;
if (pohbee_guns(pohbee) != NULL) if (gun_laser(gun) != NULL && P_MobjWasRemoved(gun_laser(gun)) == false)
{ {
P_RemoveMobj(pohbee_laser(pohbee)); P_RemoveMobj(gun_laser(gun));
} }
chain = pohbee_chain(pohbee); chain = gun_chains(gun);
while (chain != NULL) while (chain != NULL && P_MobjWasRemoved(chain) == false)
{ {
mobj_t *temp = chain; mobj_t *nextChain = gun_chains(chain);
chain = pohbee_chain(temp); P_RemoveMobj(chain);
P_RemoveMobj(temp); chain = nextChain;
} }
} }
*/
boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim) boolean Obj_ShrinkLaserCollide(mobj_t *gun, mobj_t *victim)
{ {

View file

@ -10656,6 +10656,16 @@ void P_RemoveMobj(mobj_t *mobj)
P_SetTarget(&mobj->player->followmobj, NULL); P_SetTarget(&mobj->player->followmobj, NULL);
} }
if (mobj->type == MT_SHRINK_POHBEE)
{
Obj_PohbeeRemoved(mobj);
}
if (mobj->type == MT_SHRINK_GUN)
{
Obj_ShrinkGunRemoved(mobj);
}
mobj->health = 0; // Just because mobj->health = 0; // Just because
// unlink from sector and block lists // unlink from sector and block lists