This commit is contained in:
parent
bba045f5e1
commit
e31bf10670
4 changed files with 24 additions and 7 deletions
|
@ -229,6 +229,8 @@ void CNpcAnemone2Enemy::postInit()
|
||||||
SetIdentNoTrans(&mtx );
|
SetIdentNoTrans(&mtx );
|
||||||
RotMatrixZ( m_heading, &mtx );
|
RotMatrixZ( m_heading, &mtx );
|
||||||
|
|
||||||
|
m_radius = 0;
|
||||||
|
|
||||||
for ( int fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
|
for ( int fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
|
||||||
{
|
{
|
||||||
DVECTOR spikePos;
|
DVECTOR spikePos;
|
||||||
|
@ -252,8 +254,8 @@ void CNpcAnemone2Enemy::postInit()
|
||||||
|
|
||||||
// move appropriate to scaling (anemone origin is 90 degrees off, hence:)
|
// move appropriate to scaling (anemone origin is 90 degrees off, hence:)
|
||||||
|
|
||||||
xDiff = ( m_scaleY * SPIKE_RADIUS ) >> 12;
|
xDiff = ( m_scaleY * m_radius ) >> 12;
|
||||||
yDiff = ( m_scaleX * SPIKE_RADIUS ) >> 12;
|
yDiff = ( m_scaleX * m_radius ) >> 12;
|
||||||
|
|
||||||
offset.vx = ( xDiff * rcos( relativeHeading ) ) >> 12;
|
offset.vx = ( xDiff * rcos( relativeHeading ) ) >> 12;
|
||||||
offset.vy = ( yDiff * rsin( relativeHeading ) ) >> 12;
|
offset.vy = ( yDiff * rsin( relativeHeading ) ) >> 12;
|
||||||
|
@ -266,6 +268,7 @@ void CNpcAnemone2Enemy::postInit()
|
||||||
projectile = new( "anemone lev2 projectile" ) CProjectile;
|
projectile = new( "anemone lev2 projectile" ) CProjectile;
|
||||||
projectile->init( spikePos, heading, CProjectile::PROJECTILE_FIXED, CProjectile::PROJECTILE_INFINITE_LIFE );
|
projectile->init( spikePos, heading, CProjectile::PROJECTILE_FIXED, CProjectile::PROJECTILE_INFINITE_LIFE );
|
||||||
projectile->setLayerCollision( m_layerCollision );
|
projectile->setLayerCollision( m_layerCollision );
|
||||||
|
projectile->setOt( 15 );
|
||||||
|
|
||||||
addChild( projectile );
|
addChild( projectile );
|
||||||
}
|
}
|
||||||
|
@ -429,6 +432,7 @@ void CNpcAnemone2Enemy::processClose( int _frames )
|
||||||
projectile->setMovementType( CProjectile::PROJECTILE_DUMBFIRE );
|
projectile->setMovementType( CProjectile::PROJECTILE_DUMBFIRE );
|
||||||
projectile->setLifeTime( CProjectile::PROJECTILE_FINITE_LIFE );
|
projectile->setLifeTime( CProjectile::PROJECTILE_FINITE_LIFE );
|
||||||
projectile->setState( CProjectile::PROJECTILE_ATTACK );
|
projectile->setState( CProjectile::PROJECTILE_ATTACK );
|
||||||
|
projectile->setOt( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
nextThing = nextThing->getNext();
|
nextThing = nextThing->getNext();
|
||||||
|
@ -436,6 +440,8 @@ void CNpcAnemone2Enemy::processClose( int _frames )
|
||||||
|
|
||||||
removeAllChild();
|
removeAllChild();
|
||||||
|
|
||||||
|
m_radius = 0;
|
||||||
|
|
||||||
// attach new spikes
|
// attach new spikes
|
||||||
|
|
||||||
MATRIX mtx;
|
MATRIX mtx;
|
||||||
|
@ -465,8 +471,8 @@ void CNpcAnemone2Enemy::processClose( int _frames )
|
||||||
|
|
||||||
// move appropriate to scaling (anemone origin is 90 degrees off, hence:)
|
// move appropriate to scaling (anemone origin is 90 degrees off, hence:)
|
||||||
|
|
||||||
xDiff = ( m_scaleY * SPIKE_RADIUS ) >> 12;
|
xDiff = ( m_scaleY * m_radius ) >> 12;
|
||||||
yDiff = ( m_scaleX * SPIKE_RADIUS ) >> 12;
|
yDiff = ( m_scaleX * m_radius ) >> 12;
|
||||||
|
|
||||||
offset.vx = ( xDiff * rcos( relativeHeading ) ) >> 12;
|
offset.vx = ( xDiff * rcos( relativeHeading ) ) >> 12;
|
||||||
offset.vy = ( yDiff * rsin( relativeHeading ) ) >> 12;
|
offset.vy = ( yDiff * rsin( relativeHeading ) ) >> 12;
|
||||||
|
@ -479,6 +485,7 @@ void CNpcAnemone2Enemy::processClose( int _frames )
|
||||||
projectile = new( "anemone lev2 projectile" ) CProjectile;
|
projectile = new( "anemone lev2 projectile" ) CProjectile;
|
||||||
projectile->init( spikePos, heading, CProjectile::PROJECTILE_FIXED, CProjectile::PROJECTILE_INFINITE_LIFE );
|
projectile->init( spikePos, heading, CProjectile::PROJECTILE_FIXED, CProjectile::PROJECTILE_INFINITE_LIFE );
|
||||||
projectile->setLayerCollision( m_layerCollision );
|
projectile->setLayerCollision( m_layerCollision );
|
||||||
|
projectile->setOt( 15 );
|
||||||
|
|
||||||
addChild( projectile );
|
addChild( projectile );
|
||||||
}
|
}
|
||||||
|
@ -515,6 +522,11 @@ void CNpcAnemone2Enemy::processMovementModifier( int _frames, s32 distX, s32 dis
|
||||||
SetIdentNoTrans(&mtx );
|
SetIdentNoTrans(&mtx );
|
||||||
RotMatrixZ( m_heading, &mtx );
|
RotMatrixZ( m_heading, &mtx );
|
||||||
|
|
||||||
|
if ( m_radius < SPIKE_RADIUS )
|
||||||
|
{
|
||||||
|
m_radius++;
|
||||||
|
}
|
||||||
|
|
||||||
for ( int fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
|
for ( int fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
|
||||||
{
|
{
|
||||||
DVECTOR spikePos;
|
DVECTOR spikePos;
|
||||||
|
@ -537,8 +549,8 @@ void CNpcAnemone2Enemy::processMovementModifier( int _frames, s32 distX, s32 dis
|
||||||
|
|
||||||
// move appropriate to scaling (anemone origin is 90 degrees off, hence:)
|
// move appropriate to scaling (anemone origin is 90 degrees off, hence:)
|
||||||
|
|
||||||
xDiff = ( m_scaleY * SPIKE_RADIUS ) >> 12;
|
xDiff = ( m_scaleY * m_radius ) >> 12;
|
||||||
yDiff = ( m_scaleX * SPIKE_RADIUS ) >> 12;
|
yDiff = ( m_scaleX * m_radius ) >> 12;
|
||||||
|
|
||||||
offset.vx = ( xDiff * rcos( relativeHeading ) ) >> 12;
|
offset.vx = ( xDiff * rcos( relativeHeading ) ) >> 12;
|
||||||
offset.vy = ( yDiff * rsin( relativeHeading ) ) >> 12;
|
offset.vy = ( yDiff * rsin( relativeHeading ) ) >> 12;
|
||||||
|
|
|
@ -46,6 +46,8 @@ protected:
|
||||||
|
|
||||||
u16 m_scaleX, m_scaleY;
|
u16 m_scaleX, m_scaleY;
|
||||||
|
|
||||||
|
u8 m_radius;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
SPIKE_RADIUS = 20,
|
SPIKE_RADIUS = 20,
|
||||||
|
|
|
@ -65,6 +65,7 @@ void CProjectile::init()
|
||||||
m_turnSpeed = 256;
|
m_turnSpeed = 256;
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
m_isShuttingDown = false;
|
m_isShuttingDown = false;
|
||||||
|
m_ot = 0;
|
||||||
updateCollisionArea();
|
updateCollisionArea();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +358,7 @@ void CProjectile::render()
|
||||||
|
|
||||||
frameHdr = m_spriteBank->getFrameHeader(FRM__SPIKE);
|
frameHdr = m_spriteBank->getFrameHeader(FRM__SPIKE);
|
||||||
|
|
||||||
m_spriteBank->printRotatedScaledSprite( frameHdr, x, y, 4096, 4096, m_heading, 0 );
|
m_spriteBank->printRotatedScaledSprite( frameHdr, x, y, 4096, 4096, m_heading, m_ot );
|
||||||
}
|
}
|
||||||
|
|
||||||
DVECTOR CProjectile::getScreenOffset()
|
DVECTOR CProjectile::getScreenOffset()
|
||||||
|
|
|
@ -60,6 +60,7 @@ public:
|
||||||
void setLifeTime( PROJECTILE_LIFETIME_TYPE lifeType );
|
void setLifeTime( PROJECTILE_LIFETIME_TYPE lifeType );
|
||||||
void setPosition( DVECTOR newPos );
|
void setPosition( DVECTOR newPos );
|
||||||
void setLayerCollision( class CLayerCollision *_layer ) {m_layerCollision=_layer;}
|
void setLayerCollision( class CLayerCollision *_layer ) {m_layerCollision=_layer;}
|
||||||
|
void setOt( u8 newOt ) {m_ot=newOt;}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class CLayerCollision *m_layerCollision;
|
class CLayerCollision *m_layerCollision;
|
||||||
|
@ -79,6 +80,7 @@ protected:
|
||||||
PROJECTILE_STATE m_state;
|
PROJECTILE_STATE m_state;
|
||||||
u16 m_turnSpeed;
|
u16 m_turnSpeed;
|
||||||
u8 m_isShuttingDown;
|
u8 m_isShuttingDown;
|
||||||
|
u8 m_ot;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
Loading…
Add table
Reference in a new issue