This commit is contained in:
Charles 2001-04-25 19:52:35 +00:00
parent e91b911639
commit a96fa4bb92
4 changed files with 40 additions and 18 deletions

View File

@ -92,14 +92,14 @@ void CProjectile::init( DVECTOR initPos, s16 initHeading, PROJECTILE_MOVEMENT_TY
void CProjectile::shutdown()
{
if ( !m_isShuttingDown )
{
m_isShuttingDown = true;
m_spriteBank->dump(); delete m_spriteBank;
m_spriteBank->dump(); delete m_spriteBank;
CEnemyProjectileThing::shutdown();
}
CEnemyProjectileThing::shutdown();
}
void CProjectile::setToShutdown()
{
m_isShuttingDown = true;
}
bool CProjectile::processTargetSeek( int _frames, DVECTOR targetPos )
@ -242,7 +242,7 @@ void CProjectile::think(int _frames)
{
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
{
shutdown();
setToShutdown();
}
else
{
@ -302,7 +302,7 @@ void CProjectile::think(int _frames)
{
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
{
shutdown();
setToShutdown();
}
else
{
@ -320,7 +320,7 @@ void CProjectile::think(int _frames)
if ( m_lifetime <= 0 )
{
shutdown();
setToShutdown();
}
}
}
@ -375,7 +375,7 @@ void CProjectile::collidedWith(CThing *_thisThing)
if ( m_lifetimeType != PROJECTILE_INFINITE_LIFE )
{
shutdown();
setToShutdown();
}
break;
@ -437,14 +437,14 @@ void CPlayerProjectile::init( DVECTOR initPos, s16 initHeading, PLAYER_PROJECTIL
void CPlayerProjectile::shutdown()
{
if ( !m_isShuttingDown )
{
m_isShuttingDown = true;
m_spriteBank->dump(); delete m_spriteBank;
m_spriteBank->dump(); delete m_spriteBank;
CPlayerProjectileThing::shutdown();
}
CPlayerProjectileThing::shutdown();
}
void CPlayerProjectile::setToShutdown()
{
m_isShuttingDown = true;
}
void CPlayerProjectile::setMovementType( PLAYER_PROJECTILE_MOVEMENT_TYPE moveType )
@ -485,7 +485,7 @@ void CPlayerProjectile::think(int _frames)
{
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
{
shutdown();
setToShutdown();
}
else
{
@ -503,7 +503,7 @@ void CPlayerProjectile::think(int _frames)
if ( m_lifetime <= 0 )
{
shutdown();
setToShutdown();
}
}
}

View File

@ -48,6 +48,8 @@ public:
void init( DVECTOR initPos, s16 initHeading, PROJECTILE_MOVEMENT_TYPE initMoveType, PROJECTILE_LIFETIME_TYPE initLifeType );
void init( DVECTOR initPos, s16 initHeading, PROJECTILE_MOVEMENT_TYPE initMoveType, PROJECTILE_LIFETIME_TYPE initLifeType, s32 initLifetime );
void shutdown();
void setToShutdown();
u8 isSetToShutdown() {return( m_isShuttingDown );}
void think(int _frames);
virtual void render();
void processEvent( GAME_EVENT evt, CThing *sourceThing );
@ -99,6 +101,8 @@ public:
void init( DVECTOR initPos, s16 initHeading, PLAYER_PROJECTILE_MOVEMENT_TYPE initMoveType, PLAYER_PROJECTILE_LIFETIME_TYPE initLifeType );
void init( DVECTOR initPos, s16 initHeading, PLAYER_PROJECTILE_MOVEMENT_TYPE initMoveType, PLAYER_PROJECTILE_LIFETIME_TYPE initLifeType, s32 initLifetime );
void shutdown();
void setToShutdown();
u8 isSetToShutdown() {return( m_isShuttingDown );}
void think(int _frames);
virtual void render();
void processEvent( GAME_EVENT evt, CThing *sourceThing );

View File

@ -254,6 +254,23 @@ void CThingManager::thinkAllThings(int _frames)
thing1 = thing1->m_nextThing;
}
for(i=0;i<CThing::MAX_TYPE;i++)
{
thing=s_thingLists[i];
CThing *nextThing = thing;
while(thing)
{
nextThing=thing->m_nextThing;
if ( thing->isSetToShutdown() )
{
thing->shutdown();
delete thing;
}
thing = nextThing;
}
}
}
/*----------------------------------------------------------------------

View File

@ -101,6 +101,7 @@ public:
virtual void shutdown();
virtual void think(int _frames);
virtual void render();
virtual u8 isSetToShutdown() {return( false );}
// Linkage
void addChild(CThing *Child);