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