This commit is contained in:
parent
c050e9fb83
commit
8538d72b10
9 changed files with 187 additions and 29 deletions
|
@ -186,6 +186,8 @@ void CNpcEnemy::processCloseAnemone2Attack( int _frames )
|
||||||
nextThing = nextThing->getNext();
|
nextThing = nextThing->getNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
removeAllChild();
|
||||||
|
|
||||||
// attach new spikes
|
// attach new spikes
|
||||||
|
|
||||||
for ( fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
|
for ( fireLoop = 0 ; fireLoop < 5 ; fireLoop++ )
|
||||||
|
|
|
@ -248,6 +248,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_attackTimer = 0;
|
||||||
m_velocity = 0;
|
m_velocity = 0;
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
m_rotation = 0;
|
m_rotation = 0;
|
||||||
|
@ -577,6 +578,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_attackTimer = 0;
|
||||||
m_velocity = 0;
|
m_velocity = 0;
|
||||||
m_extension = 0;
|
m_extension = 0;
|
||||||
m_rotation = 0;
|
m_rotation = 0;
|
||||||
|
@ -622,6 +624,19 @@ void CNpcEnemy::shutdown()
|
||||||
m_positionHistory = NULL;
|
m_positionHistory = NULL;
|
||||||
|
|
||||||
delete m_actorGfx;
|
delete m_actorGfx;
|
||||||
|
|
||||||
|
// remove child elements
|
||||||
|
|
||||||
|
CThing *List = this->getNext();
|
||||||
|
|
||||||
|
while ( List )
|
||||||
|
{
|
||||||
|
CThing *Next = List->getNext();
|
||||||
|
List->shutdown();
|
||||||
|
|
||||||
|
List = Next;
|
||||||
|
}
|
||||||
|
|
||||||
CEnemyThing::shutdown();
|
CEnemyThing::shutdown();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -709,7 +724,7 @@ void CNpcEnemy::collidedWith( CThing *_thisThing )
|
||||||
{
|
{
|
||||||
case TYPE_PLAYER:
|
case TYPE_PLAYER:
|
||||||
{
|
{
|
||||||
if ( m_controlFunc != NPC_CONTROL_COLLISION )
|
if ( m_controlFunc != NPC_CONTROL_COLLISION && m_attackTimer == 0 )
|
||||||
{
|
{
|
||||||
// only detect collision if one isn't already happening
|
// only detect collision if one isn't already happening
|
||||||
|
|
||||||
|
@ -1288,6 +1303,7 @@ void CNpcEnemy::processMovementModifier(int _frames, s32 distX, s32 distY, s32 d
|
||||||
void CNpcEnemy::hasBeenAttacked()
|
void CNpcEnemy::hasBeenAttacked()
|
||||||
{
|
{
|
||||||
m_controlFunc = NPC_CONTROL_SHOT;
|
m_controlFunc = NPC_CONTROL_SHOT;
|
||||||
|
m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -1352,7 +1368,17 @@ void CNpcEnemy::processShot()
|
||||||
{
|
{
|
||||||
if ( !m_animPlaying )
|
if ( !m_animPlaying )
|
||||||
{
|
{
|
||||||
this->shutdown();
|
if ( m_data[m_type].respawning )
|
||||||
|
{
|
||||||
|
m_isActive = false;
|
||||||
|
|
||||||
|
m_timerFunc = NPC_TIMER_RESPAWN;
|
||||||
|
m_timerTimer = 4 * GameState::getOneSecondInFrames();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
shutdown();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -1512,10 +1538,12 @@ void CNpcEnemy::processCollision()
|
||||||
{
|
{
|
||||||
CPlayer *player = GameScene.getPlayer();
|
CPlayer *player = GameScene.getPlayer();
|
||||||
|
|
||||||
//player->takeDamage( m_data[m_type].damageToUserType );
|
player->takeDamage( m_data[m_type].damageToUserType );
|
||||||
|
|
||||||
m_controlFunc = m_oldControlFunc;
|
m_controlFunc = m_oldControlFunc;
|
||||||
|
|
||||||
|
m_attackTimer = GameState::getOneSecondInFrames();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1532,6 +1560,16 @@ void CNpcEnemy::processCollision()
|
||||||
|
|
||||||
void CNpcEnemy::processTimer(int _frames)
|
void CNpcEnemy::processTimer(int _frames)
|
||||||
{
|
{
|
||||||
|
if ( m_attackTimer > 0 )
|
||||||
|
{
|
||||||
|
m_attackTimer -= _frames;
|
||||||
|
|
||||||
|
if ( m_attackTimer < 0 )
|
||||||
|
{
|
||||||
|
m_attackTimer = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( m_timerTimer > 0 )
|
if ( m_timerTimer > 0 )
|
||||||
{
|
{
|
||||||
m_timerTimer -= _frames;
|
m_timerTimer -= _frames;
|
||||||
|
@ -1662,6 +1700,8 @@ bool CNpcEnemy::canBeCaughtByNet()
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void CNpcEnemy::caughtWithNet()
|
void CNpcEnemy::caughtWithNet()
|
||||||
|
{
|
||||||
|
if ( m_data[m_type].respawning )
|
||||||
{
|
{
|
||||||
if ( m_isActive )
|
if ( m_isActive )
|
||||||
{
|
{
|
||||||
|
@ -1671,3 +1711,8 @@ void CNpcEnemy::caughtWithNet()
|
||||||
m_timerTimer = 4 * GameState::getOneSecondInFrames();
|
m_timerTimer = 4 * GameState::getOneSecondInFrames();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
shutdown();
|
||||||
|
}
|
||||||
|
}
|
|
@ -435,6 +435,7 @@ protected:
|
||||||
u16 recoilAnim;
|
u16 recoilAnim;
|
||||||
NPC_COLLISION_FUNC collisionFunc;
|
NPC_COLLISION_FUNC collisionFunc;
|
||||||
bool canBeNetted;
|
bool canBeNetted;
|
||||||
|
bool respawning;
|
||||||
}
|
}
|
||||||
NPC_DATA;
|
NPC_DATA;
|
||||||
|
|
||||||
|
@ -601,6 +602,7 @@ protected:
|
||||||
bool m_reversed;
|
bool m_reversed;
|
||||||
s32 m_health;
|
s32 m_health;
|
||||||
bool m_isActive;
|
bool m_isActive;
|
||||||
|
s32 m_attackTimer;
|
||||||
|
|
||||||
s32 m_frame;
|
s32 m_frame;
|
||||||
int m_animNo;
|
int m_animNo;
|
||||||
|
|
|
@ -336,6 +336,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_FISH_HOOK
|
{ // NPC_FISH_HOOK
|
||||||
|
@ -359,6 +360,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_DUST_DEVIL
|
{ // NPC_DUST_DEVIL
|
||||||
|
@ -382,6 +384,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PENDULUM
|
{ // NPC_PENDULUM
|
||||||
|
@ -405,6 +408,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_FIREBALL
|
{ // NPC_FIREBALL
|
||||||
|
@ -428,6 +432,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SAW_BLADE
|
{ // NPC_SAW_BLADE
|
||||||
|
@ -451,6 +456,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SMALL_JELLYFISH_1
|
{ // NPC_SMALL_JELLYFISH_1
|
||||||
|
@ -465,7 +471,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__SHOCK_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
16,
|
16,
|
||||||
ANIM_JELLYFISH1_SWIM,
|
ANIM_JELLYFISH1_SWIM,
|
||||||
|
@ -474,6 +480,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_JELLYFISH1_SWIM,
|
ANIM_JELLYFISH1_SWIM,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
true,
|
true,
|
||||||
|
true,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SMALL_JELLYFISH_2
|
{ // NPC_SMALL_JELLYFISH_2
|
||||||
|
@ -488,7 +495,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__SHOCK_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
32,
|
32,
|
||||||
0,
|
0,
|
||||||
|
@ -497,6 +504,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
true,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANEMONE_1
|
{ // NPC_ANEMONE_1
|
||||||
|
@ -520,6 +528,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANEMONE_2
|
{ // NPC_ANEMONE_2
|
||||||
|
@ -543,6 +552,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANEMONE_3
|
{ // NPC_ANEMONE_3
|
||||||
|
@ -566,6 +576,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SKELETAL_FISH
|
{ // NPC_SKELETAL_FISH
|
||||||
|
@ -580,7 +591,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
2048,
|
2048,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__BITE_ENEMY,
|
DAMAGE__BITE_ENEMY,
|
||||||
0,
|
0,
|
||||||
ANIM_SKELETALFISH_SWIM,
|
ANIM_SKELETALFISH_SWIM,
|
||||||
|
@ -589,6 +600,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_SKELETALFISH_GETHIT,
|
ANIM_SKELETALFISH_GETHIT,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_CLAM_JUMP
|
{ // NPC_CLAM_JUMP
|
||||||
|
@ -603,7 +615,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -612,6 +624,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_CLAM_STATIC
|
{ // NPC_CLAM_STATIC
|
||||||
|
@ -626,7 +639,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -635,6 +648,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SQUID_DART
|
{ // NPC_SQUID_DART
|
||||||
|
@ -649,7 +663,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
5,
|
5,
|
||||||
256,
|
256,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
16,
|
16,
|
||||||
ANIM_SQUIDDART_SWIM,
|
ANIM_SQUIDDART_SWIM,
|
||||||
|
@ -658,6 +672,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_FISH_FOLK
|
{ // NPC_FISH_FOLK
|
||||||
|
@ -681,6 +696,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PRICKLY_BUG
|
{ // NPC_PRICKLY_BUG
|
||||||
|
@ -695,7 +711,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
1,
|
1,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__POISON_ENEMY,
|
DAMAGE__POISON_ENEMY,
|
||||||
48,
|
48,
|
||||||
ANIM_CATERPILLAR_CRAWL,
|
ANIM_CATERPILLAR_CRAWL,
|
||||||
|
@ -704,6 +720,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_CATERPILLAR_GETHIT,
|
ANIM_CATERPILLAR_GETHIT,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SEA_SNAKE
|
{ // NPC_SEA_SNAKE
|
||||||
|
@ -718,7 +735,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
256,
|
256,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__SHOCK_ENEMY,
|
DAMAGE__SHOCK_ENEMY,
|
||||||
56,
|
56,
|
||||||
0,
|
0,
|
||||||
|
@ -727,6 +744,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PUFFA_FISH
|
{ // NPC_PUFFA_FISH
|
||||||
|
@ -741,7 +759,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
2,
|
2,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
64,
|
64,
|
||||||
ANIM_PUFFAFISH_SWIM,
|
ANIM_PUFFAFISH_SWIM,
|
||||||
|
@ -750,6 +768,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ANGLER_FISH
|
{ // NPC_ANGLER_FISH
|
||||||
|
@ -773,6 +792,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_HERMIT_CRAB
|
{ // NPC_HERMIT_CRAB
|
||||||
|
@ -787,7 +807,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
2,
|
2,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
32,
|
32,
|
||||||
ANIM_HERMITCRAB_SCUTTLE,
|
ANIM_HERMITCRAB_SCUTTLE,
|
||||||
|
@ -796,6 +816,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_HERMITCRAB_GETHIT,
|
ANIM_HERMITCRAB_GETHIT,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_MINE
|
{ // NPC_MINE
|
||||||
|
@ -810,7 +831,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -819,6 +840,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_BOOGER_MONSTER
|
{ // NPC_BOOGER_MONSTER
|
||||||
|
@ -833,7 +855,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__BITE_ENEMY,
|
DAMAGE__BITE_ENEMY,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -842,6 +864,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SPIDER_CRAB
|
{ // NPC_SPIDER_CRAB
|
||||||
|
@ -865,6 +888,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_SPIDERCRAB_HIT,
|
ANIM_SPIDERCRAB_HIT,
|
||||||
NPC_COLLISION_SPIDER_CRAB_BITE,
|
NPC_COLLISION_SPIDER_CRAB_BITE,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_EYEBALL
|
{ // NPC_EYEBALL
|
||||||
|
@ -888,6 +912,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_BABY_OCTOPUS
|
{ // NPC_BABY_OCTOPUS
|
||||||
|
@ -902,7 +927,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
2,
|
2,
|
||||||
512,
|
512,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ATTACK_COLLISION_GENERIC,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
32,
|
32,
|
||||||
ANIM_BABYOCTOPUS_SWIM,
|
ANIM_BABYOCTOPUS_SWIM,
|
||||||
|
@ -911,6 +936,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_BABYOCTOPUS_HIT,
|
ANIM_BABYOCTOPUS_HIT,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_ZOMBIE_FISH_FOLK
|
{ // NPC_ZOMBIE_FISH_FOLK
|
||||||
|
@ -925,7 +951,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
2,
|
2,
|
||||||
2048,
|
2048,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
16,
|
16,
|
||||||
0,
|
0,
|
||||||
|
@ -934,6 +960,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_NINJA_STARFISH
|
{ // NPC_NINJA_STARFISH
|
||||||
|
@ -948,7 +975,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
64,
|
64,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
16,
|
16,
|
||||||
0,
|
0,
|
||||||
|
@ -957,6 +984,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_GHOST
|
{ // NPC_GHOST
|
||||||
|
@ -971,7 +999,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
2,
|
2,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
0,
|
0,
|
||||||
ANIM_GHOST_MOVE,
|
ANIM_GHOST_MOVE,
|
||||||
|
@ -980,6 +1008,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_GHOST_PIRATE
|
{ // NPC_GHOST_PIRATE
|
||||||
|
@ -994,7 +1023,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
0,
|
0,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
160,
|
160,
|
||||||
0,
|
0,
|
||||||
|
@ -1003,6 +1032,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_FLAMING_SKULL
|
{ // NPC_FLAMING_SKULL
|
||||||
|
@ -1017,7 +1047,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__BURN_ENEMY,
|
DAMAGE__BURN_ENEMY,
|
||||||
16,
|
16,
|
||||||
ANIM_FLAMINGSKULL_MOVE,
|
ANIM_FLAMINGSKULL_MOVE,
|
||||||
|
@ -1026,6 +1056,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SHARK_MAN
|
{ // NPC_SHARK_MAN
|
||||||
|
@ -1040,7 +1071,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
2048,
|
2048,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__BITE_ENEMY,
|
DAMAGE__BITE_ENEMY,
|
||||||
16,
|
16,
|
||||||
ANIM_SHARKMAN_RUN,
|
ANIM_SHARKMAN_RUN,
|
||||||
|
@ -1049,6 +1080,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_SHARKMAN_BLOCK,
|
ANIM_SHARKMAN_BLOCK,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_OIL_BLOB
|
{ // NPC_OIL_BLOB
|
||||||
|
@ -1063,7 +1095,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
64,
|
64,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__HIT_ENEMY,
|
DAMAGE__HIT_ENEMY,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
@ -1072,6 +1104,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SKULL_STOMPER
|
{ // NPC_SKULL_STOMPER
|
||||||
|
@ -1086,7 +1119,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
5,
|
5,
|
||||||
2048,
|
2048,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__SQUASH_ENEMY,
|
DAMAGE__SQUASH_ENEMY,
|
||||||
0,
|
0,
|
||||||
ANIM_STOMPER_CRUSH,
|
ANIM_STOMPER_CRUSH,
|
||||||
|
@ -1095,6 +1128,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_MOTHER_JELLYFISH
|
{ // NPC_MOTHER_JELLYFISH
|
||||||
|
@ -1118,6 +1152,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_SUB_SHARK
|
{ // NPC_SUB_SHARK
|
||||||
|
@ -1141,6 +1176,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PARASITIC_WORM
|
{ // NPC_PARASITIC_WORM
|
||||||
|
@ -1164,6 +1200,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_FLYING_DUTCHMAN
|
{ // NPC_FLYING_DUTCHMAN
|
||||||
|
@ -1187,6 +1224,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_FLYINGDUTCHMAN_GETHIT,
|
ANIM_FLYINGDUTCHMAN_GETHIT,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_IRON_DOGFISH
|
{ // NPC_IRON_DOGFISH
|
||||||
|
@ -1210,6 +1248,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
ANIM_IRONDOGFISH_GETHIT,
|
ANIM_IRONDOGFISH_GETHIT,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_PARASITIC_WORM_SEGMENT
|
{ // NPC_PARASITIC_WORM_SEGMENT
|
||||||
|
@ -1233,6 +1272,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // NPC_BALL_BLOB
|
{ // NPC_BALL_BLOB
|
||||||
|
@ -1247,7 +1287,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
false,
|
false,
|
||||||
3,
|
3,
|
||||||
128,
|
128,
|
||||||
DETECT_NO_COLLISION,
|
DETECT_ALL_COLLISION,
|
||||||
DAMAGE__BURN_ENEMY,
|
DAMAGE__BURN_ENEMY,
|
||||||
16,
|
16,
|
||||||
ANIM_BALLBLOB_WOBBLE,
|
ANIM_BALLBLOB_WOBBLE,
|
||||||
|
@ -1256,6 +1296,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||||
0,
|
0,
|
||||||
NPC_COLLISION_GENERIC,
|
NPC_COLLISION_GENERIC,
|
||||||
false,
|
false,
|
||||||
|
false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -290,6 +290,7 @@ void CPlayerModeJellyLauncher::launchProjectile()
|
||||||
CPlayerProjectile::PLAYER_PROJECTILE_DUMBFIRE,
|
CPlayerProjectile::PLAYER_PROJECTILE_DUMBFIRE,
|
||||||
CPlayerProjectile::PLAYER_PROJECTILE_FINITE_LIFE,
|
CPlayerProjectile::PLAYER_PROJECTILE_FINITE_LIFE,
|
||||||
5*60);
|
5*60);
|
||||||
|
projectile->setLayerCollision( m_player->getLayerCollision() );
|
||||||
fireHeading+=512;
|
fireHeading+=512;
|
||||||
m_player->useOneJelly();
|
m_player->useOneJelly();
|
||||||
}
|
}
|
||||||
|
@ -304,6 +305,7 @@ void CPlayerModeJellyLauncher::launchProjectile()
|
||||||
CPlayerProjectile::PLAYER_PROJECTILE_DUMBFIRE,
|
CPlayerProjectile::PLAYER_PROJECTILE_DUMBFIRE,
|
||||||
CPlayerProjectile::PLAYER_PROJECTILE_FINITE_LIFE,
|
CPlayerProjectile::PLAYER_PROJECTILE_FINITE_LIFE,
|
||||||
5*60);
|
5*60);
|
||||||
|
projectile->setLayerCollision( m_player->getLayerCollision() );
|
||||||
m_player->useOneJelly();
|
m_player->useOneJelly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,6 +168,7 @@ void CPlayerModeNet::think()
|
||||||
CPlayerProjectile::PLAYER_PROJECTILE_DUMBFIRE,
|
CPlayerProjectile::PLAYER_PROJECTILE_DUMBFIRE,
|
||||||
CPlayerProjectile::PLAYER_PROJECTILE_FINITE_LIFE,
|
CPlayerProjectile::PLAYER_PROJECTILE_FINITE_LIFE,
|
||||||
5*60);
|
5*60);
|
||||||
|
projectile->setLayerCollision( m_player->getLayerCollision() );
|
||||||
|
|
||||||
m_netState=NET_STATE__JUST_LAUNCHED_SOMETHING;
|
m_netState=NET_STATE__JUST_LAUNCHED_SOMETHING;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,10 @@
|
||||||
#include "player\player.h"
|
#include "player\player.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef __ENEMY_NPC_H__
|
||||||
|
#include "enemy\npc.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
@ -356,6 +360,28 @@ void CProjectile::processEvent( GAME_EVENT evt, CThing *sourceThing )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CProjectile::collidedWith(CThing *_thisThing)
|
||||||
|
{
|
||||||
|
switch(_thisThing->getThingType())
|
||||||
|
{
|
||||||
|
case TYPE_PLAYER:
|
||||||
|
{
|
||||||
|
CPlayer *player = (CPlayer *) _thisThing;
|
||||||
|
|
||||||
|
player->takeDamage( DAMAGE__HIT_ENEMY );
|
||||||
|
|
||||||
|
shutdown();
|
||||||
|
delete this;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void CPlayerProjectile::init()
|
void CPlayerProjectile::init()
|
||||||
|
@ -492,4 +518,23 @@ void CPlayerProjectile::processEvent( GAME_EVENT evt, CThing *sourceThing )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CPlayerProjectile::collidedWith(CThing *_thisThing)
|
||||||
|
{
|
||||||
|
switch(_thisThing->getThingType())
|
||||||
|
{
|
||||||
|
case TYPE_ENEMY:
|
||||||
|
{
|
||||||
|
CNpcEnemy *enemy = (CNpcEnemy *) _thisThing;
|
||||||
|
|
||||||
|
enemy->hasBeenAttacked();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -64,6 +64,7 @@ private:
|
||||||
protected:
|
protected:
|
||||||
DVECTOR getScreenOffset();
|
DVECTOR getScreenOffset();
|
||||||
bool processTargetSeek( int _frames, DVECTOR targetPos );
|
bool processTargetSeek( int _frames, DVECTOR targetPos );
|
||||||
|
void collidedWith( CThing *_thisThing );
|
||||||
|
|
||||||
class SpriteBank *m_spriteBank;
|
class SpriteBank *m_spriteBank;
|
||||||
DVECTOR m_initPos;
|
DVECTOR m_initPos;
|
||||||
|
@ -111,6 +112,7 @@ private:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DVECTOR getScreenOffset();
|
DVECTOR getScreenOffset();
|
||||||
|
void collidedWith( CThing *_thisThing );
|
||||||
|
|
||||||
class SpriteBank *m_spriteBank;
|
class SpriteBank *m_spriteBank;
|
||||||
DVECTOR m_initPos;
|
DVECTOR m_initPos;
|
||||||
|
|
|
@ -198,6 +198,24 @@ void CThingManager::thinkAllThings(int _frames)
|
||||||
thing1=thing1->m_nextThing;
|
thing1=thing1->m_nextThing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enemy -> Player projectile collision
|
||||||
|
thing1=s_thingLists[CThing::TYPE_PLAYERPROJECTILE];
|
||||||
|
thing2=s_thingLists[CThing::TYPE_ENEMY];
|
||||||
|
while(thing1)
|
||||||
|
{
|
||||||
|
while(thing2)
|
||||||
|
{
|
||||||
|
if(thing1->canCollide()&&
|
||||||
|
thing2->canCollide()&&
|
||||||
|
thing1->checkCollisionAgainst(thing2, _frames))
|
||||||
|
{
|
||||||
|
thing1->collidedWith(thing2);
|
||||||
|
}
|
||||||
|
thing2=thing2->m_nextThing;
|
||||||
|
}
|
||||||
|
thing1=thing1->m_nextThing;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
|
Loading…
Add table
Reference in a new issue