This commit is contained in:
parent
ad2702fba3
commit
bd7d016245
2 changed files with 25 additions and 2 deletions
|
@ -592,6 +592,7 @@ void CNpcEnemy::init()
|
||||||
m_heading = m_fireHeading = 0;
|
m_heading = m_fireHeading = 0;
|
||||||
m_movementTimer = 0;
|
m_movementTimer = 0;
|
||||||
m_timerTimer = 0;
|
m_timerTimer = 0;
|
||||||
|
m_collisionTimer = 0;
|
||||||
m_velocity = 0;
|
m_velocity = 0;
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
m_rotation = 0;
|
m_rotation = 0;
|
||||||
|
@ -642,6 +643,7 @@ void CNpcEnemy::reinit()
|
||||||
m_heading = m_fireHeading = 0;
|
m_heading = m_fireHeading = 0;
|
||||||
m_movementTimer = 0;
|
m_movementTimer = 0;
|
||||||
m_timerTimer = 0;
|
m_timerTimer = 0;
|
||||||
|
m_collisionTimer = 0;
|
||||||
m_velocity = 0;
|
m_velocity = 0;
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
m_rotation = 0;
|
m_rotation = 0;
|
||||||
|
@ -1237,6 +1239,11 @@ void CNpcEnemy::processCollision()
|
||||||
|
|
||||||
void CNpcEnemy::processTimer(int _frames)
|
void CNpcEnemy::processTimer(int _frames)
|
||||||
{
|
{
|
||||||
|
if ( m_collisionTimer > 0 )
|
||||||
|
{
|
||||||
|
m_collisionTimer -= _frames;
|
||||||
|
}
|
||||||
|
|
||||||
if ( m_timerTimer > 0 )
|
if ( m_timerTimer > 0 )
|
||||||
{
|
{
|
||||||
m_timerTimer -= _frames;
|
m_timerTimer -= _frames;
|
||||||
|
@ -1410,14 +1417,29 @@ void CNpcEnemy::processEnemyCollision( CThing *thisThing )
|
||||||
|
|
||||||
s16 headingFromTarget = ratan2( yDist, xDist );
|
s16 headingFromTarget = ratan2( yDist, xDist );
|
||||||
|
|
||||||
|
if ( ( xDist > 0 && otherDelta.vx < 0 ) || ( xDist < 0 && otherDelta.vx > 0 ) )
|
||||||
|
{
|
||||||
|
otherDelta.vx = -otherDelta.vx;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ( yDist > 0 && otherDelta.vy < 0 ) || ( yDist < 0 && otherDelta.vy > 0 ) )
|
||||||
|
{
|
||||||
|
otherDelta.vy = -otherDelta.vy;
|
||||||
|
}
|
||||||
|
|
||||||
Pos.vx += otherDelta.vx;
|
Pos.vx += otherDelta.vx;
|
||||||
Pos.vy += otherDelta.vy;
|
Pos.vy += otherDelta.vy;
|
||||||
|
|
||||||
m_heading = headingFromTarget;
|
m_heading = headingFromTarget;
|
||||||
|
|
||||||
// try next waypoint to get around other enemy
|
if ( m_collisionTimer <= 0 )
|
||||||
|
{
|
||||||
|
m_collisionTimer = GameState::getOneSecondInFrames();
|
||||||
|
|
||||||
m_npcPath.incPath();
|
// try next waypoint to get around other enemy
|
||||||
|
|
||||||
|
m_npcPath.incPath();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -280,6 +280,7 @@ protected:
|
||||||
s32 m_velocity;
|
s32 m_velocity;
|
||||||
bool m_evadeClockwise;
|
bool m_evadeClockwise;
|
||||||
s32 m_movementTimer;
|
s32 m_movementTimer;
|
||||||
|
s32 m_collisionTimer;
|
||||||
s32 m_timerTimer;
|
s32 m_timerTimer;
|
||||||
s32 m_extension;
|
s32 m_extension;
|
||||||
bool m_extendDir;
|
bool m_extendDir;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue