This commit is contained in:
parent
4eef48176b
commit
93c3ae5e34
5 changed files with 60 additions and 31 deletions
|
@ -453,8 +453,6 @@ void CNpcEnemy::think(int _frames)
|
||||||
playerXDistSqr = playerXDist * playerXDist;
|
playerXDistSqr = playerXDist * playerXDist;
|
||||||
playerYDistSqr = playerYDist * playerYDist;
|
playerYDistSqr = playerYDist * playerYDist;
|
||||||
|
|
||||||
detectCollisionWithPlayer();
|
|
||||||
|
|
||||||
if ( m_animPlaying )
|
if ( m_animPlaying )
|
||||||
{
|
{
|
||||||
int frameCount = m_skel.getFrameCount();
|
int frameCount = m_skel.getFrameCount();
|
||||||
|
@ -519,15 +517,25 @@ void CNpcEnemy::think(int _frames)
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void CNpcEnemy::detectCollisionWithPlayer()
|
void CNpcEnemy::collidedWith( CThing *_thisThing )
|
||||||
{
|
{
|
||||||
if ( m_data[m_type].detectCollision && playerXDistSqr + playerYDistSqr < 400 )
|
switch(_thisThing->getThingType())
|
||||||
|
{
|
||||||
|
case TYPE_PLAYER:
|
||||||
|
{
|
||||||
|
if ( m_data[m_type].detectCollision )
|
||||||
{
|
{
|
||||||
// close enough for collision
|
|
||||||
|
|
||||||
m_oldControlFunc = m_controlFunc;
|
m_oldControlFunc = m_controlFunc;
|
||||||
m_controlFunc = NPC_CONTROL_COLLISION;
|
m_controlFunc = NPC_CONTROL_COLLISION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -350,7 +350,6 @@ protected:
|
||||||
void processClose( int _frames );
|
void processClose( int _frames );
|
||||||
void processCollision();
|
void processCollision();
|
||||||
void processTimer( int _frames );
|
void processTimer( int _frames );
|
||||||
void detectCollisionWithPlayer();
|
|
||||||
bool isCollisionWithGround();
|
bool isCollisionWithGround();
|
||||||
|
|
||||||
void processGenericGotoTarget( int _frames, s32 xDist, s32 yDist, s32 speed );
|
void processGenericGotoTarget( int _frames, s32 xDist, s32 yDist, s32 speed );
|
||||||
|
@ -485,6 +484,8 @@ protected:
|
||||||
int m_animNo;
|
int m_animNo;
|
||||||
CSkel m_skel;
|
CSkel m_skel;
|
||||||
TPAGE_DESC m_actorTPage;
|
TPAGE_DESC m_actorTPage;
|
||||||
|
|
||||||
|
virtual void collidedWith(CThing *_thisThing);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
8,
|
8,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SQUASH_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_FISH_HOOK
|
{ // NPC_FISH_HOOK
|
||||||
|
@ -90,7 +90,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_DUST_DEVIL
|
{ // NPC_DUST_DEVIL
|
||||||
|
@ -106,7 +106,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PENDULUM
|
{ // NPC_PENDULUM
|
||||||
|
@ -138,7 +138,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
40,
|
40,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__BURN_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SAW_BLADE
|
{ // NPC_SAW_BLADE
|
||||||
|
@ -170,7 +170,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_CIRCULAR_PLATFORM
|
{ // NPC_CIRCULAR_PLATFORM
|
||||||
|
@ -186,7 +186,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SMALL_JELLYFISH_1
|
{ // NPC_SMALL_JELLYFISH_1
|
||||||
|
@ -202,7 +202,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SMALL_JELLYFISH_2
|
{ // NPC_SMALL_JELLYFISH_2
|
||||||
|
@ -218,7 +218,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANEMONE_1
|
{ // NPC_ANEMONE_1
|
||||||
|
@ -234,7 +234,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANEMONE_2
|
{ // NPC_ANEMONE_2
|
||||||
|
@ -250,7 +250,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANEMONE_3
|
{ // NPC_ANEMONE_3
|
||||||
|
@ -266,7 +266,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SKELETAL_FISH
|
{ // NPC_SKELETAL_FISH
|
||||||
|
@ -282,7 +282,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__BITE_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_CLAM_JUMP
|
{ // NPC_CLAM_JUMP
|
||||||
|
@ -346,7 +346,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
2,
|
2,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PRICKLY_BUG
|
{ // NPC_PRICKLY_BUG
|
||||||
|
@ -362,7 +362,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
1,
|
1,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__POISON_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SEA_SNAKE_1
|
{ // NPC_SEA_SNAKE_1
|
||||||
|
@ -378,7 +378,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
256,
|
256,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SEA_SNAKE_2
|
{ // NPC_SEA_SNAKE_2
|
||||||
|
@ -394,7 +394,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
256,
|
256,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PUFFA_FISH
|
{ // NPC_PUFFA_FISH
|
||||||
|
@ -426,7 +426,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
1,
|
1,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__NONE,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_HERMIT_CRAB
|
{ // NPC_HERMIT_CRAB
|
||||||
|
@ -474,7 +474,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__BITE_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SPIDER_CRAB
|
{ // NPC_SPIDER_CRAB
|
||||||
|
@ -490,7 +490,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__PINCH_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_EYEBALL
|
{ // NPC_EYEBALL
|
||||||
|
@ -602,7 +602,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__BURN_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SHARK_MAN
|
{ // NPC_SHARK_MAN
|
||||||
|
@ -618,7 +618,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__BITE_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_OIL_BLOB
|
{ // NPC_OIL_BLOB
|
||||||
|
@ -650,7 +650,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
5,
|
5,
|
||||||
2048,
|
2048,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SQUASH_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_MOTHER_JELLYFISH
|
{ // NPC_MOTHER_JELLYFISH
|
||||||
|
@ -666,7 +666,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
3,
|
3,
|
||||||
256,
|
256,
|
||||||
false,
|
false,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SUB_SHARK
|
{ // NPC_SUB_SHARK
|
||||||
|
|
|
@ -1173,9 +1173,20 @@ void CPlayer::takeDamage(DAMAGE_TYPE _damage)
|
||||||
// Check if we are currently immune to this damage type
|
// Check if we are currently immune to this damage type
|
||||||
switch(_damage)
|
switch(_damage)
|
||||||
{
|
{
|
||||||
|
case DAMAGE__NONE:
|
||||||
|
break;
|
||||||
|
|
||||||
case DAMAGE__FALL:
|
case DAMAGE__FALL:
|
||||||
case DAMAGE__LAVA:
|
case DAMAGE__LAVA:
|
||||||
case DAMAGE__HIT_ENEMY:
|
case DAMAGE__HIT_ENEMY:
|
||||||
|
case DAMAGE__SHOCK_ENEMY:
|
||||||
|
case DAMAGE__GAS_ENEMY:
|
||||||
|
case DAMAGE__POISON_ENEMY:
|
||||||
|
case DAMAGE__SWALLOW_ENEMY:
|
||||||
|
case DAMAGE__PINCH_ENEMY:
|
||||||
|
case DAMAGE__SQUASH_ENEMY:
|
||||||
|
case DAMAGE__BURN_ENEMY:
|
||||||
|
case DAMAGE__BITE_ENEMY:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DAMAGE__ELECTROCUTION:
|
case DAMAGE__ELECTROCUTION:
|
||||||
|
|
|
@ -106,10 +106,19 @@ typedef enum
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
DAMAGE__NONE, // put in so that an item can push the user but not damage them
|
||||||
DAMAGE__FALL,
|
DAMAGE__FALL,
|
||||||
DAMAGE__ELECTROCUTION,
|
DAMAGE__ELECTROCUTION,
|
||||||
DAMAGE__LAVA,
|
DAMAGE__LAVA,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
|
DAMAGE__SHOCK_ENEMY,
|
||||||
|
DAMAGE__GAS_ENEMY,
|
||||||
|
DAMAGE__POISON_ENEMY,
|
||||||
|
DAMAGE__SWALLOW_ENEMY,
|
||||||
|
DAMAGE__PINCH_ENEMY,
|
||||||
|
DAMAGE__SQUASH_ENEMY,
|
||||||
|
DAMAGE__BURN_ENEMY,
|
||||||
|
DAMAGE__BITE_ENEMY,
|
||||||
}DAMAGE_TYPE;
|
}DAMAGE_TYPE;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue