This commit is contained in:
parent
c08cf02803
commit
148b4416de
8 changed files with 62 additions and 21 deletions
|
@ -230,30 +230,38 @@ void CProjectile::think(int _frames)
|
|||
|
||||
case PROJECTILE_USER_SEEK:
|
||||
{
|
||||
switch( m_state )
|
||||
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
|
||||
{
|
||||
case PROJECTILE_RETURN:
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch( m_state )
|
||||
{
|
||||
if ( processTargetSeek( _frames, Parent->getPos() ) )
|
||||
case PROJECTILE_RETURN:
|
||||
{
|
||||
Parent->processEvent( PROJECTILE_RETURNED_TO_SOURCE_EVENT, this );
|
||||
if ( processTargetSeek( _frames, Parent->getPos() ) )
|
||||
{
|
||||
Parent->processEvent( PROJECTILE_RETURNED_TO_SOURCE_EVENT, this );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case PROJECTILE_ATTACK:
|
||||
default:
|
||||
{
|
||||
CPlayer *player = GameScene.getPlayer();
|
||||
DVECTOR playerPos = player->getPos();
|
||||
|
||||
if ( processTargetSeek( _frames, playerPos ) )
|
||||
case PROJECTILE_ATTACK:
|
||||
default:
|
||||
{
|
||||
m_state = PROJECTILE_RETURN;
|
||||
}
|
||||
CPlayer *player = GameScene.getPlayer();
|
||||
DVECTOR playerPos = player->getPos();
|
||||
|
||||
break;
|
||||
if ( processTargetSeek( _frames, playerPos ) )
|
||||
{
|
||||
m_state = PROJECTILE_RETURN;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -283,8 +291,16 @@ void CProjectile::think(int _frames)
|
|||
case PROJECTILE_DUMBFIRE:
|
||||
default:
|
||||
{
|
||||
Pos.vx += ( _frames * 3 * rcos( m_heading ) ) >> 12;
|
||||
Pos.vy += ( _frames * 3 * rsin( m_heading ) ) >> 12;
|
||||
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Pos.vx += ( _frames * 3 * rcos( m_heading ) ) >> 12;
|
||||
Pos.vy += ( _frames * 3 * rsin( m_heading ) ) >> 12;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -416,8 +432,16 @@ void CPlayerProjectile::think(int _frames)
|
|||
case PLAYER_PROJECTILE_DUMBFIRE:
|
||||
default:
|
||||
{
|
||||
Pos.vx += ( _frames * 3 * rcos( m_heading ) ) >> 12;
|
||||
Pos.vy += ( _frames * 3 * rsin( m_heading ) ) >> 12;
|
||||
if ( m_layerCollision->Get( Pos.vx >> 4, Pos.vy >> 4 ) )
|
||||
{
|
||||
shutdown();
|
||||
delete this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Pos.vx += ( _frames * 3 * rcos( m_heading ) ) >> 12;
|
||||
Pos.vy += ( _frames * 3 * rsin( m_heading ) ) >> 12;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,10 @@ public:
|
|||
void setState( PROJECTILE_STATE newState );
|
||||
void setLifeTime( PROJECTILE_LIFETIME_TYPE lifeType );
|
||||
void setPosition( DVECTOR newPos );
|
||||
void setLayerCollision( class CLayerCollision *_layer ) {m_layerCollision=_layer;}
|
||||
|
||||
private:
|
||||
class CLayerCollision *m_layerCollision;
|
||||
|
||||
protected:
|
||||
DVECTOR getScreenOffset();
|
||||
|
@ -100,6 +104,10 @@ public:
|
|||
PLAYER_PROJECTILE_MOVEMENT_TYPE getMovementType();
|
||||
void setLifeTime( PLAYER_PROJECTILE_LIFETIME_TYPE lifeType );
|
||||
void setPosition( DVECTOR newPos );
|
||||
void setLayerCollision( class CLayerCollision *_layer ) {m_layerCollision=_layer;}
|
||||
|
||||
private:
|
||||
class CLayerCollision *m_layerCollision;
|
||||
|
||||
protected:
|
||||
DVECTOR getScreenOffset();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue