This commit is contained in:
parent
99331b14f9
commit
9fe426e4fd
5 changed files with 50 additions and 36 deletions
|
@ -732,6 +732,8 @@ void CNpcEnemy::init()
|
|||
setCollisionCentreOffset( 0, -( ofs.vy >> 1 ) );
|
||||
|
||||
m_positionHistory = NULL;
|
||||
|
||||
m_isShuttingDown = false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -777,6 +779,10 @@ void CNpcEnemy::reinit()
|
|||
|
||||
void CNpcEnemy::shutdown()
|
||||
{
|
||||
if ( !m_isShuttingDown )
|
||||
{
|
||||
m_isShuttingDown = true;
|
||||
|
||||
if (m_spriteBank) m_spriteBank->dump(); delete m_spriteBank;
|
||||
// remove waypoints
|
||||
|
||||
|
@ -804,6 +810,7 @@ void CNpcEnemy::shutdown()
|
|||
deleteAllChild();
|
||||
|
||||
CEnemyThing::shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -355,6 +355,8 @@ protected:
|
|||
|
||||
virtual void collidedWith(CThing *_thisThing);
|
||||
|
||||
u8 m_isShuttingDown;
|
||||
|
||||
// position history stuff
|
||||
|
||||
class CNpcPositionHistory
|
||||
|
|
|
@ -64,6 +64,7 @@ void CProjectile::init()
|
|||
m_state = PROJECTILE_ATTACK;
|
||||
m_turnSpeed = 256;
|
||||
m_extension = 0;
|
||||
m_isShuttingDown = false;
|
||||
}
|
||||
|
||||
void CProjectile::init( DVECTOR initPos, s16 initHeading )
|
||||
|
@ -91,9 +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;
|
||||
|
||||
CEnemyProjectileThing::shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
bool CProjectile::processTargetSeek( int _frames, DVECTOR targetPos )
|
||||
|
@ -237,7 +243,6 @@ void CProjectile::think(int _frames)
|
|||
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -298,7 +303,6 @@ void CProjectile::think(int _frames)
|
|||
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -317,7 +321,6 @@ void CProjectile::think(int _frames)
|
|||
if ( m_lifetime <= 0 )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -373,7 +376,6 @@ void CProjectile::collidedWith(CThing *_thisThing)
|
|||
if ( m_lifetimeType != PROJECTILE_INFINITE_LIFE )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -434,9 +436,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;
|
||||
|
||||
CPlayerProjectileThing::shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
void CPlayerProjectile::setMovementType( PLAYER_PROJECTILE_MOVEMENT_TYPE moveType )
|
||||
|
@ -478,7 +485,6 @@ void CPlayerProjectile::think(int _frames)
|
|||
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -497,7 +503,6 @@ void CPlayerProjectile::think(int _frames)
|
|||
if ( m_lifetime <= 0 )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,6 +75,7 @@ protected:
|
|||
PROJECTILE_LIFETIME_TYPE m_lifetimeType;
|
||||
PROJECTILE_STATE m_state;
|
||||
u16 m_turnSpeed;
|
||||
u8 m_isShuttingDown;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -125,6 +126,7 @@ protected:
|
|||
int m_frame;
|
||||
POLY_FT4 *SprFrame;
|
||||
u8 m_reversed;
|
||||
u8 m_isShuttingDown;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -360,13 +360,11 @@ void CThingManager::addToThingList(CThing *_this)
|
|||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
int testTypeGit;
|
||||
void CThingManager::removeFromThingList(CThing *_this)
|
||||
{
|
||||
CThing *prevThing,*thing;
|
||||
|
||||
prevThing=NULL;
|
||||
testTypeGit = _this->getThingType();
|
||||
thing=s_thingLists[_this->getThingType()];
|
||||
while(thing!=_this)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue