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 */
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);
void Obj_CreateShrinkPohbees(player_t *owner);

View file

@ -429,25 +429,35 @@ void Obj_PohbeeThinker(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;
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);
while (chain != NULL)
chain = gun_chains(gun);
while (chain != NULL && P_MobjWasRemoved(chain) == false)
{
mobj_t *temp = chain;
chain = pohbee_chain(temp);
P_RemoveMobj(temp);
mobj_t *nextChain = gun_chains(chain);
P_RemoveMobj(chain);
chain = nextChain;
}
}
*/
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);
}
if (mobj->type == MT_SHRINK_POHBEE)
{
Obj_PohbeeRemoved(mobj);
}
if (mobj->type == MT_SHRINK_GUN)
{
Obj_ShrinkGunRemoved(mobj);
}
mobj->health = 0; // Just because
// unlink from sector and block lists