This commit is contained in:
Charles 2001-04-02 20:35:43 +00:00
parent d3d5d831dc
commit fdf83f928a
4 changed files with 99 additions and 3 deletions

View file

@ -1072,6 +1072,13 @@ void CNpcEnemy::processMovement(int _frames)
break; break;
} }
case NPC_MOVEMENT_SHARK_MAN:
{
processSharkManMovement( _frames, &moveX, &moveY );
break;
}
default: default:
break; break;
@ -1310,8 +1317,8 @@ void CNpcEnemy::render()
int W=m_actorGfx->getFrameWidth(m_animNo,m_frame); int W=m_actorGfx->getFrameWidth(m_animNo,m_frame);
int H=m_actorGfx->getFrameHeight(m_animNo,m_frame); int H=m_actorGfx->getFrameHeight(m_animNo,m_frame);
renderPos.vx = Pos.vx - offset.vx /*+ ( scrnWidth >> 1 )*/ - ( W >> 1 ); renderPos.vx = Pos.vx - offset.vx;
renderPos.vy = Pos.vy - offset.vy /*+ ( scrnHeight >> 1 )*/ - ( H >> 1 ); renderPos.vy = Pos.vy - offset.vy - H;
m_actorGfx->Render(renderPos,m_animNo,m_frame,m_reversed); m_actorGfx->Render(renderPos,m_animNo,m_frame,m_reversed);
} }

View file

@ -274,6 +274,7 @@ protected:
NPC_MOVEMENT_CLAM_RETRACT, NPC_MOVEMENT_CLAM_RETRACT,
NPC_MOVEMENT_PARASITIC_WORM, NPC_MOVEMENT_PARASITIC_WORM,
NPC_MOVEMENT_STATIC_CYCLE_ANIM, NPC_MOVEMENT_STATIC_CYCLE_ANIM,
NPC_MOVEMENT_SHARK_MAN,
}; };
enum NPC_MOVEMENT_MODIFIER_FUNC enum NPC_MOVEMENT_MODIFIER_FUNC
@ -432,6 +433,7 @@ protected:
// shark man functions // shark man functions
void processSharkManMovement( int _frames, s32 *moveX, s32 *moveY );
void processCloseSharkManAttack( int _frames ); void processCloseSharkManAttack( int _frames );
// anemone functions // anemone functions

View file

@ -740,7 +740,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
ANIM_SHARKMAN_IDLE1_, ANIM_SHARKMAN_IDLE1_,
NPC_INIT_DEFAULT, NPC_INIT_DEFAULT,
NPC_SENSOR_GENERIC_USER_VISIBLE, NPC_SENSOR_GENERIC_USER_VISIBLE,
NPC_MOVEMENT_FIXED_PATH_WALK, NPC_MOVEMENT_SHARK_MAN,
NPC_MOVEMENT_MODIFIER_NONE, NPC_MOVEMENT_MODIFIER_NONE,
NPC_CLOSE_SHARK_MAN_ATTACK, NPC_CLOSE_SHARK_MAN_ATTACK,
NPC_TIMER_NONE, NPC_TIMER_NONE,

View file

@ -23,11 +23,96 @@
#include "player\player.h" #include "player\player.h"
#endif #endif
#ifndef __UTILS_HEADER__
#include "utils\utils.h"
#endif
#ifndef __ANIM_SHARKMAN_HEADER__ #ifndef __ANIM_SHARKMAN_HEADER__
#include <ACTOR_SHARKMAN_ANIM.h> #include <ACTOR_SHARKMAN_ANIM.h>
#endif #endif
void CNpcEnemy::processSharkManMovement( int _frames, s32 *moveX, s32 *moveY )
{
if ( m_movementTimer > 0 )
{
m_movementTimer -= _frames;
if ( m_animNo == m_data[m_type].moveAnim )
{
processGenericFixedPathWalk( _frames, moveX, moveY );
}
if ( !m_animPlaying )
{
m_animPlaying = true;
m_frame = 0;
}
}
else
{
// change anim
if ( m_animNo == m_data[m_type].moveAnim )
{
u8 newAction = getRnd() % 5;
switch( newAction )
{
case 0:
{
m_movementTimer = GameState::getOneSecondInFrames() * 3;
m_animNo = ANIM_SHARKMAN_IDLE1_;
break;
}
case 1:
{
m_movementTimer = GameState::getOneSecondInFrames() * 8;
m_animNo = m_data[m_type].moveAnim;
break;
}
case 2:
{
m_movementTimer = GameState::getOneSecondInFrames() * 1;
m_animNo = ANIM_SHARKMAN_IDLE2_;
break;
}
case 3:
{
m_movementTimer = GameState::getOneSecondInFrames() >> 1;
m_animNo = ANIM_SHARKMAN_KICK_SAND;
break;
}
case 4:
{
m_movementTimer = GameState::getOneSecondInFrames() * 3;
m_animNo = ANIM_SHARKMAN_PUSHUPS;
break;
}
}
}
else
{
// return to move anim
m_movementTimer = GameState::getOneSecondInFrames() * 8;
m_animNo = m_data[m_type].moveAnim;
}
m_animPlaying = true;
m_frame = 0;
}
}
void CNpcEnemy::processCloseSharkManAttack( int _frames ) void CNpcEnemy::processCloseSharkManAttack( int _frames )
{ {
s32 moveX = 0, moveY = 0; s32 moveX = 0, moveY = 0;
@ -95,6 +180,7 @@ void CNpcEnemy::processCloseSharkManAttack( int _frames )
m_timerFunc = NPC_TIMER_ATTACK_DONE; m_timerFunc = NPC_TIMER_ATTACK_DONE;
m_timerTimer = GameState::getOneSecondInFrames(); m_timerTimer = GameState::getOneSecondInFrames();
m_sensorFunc = NPC_SENSOR_NONE; m_sensorFunc = NPC_SENSOR_NONE;
m_animNo = m_data[m_type].moveAnim;
} }
else else
{ {
@ -123,5 +209,6 @@ void CNpcEnemy::processCloseSharkManAttack( int _frames )
else else
{ {
m_controlFunc = NPC_CONTROL_MOVEMENT; m_controlFunc = NPC_CONTROL_MOVEMENT;
m_animNo = m_data[m_type].moveAnim;
} }
} }