diff --git a/source/enemy/ngpirate.cpp b/source/enemy/ngpirate.cpp new file mode 100644 index 000000000..dfcda608e --- /dev/null +++ b/source/enemy/ngpirate.cpp @@ -0,0 +1,80 @@ +/*========================================================================= + + ngpirate.cpp + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2000 Climax Development Ltd + +===========================================================================*/ + +#ifndef __ENEMY_NPC_H__ +#include "enemy\npc.h" +#endif + +#ifndef __GAME_GAME_H__ +#include "game\game.h" +#endif + +#ifndef __PLAYER_PLAYER_H__ +#include "player\player.h" +#endif + + +void CNpc::processCloseGhostPirateAttack( int _frames ) +{ + s32 velocity; + + if ( m_extendDir == EXTEND_UP ) + { + m_movementTimer -= _frames; + + if ( m_movementTimer > 0 ) + { + // extend + + velocity = m_velocity * _frames; + + m_extension += velocity; + + Pos.vx += ( velocity * rcos( m_heading ) ) >> 12; + Pos.vy += ( velocity * rsin( m_heading ) ) >> 12; + } + else + { + m_extendDir = EXTEND_DOWN; + + // fire too + } + } + else if ( m_extendDir == EXTEND_DOWN ) + { + // retract + + if ( m_extension > 0 ) + { + velocity = - ( m_velocity * _frames ); + + if ( m_extension < _frames ) + { + velocity = m_extension - _frames; + } + + m_extension += velocity; + + + Pos.vx += ( velocity * rcos( m_heading ) ) >> 12; + Pos.vy += ( velocity * rsin( m_heading ) ) >> 12; + } + else + { + this->m_controlFunc = NPC_CONTROL_MOVEMENT; + this->m_timerFunc = NPC_TIMER_ATTACK_DONE; + this->m_timerTimer = GameState::getOneSecondInFrames(); + this->m_sensorFunc = NPC_SENSOR_NONE; + } + } +} \ No newline at end of file