diff --git a/source/enemy/nanemone.cpp b/source/enemy/nanemone.cpp index 009a6635a..d6cd5b74c 100644 --- a/source/enemy/nanemone.cpp +++ b/source/enemy/nanemone.cpp @@ -67,7 +67,7 @@ bool CNpcAnemoneEnemy::processSensor() } } -void CNpcEnemy::processCloseAnemone1Attack( int _frames ) +void CNpcAnemone1Enemy::processClose( int _frames ) { s32 moveX, moveY; s16 decDir, incDir, moveDist; @@ -194,7 +194,7 @@ void CNpcEnemy::processCloseAnemone1Attack( int _frames ) } } -void CNpcEnemy::processCloseAnemone2Attack( int _frames ) +void CNpcAnemone2Enemy::processClose( int _frames ) { int fireLoop; CProjectile *projectile; @@ -260,7 +260,7 @@ void CNpcEnemy::processCloseAnemone2Attack( int _frames ) } } -void CNpcEnemy::processCloseAnemone3Attack( int _frames ) +void CNpcAnemone3Enemy::processClose( int _frames ) { if ( m_animNo != ANIM_ANENOMELVL3_FIRE ) { diff --git a/source/enemy/nanemone.h b/source/enemy/nanemone.h index 08e0e59f4..a2dd7e566 100644 --- a/source/enemy/nanemone.h +++ b/source/enemy/nanemone.h @@ -26,14 +26,20 @@ protected: class CNpcAnemone1Enemy : public CNpcAnemoneEnemy { +protected: + virtual void processClose( int _frames ); }; class CNpcAnemone2Enemy : public CNpcAnemoneEnemy { +protected: + virtual void processClose( int _frames ); }; class CNpcAnemone3Enemy : public CNpcAnemoneEnemy { +protected: + virtual void processClose( int _frames ); }; #endif \ No newline at end of file diff --git a/source/enemy/nbblob.cpp b/source/enemy/nbblob.cpp index 137582666..1ba3902da 100644 --- a/source/enemy/nbblob.cpp +++ b/source/enemy/nbblob.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NBBLOB_H__ +#include "enemy\nbblob.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -23,8 +27,11 @@ #include #endif -void CNpcEnemy::processBallBlobMovement( int _frames, s32 *moveX, s32 *moveY ) +void CNpcBallBlobEnemy::processMovement( int _frames ) { + s32 moveX = 0, moveY = 0; + s32 moveVel = 0; + s32 moveDist = 0; s32 waypointXDist; s32 waypointYDist; s32 waypointHeading; @@ -36,8 +43,10 @@ void CNpcEnemy::processBallBlobMovement( int _frames, s32 *moveX, s32 *moveY ) } else if ( m_animNo == ANIM_BALLBLOB_BOUNCE ) { - *moveX = 0; - *moveY = 0; + moveX = 0; + moveY = 0; + + processMovementModifier( _frames, moveX, moveY, moveVel, moveDist ); return; } @@ -97,21 +106,21 @@ void CNpcEnemy::processBallBlobMovement( int _frames, s32 *moveX, s32 *moveY ) s32 preShiftX = _frames * m_data[m_type].speed * rcos( m_heading ); s32 preShiftY = _frames * m_data[m_type].speed * rsin( m_heading ); - *moveX = preShiftX >> 12; - if ( !(*moveX) && preShiftX ) + moveX = preShiftX >> 12; + if ( !moveX && preShiftX ) { - *moveX = preShiftX / abs( preShiftX ); + moveX = preShiftX / abs( preShiftX ); } - *moveY = preShiftY >> 12; - if ( !(*moveY) && preShiftY ) + moveY = preShiftY >> 12; + if ( !moveY && preShiftY ) { - *moveY = preShiftY / abs( preShiftY ); + moveY = preShiftY / abs( preShiftY ); } // deal with vertical - if ( Pos.vy < 0 || m_layerCollision->Get( ( Pos.vx + *moveX ) >> 4, ( Pos.vy + *moveY ) >> 4 ) ) + if ( Pos.vy < 0 || m_layerCollision->Get( ( Pos.vx + moveX ) >> 4, ( Pos.vy + moveY ) >> 4 ) ) { // reflect heading in vertical @@ -126,16 +135,18 @@ void CNpcEnemy::processBallBlobMovement( int _frames, s32 *moveX, s32 *moveY ) preShiftX = _frames * m_data[m_type].speed * rcos( m_heading ); preShiftY = _frames * m_data[m_type].speed * rsin( m_heading ); - *moveX = preShiftX >> 12; - if ( !(*moveX) && preShiftX ) + moveX = preShiftX >> 12; + if ( !moveX && preShiftX ) { - *moveX = preShiftX / abs( preShiftX ); + moveX = preShiftX / abs( preShiftX ); } - *moveY = preShiftY >> 12; - if ( !(*moveY) && preShiftY ) + moveY = preShiftY >> 12; + if ( !moveY && preShiftY ) { - *moveY = preShiftY / abs( preShiftY ); + moveY = preShiftY / abs( preShiftY ); } } + + processMovementModifier( _frames, moveX, moveY, moveVel, moveDist ); } \ No newline at end of file diff --git a/source/enemy/nclam.cpp b/source/enemy/nclam.cpp index 681bb9308..83c76a009 100644 --- a/source/enemy/nclam.cpp +++ b/source/enemy/nclam.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NCLAM_H__ +#include "enemy\nclam.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -23,12 +27,43 @@ #include "player\player.h" #endif +#ifndef __UTILS_HEADER__ +#include "utils\utils.h" +#endif + #ifndef __ANIM_CLAM_HEADER__ #include #endif -void CNpcEnemy::processCloseClamJumpAttack( int _frames ) +bool CNpcClamEnemy::processSensor() +{ + switch( m_sensorFunc ) + { + case NPC_SENSOR_NONE: + return( false ); + + default: + { + if ( playerXDistSqr + playerYDistSqr < 10000 ) + { + m_controlFunc = NPC_CONTROL_CLOSE; + m_extendDir = EXTEND_UP; + m_extension = 0; + m_movementTimer = GameState::getOneSecondInFrames() >> 3; + m_velocity = ( getRnd() % 6 ) + 1; + + return( true ); + } + else + { + return( false ); + } + } + } +} + +void CNpcJumpingClamEnemy::processClose( int _frames ) { s32 velocity; @@ -91,7 +126,7 @@ void CNpcEnemy::processCloseClamJumpAttack( int _frames ) } } -void CNpcEnemy::processCloseClamSnapAttack( int _frames ) +void CNpcStaticClamEnemy::processClose( int _frames ) { if ( !m_animPlaying ) { diff --git a/source/enemy/nclam.h b/source/enemy/nclam.h index 3c135b553..273b5f751 100644 --- a/source/enemy/nclam.h +++ b/source/enemy/nclam.h @@ -1,6 +1,6 @@ /*========================================================================= - nclam.cpp + nclam.h Author: CRB Created: diff --git a/source/enemy/neyeball.cpp b/source/enemy/neyeball.cpp index ee832ce1a..daf418d5a 100644 --- a/source/enemy/neyeball.cpp +++ b/source/enemy/neyeball.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NEYEBALL_H__ +#include "enemy\neyeball.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -28,7 +32,40 @@ #endif -void CNpcEnemy::processCloseEyeballAttack( int _frames ) +void CNpcEyeballEnemy::postInit() +{ + CProjectile *projectile; + projectile = new ( "eyeball projectile" ) CProjectile; + projectile->init( Pos, m_fireHeading, CProjectile::PROJECTILE_FIXED, CProjectile::PROJECTILE_INFINITE_LIFE ); + projectile->setLayerCollision( m_layerCollision ); + + addChild( projectile ); +} + +bool CNpcEyeballEnemy::processSensor() +{ + switch( m_sensorFunc ) + { + case NPC_SENSOR_NONE: + return( false ); + + default: + { + if ( playerXDistSqr + playerYDistSqr < 40000 ) + { + m_controlFunc = NPC_CONTROL_CLOSE; + + return( true ); + } + else + { + return( false ); + } + } + } +} + +void CNpcEyeballEnemy::processClose( int _frames ) { if ( Next ) { @@ -42,4 +79,14 @@ void CNpcEnemy::processCloseEyeballAttack( int _frames ) projectile->setState( CProjectile::PROJECTILE_ATTACK ); } } + else + { + CProjectile *projectile; + projectile = new ( "eyeball projectile" ) CProjectile; + projectile->init( Pos, m_fireHeading, CProjectile::PROJECTILE_USER_SEEK, CProjectile::PROJECTILE_INFINITE_LIFE ); + projectile->setLayerCollision( m_layerCollision ); + projectile->setState( CProjectile::PROJECTILE_ATTACK ); + + addChild( projectile ); + } } \ No newline at end of file diff --git a/source/enemy/neyeball.h b/source/enemy/neyeball.h new file mode 100644 index 000000000..f0b99c945 --- /dev/null +++ b/source/enemy/neyeball.h @@ -0,0 +1,25 @@ +/*========================================================================= + + neyeball.h + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2000 Climax Development Ltd + +===========================================================================*/ + +#ifndef __ENEMY_NEYEBALL_H__ +#define __ENEMY_NEYEBALL_H__ + +class CNpcEyeballEnemy : public CNpcEnemy +{ + virtual void postInit(); +protected: + virtual bool processSensor(); + virtual void processClose( int _frames ); +}; + +#endif \ No newline at end of file diff --git a/source/enemy/nffolk.cpp b/source/enemy/nffolk.cpp index f1edcb60f..0180f6755 100644 --- a/source/enemy/nffolk.cpp +++ b/source/enemy/nffolk.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NFFOLK_H__ +#include "enemy\nffolk.h" +#endif + #ifndef __UTILS_HEADER__ #include "utils\utils.h" #endif @@ -24,7 +28,7 @@ #endif -void CNpcEnemy::processFishFolkMovementModifier( int _frames, s32 distX, s32 distY ) +void CNpcFishFolk::processMovementModifier( int _frames, s32 distX, s32 distY, s32 dist, s16 headingChange ) { Pos.vy += distY; diff --git a/source/enemy/nfskull.cpp b/source/enemy/nfskull.cpp index b2d0ceb58..f20f59393 100644 --- a/source/enemy/nfskull.cpp +++ b/source/enemy/nfskull.cpp @@ -1,6 +1,6 @@ /*========================================================================= - nffolk.cpp + nfskull.cpp Author: CRB Created: @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NFSKULL_H__ +#include "enemy\nfskull.h" +#endif + #ifndef __PLAYER_PLAYER_H__ #include "player\player.h" #endif @@ -24,7 +28,35 @@ #endif -void CNpcEnemy::processCloseFlamingSkullAttack( int _frames ) +void CNpcFlamingSkullEnemy::postInit() +{ + m_state = FLAMING_SKULL_ATTACK; +} + +bool CNpcFlamingSkullEnemy::processSensor() +{ + switch( m_sensorFunc ) + { + case NPC_SENSOR_NONE: + return( false ); + + default: + { + if ( playerXDistSqr + playerYDistSqr < 40000 ) + { + m_controlFunc = NPC_CONTROL_CLOSE; + + return( true ); + } + else + { + return( false ); + } + } + } +} + +void CNpcFlamingSkullEnemy::processClose( int _frames ) { s32 distX, distY; s32 distXSqr, distYSqr; diff --git a/source/enemy/nfskull.h b/source/enemy/nfskull.h new file mode 100644 index 000000000..28443db9b --- /dev/null +++ b/source/enemy/nfskull.h @@ -0,0 +1,31 @@ +/*========================================================================= + + nfskull.h + + Author: CRB + Created: + Project: Spongebob + Purpose: + + Copyright (c) 2000 Climax Development Ltd + +===========================================================================*/ + +#ifndef __ENEMY_NFSKULL_H__ +#define __ENEMY_NFSKULL_H__ + +class CNpcFlamingSkullEnemy : public CNpcEnemy +{ + virtual void postInit(); +protected: + virtual bool processSensor(); + virtual void processClose( int _frames ); + + enum NPC_FLAMING_SKULL_STATE + { + FLAMING_SKULL_ATTACK = 0, + FLAMING_SKULL_RETURN = 1, + }; +}; + +#endif \ No newline at end of file diff --git a/source/enemy/ngpirate.cpp b/source/enemy/ngpirate.cpp index af9dc31a1..b399bf47f 100644 --- a/source/enemy/ngpirate.cpp +++ b/source/enemy/ngpirate.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NGPIRATE_H__ +#include "enemy\ngpirate.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -28,7 +32,34 @@ #endif -void CNpcEnemy::processCloseGhostPirateAttack( int _frames ) +bool CNpcGhostPirateEnemy::processSensor() +{ + switch( m_sensorFunc ) + { + case NPC_SENSOR_NONE: + return( false ); + + default: + { + if ( playerXDistSqr + playerYDistSqr < 10000 ) + { + m_controlFunc = NPC_CONTROL_CLOSE; + m_extendDir = EXTEND_UP; + m_extension = 0; + m_movementTimer = GameState::getOneSecondInFrames() >> 1; + m_velocity = 4; + + return( true ); + } + else + { + return( false ); + } + } + } +} + +void CNpcGhostPirateEnemy::processClose( int _frames ) { s32 velocity; diff --git a/source/enemy/nocto.cpp b/source/enemy/nocto.cpp index 4bcac0b37..c882acb61 100644 --- a/source/enemy/nocto.cpp +++ b/source/enemy/nocto.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NOCTO_H__ +#include "enemy\nocto.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -31,10 +35,34 @@ #include #endif -void CNpcEnemy::processBabyOctopusMovementModifier( int _frames, s32 dist, s16 headingChange ) +bool CNpcBabyOctopusEnemy::processSensor() +{ + switch( m_sensorFunc ) + { + case NPC_SENSOR_NONE: + return( false ); + + default: + { + if ( playerXDistSqr + playerYDistSqr < 400 ) + { + m_controlFunc = NPC_CONTROL_CLOSE; + + return( true ); + } + else + { + return( false ); + } + } + } +} + +void CNpcBabyOctopusEnemy::processMovementModifier( int _frames, s32 distX, s32 distY, s32 dist, s16 headingChange ) { s32 newX, newY; s32 preShiftX, preShiftY; + s16 headingVal; //u16 octopusData[11] = { 96, 192, 256, 256, 256, 192, 192, 192, 128, 128, 96 }; u16 octopusData[11] = { 96, 256, 96, 256, 96, 256, 96, 256, 96, 256, 96 }; @@ -77,9 +105,15 @@ void CNpcEnemy::processBabyOctopusMovementModifier( int _frames, s32 dist, s16 h m_velocity += resistance; + headingVal = abs( headingChange ); + if ( headingVal > 128 ) + { + headingVal = 128; + } + reqVelocity = dist * octopusData[dataPoint]; reqVelocity >>= 8; - reqVelocity *= 128 + ( 128 - headingChange ); + reqVelocity *= 128 + ( 128 - headingVal ); reqVelocity >>= 8; s32 absReqVelocity = abs( reqVelocity ); @@ -108,9 +142,9 @@ void CNpcEnemy::processBabyOctopusMovementModifier( int _frames, s32 dist, s16 h Pos.vy += newY; } -void CNpcEnemy::processCloseOctopusAttack( int _frames ) +void CNpcBabyOctopusEnemy::processClose( int _frames ) { - if ( !m_animPlaying || m_animNo == m_data[m_type].initAnim || m_animNo == m_data[m_type].moveAnim ) + if ( m_animNo == m_data[m_type].initAnim || m_animNo == m_data[m_type].moveAnim ) { // not playing an attack anim, hence choose one @@ -142,7 +176,9 @@ void CNpcEnemy::processCloseOctopusAttack( int _frames ) m_animPlaying = true; m_frame = 0; - + } + else if ( !m_animPlaying ) + { m_controlFunc = NPC_CONTROL_MOVEMENT; m_timerFunc = NPC_TIMER_ATTACK_DONE; m_timerTimer = GameState::getOneSecondInFrames(); diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index 823ac0409..ffaf5cefa 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -423,25 +423,6 @@ void CNpcEnemy::postInit() break; } - case NPC_INIT_FLAMING_SKULL: - { - m_state = FLAMING_SKULL_ATTACK; - - break; - } - - case NPC_INIT_EYEBALL: - { - CProjectile *projectile; - projectile = new ( "eyeball projectile" ) CProjectile; - projectile->init( Pos, m_fireHeading, CProjectile::PROJECTILE_FIXED, CProjectile::PROJECTILE_INFINITE_LIFE ); - projectile->setLayerCollision( m_layerCollision ); - - addChild( projectile ); - - break; - } - case NPC_INIT_ANEMONE_2: { CProjectile *projectile; @@ -821,24 +802,6 @@ bool CNpcEnemy::processSensor() { switch( m_sensorFunc ) { - case NPC_SENSOR_CLAM_USER_CLOSE: - { - if ( playerXDistSqr + playerYDistSqr < 10000 ) - { - m_controlFunc = NPC_CONTROL_CLOSE; - m_extendDir = EXTEND_UP; - m_extension = 0; - m_movementTimer = GameState::getOneSecondInFrames() >> 3; - m_velocity = ( getRnd() % 6 ) + 1; - - return( true ); - } - else - { - return( false ); - } - } - case NPC_SENSOR_OIL_BLOB_USER_CLOSE: case NPC_SENSOR_NINJA_STARFISH_USER_CLOSE: { @@ -855,24 +818,6 @@ bool CNpcEnemy::processSensor() } } - case NPC_SENSOR_GHOST_PIRATE_USER_CLOSE: - { - if ( playerXDistSqr + playerYDistSqr < 10000 ) - { - m_controlFunc = NPC_CONTROL_CLOSE; - m_extendDir = EXTEND_UP; - m_extension = 0; - m_movementTimer = GameState::getOneSecondInFrames() >> 1; - m_velocity = 4; - - return( true ); - } - else - { - return( false ); - } - } - case NPC_SENSOR_GENERIC_USER_VISIBLE: { s32 xDistWaypoint, yDistWaypoint; @@ -975,8 +920,6 @@ bool CNpcEnemy::processSensor() } } - case NPC_SENSOR_EYEBALL_USER_CLOSE: - case NPC_SENSOR_FLAMING_SKULL_USER_CLOSE: case NPC_SENSOR_PARASITIC_WORM_USER_CLOSE: { if ( playerXDistSqr + playerYDistSqr < 40000 ) @@ -1035,23 +978,7 @@ bool CNpcEnemy::processSensor() } } - case NPC_SENSOR_PUFFA_FISH_USER_CLOSE: - { - if ( playerXDistSqr + playerYDistSqr < 10000 ) - { - m_state = PUFFA_FISH_NO_INFLATE; - m_controlFunc = NPC_CONTROL_CLOSE; - - return( true ); - } - else - { - return( false ); - } - } - case NPC_SENSOR_FISH_HOOK_USER_CLOSE: - case NPC_SENSOR_OCTOPUS_USER_CLOSE: { if ( playerXDistSqr + playerYDistSqr < 400 ) { @@ -1093,10 +1020,10 @@ bool CNpcEnemy::processSensor() void CNpcEnemy::processMovement(int _frames) { - if ( _frames > 2 ) - { - _frames = 2; - } + //if ( _frames > 2 ) + //{ + //_frames = 2; + //} s32 moveX = 0, moveY = 0; s32 moveVel = 0; @@ -1212,20 +1139,6 @@ void CNpcEnemy::processMovement(int _frames) break; } - case NPC_MOVEMENT_SHARK_MAN: - { - processSharkManMovement( _frames, &moveX, &moveY ); - - break; - } - - case NPC_MOVEMENT_BALL_BLOB: - { - processBallBlobMovement( _frames, &moveX, &moveY ); - - break; - } - default: break; @@ -1238,35 +1151,8 @@ void CNpcEnemy::processMovement(int _frames) void CNpcEnemy::processMovementModifier(int _frames, s32 distX, s32 distY, s32 dist, s16 headingChange) { - switch( m_data[m_type].movementModifierFunc ) - { - case NPC_MOVEMENT_MODIFIER_NONE: - { - Pos.vx += distX; - Pos.vy += distY; - - break; - } - - case NPC_MOVEMENT_MODIFIER_BOB: - { - break; - } - - case NPC_MOVEMENT_MODIFIER_FISH_FOLK: - { - processFishFolkMovementModifier( _frames, distX, distY ); - - break; - } - - case NPC_MOVEMENT_MODIFIER_OCTOPUS: - { - processBabyOctopusMovementModifier( _frames, dist, headingChange ); - - break; - } - } + Pos.vx += distX; + Pos.vy += distY; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1367,16 +1253,6 @@ void CNpcEnemy::processClose(int _frames) { switch( m_data[this->m_type].closeFunc ) { - case NPC_CLOSE_CLAM_JUMP_ATTACK: - processCloseClamJumpAttack( _frames ); - - break; - - case NPC_CLOSE_CLAM_SNAP_ATTACK: - processCloseClamSnapAttack( _frames ); - - break; - case NPC_CLOSE_GENERIC_USER_SEEK: { processGenericGotoTarget( _frames, playerXDist, playerYDist, m_data[m_type].speed ); @@ -1384,36 +1260,6 @@ void CNpcEnemy::processClose(int _frames) break; } - case NPC_CLOSE_GHOST_PIRATE_ATTACK: - processCloseGhostPirateAttack( _frames ); - - break; - - case NPC_CLOSE_SHARK_MAN_ATTACK: - processCloseSharkManAttack( _frames ); - - break; - - case NPC_CLOSE_ANEMONE_1_ATTACK: - processCloseAnemone1Attack( _frames ); - - break; - - case NPC_CLOSE_ANEMONE_2_ATTACK: - processCloseAnemone2Attack( _frames ); - - break; - - case NPC_CLOSE_ANEMONE_3_ATTACK: - processCloseAnemone3Attack( _frames ); - - break; - - case NPC_CLOSE_EYEBALL_ATTACK: - processCloseEyeballAttack( _frames ); - - break; - case NPC_CLOSE_SKULL_STOMPER_ATTACK: processCloseSkullStomperAttack( _frames ); @@ -1454,26 +1300,6 @@ void CNpcEnemy::processClose(int _frames) break; - case NPC_CLOSE_FLAMING_SKULL_ATTACK: - processCloseFlamingSkullAttack( _frames ); - - break; - - case NPC_CLOSE_SKELETAL_FISH_ATTACK: - processCloseSkeletalFishAttack( _frames ); - - break; - - case NPC_CLOSE_OCTOPUS_ATTACK: - processCloseOctopusAttack( _frames ); - - break; - - case NPC_CLOSE_PUFFA_FISH_INFLATE: - processClosePuffaFishInflate( _frames ); - - break; - case NPC_CLOSE_PARASITIC_WORM_ATTACK: processCloseParasiticWormAttack( _frames ); diff --git a/source/enemy/npc.h b/source/enemy/npc.h index 960764e74..90b5d906e 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -70,7 +70,6 @@ protected: //NPC_FRIEND_INIT_FUNC initFunc; //NPC_FRIEND_SENSOR_FUNC sensorFunc; NPC_FRIEND_MOVEMENT_FUNC movementFunc; - //NPC_FRIEND_MOVEMENT_MODIFIER_FUNC movementModifierFunc; //NPC_FRIEND_CLOSE_FUNC closeFunc; //NPC_FRIEND_TIMER_FUNC timerFunc; bool canTalk; @@ -160,7 +159,7 @@ public: }; void init(); - void postInit(); + virtual void postInit(); void shutdown(); virtual void think(int _frames); virtual void render(); @@ -201,12 +200,10 @@ protected: NPC_INIT_FIREBALL, NPC_INIT_RETURNING_HAZARD, NPC_INIT_FISH_FOLK, - NPC_INIT_FLAMING_SKULL, NPC_INIT_CIRCULAR_PLATFORM, NPC_INIT_PARASITIC_WORM, NPC_INIT_PARASITIC_WORM_SEGMENT, NPC_INIT_HERMIT_CRAB, - NPC_INIT_EYEBALL, NPC_INIT_BALL_BLOB, NPC_INIT_ANEMONE_2, NPC_INIT_SPIDER_CRAB, @@ -225,35 +222,21 @@ protected: { NPC_SENSOR_NONE = 0, NPC_SENSOR_USER_CLOSE = 1, - NPC_SENSOR_CLAM_USER_CLOSE, NPC_SENSOR_NINJA_STARFISH_USER_CLOSE, - NPC_SENSOR_GHOST_PIRATE_USER_CLOSE, NPC_SENSOR_GENERIC_USER_VISIBLE, NPC_SENSOR_OIL_BLOB_USER_CLOSE, - NPC_SENSOR_EYEBALL_USER_CLOSE, NPC_SENSOR_SKULL_STOMPER_USER_CLOSE, NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE, NPC_SENSOR_IRON_DOGFISH_USER_CLOSE, NPC_SENSOR_FALLING_ITEM_USER_CLOSE, NPC_SENSOR_FISH_HOOK_USER_CLOSE, - NPC_SENSOR_FLAMING_SKULL_USER_CLOSE, - NPC_SENSOR_OCTOPUS_USER_CLOSE, - NPC_SENSOR_PUFFA_FISH_USER_CLOSE, NPC_SENSOR_PARASITIC_WORM_USER_CLOSE, }; enum NPC_CLOSE_FUNC { NPC_CLOSE_NONE = 0, - NPC_CLOSE_CLAM_JUMP_ATTACK = 1, - NPC_CLOSE_CLAM_SNAP_ATTACK, - NPC_CLOSE_GHOST_PIRATE_ATTACK, - NPC_CLOSE_SHARK_MAN_ATTACK, - NPC_CLOSE_GENERIC_USER_SEEK, - NPC_CLOSE_ANEMONE_1_ATTACK, - NPC_CLOSE_ANEMONE_2_ATTACK, - NPC_CLOSE_ANEMONE_3_ATTACK, - NPC_CLOSE_EYEBALL_ATTACK, + NPC_CLOSE_GENERIC_USER_SEEK = 1, NPC_CLOSE_SKULL_STOMPER_ATTACK, NPC_CLOSE_BOOGER_MONSTER_ATTACK, NPC_CLOSE_MOTHER_JELLYFISH_ATTACK, @@ -262,11 +245,7 @@ protected: NPC_CLOSE_IRON_DOGFISH_ATTACK, NPC_CLOSE_FALLING_ITEM_FALL, NPC_CLOSE_FISH_HOOK_RISE, - NPC_CLOSE_FLAMING_SKULL_ATTACK, - NPC_CLOSE_SKELETAL_FISH_ATTACK, NPC_CLOSE_HERMIT_CRAB_ATTACK, - NPC_CLOSE_OCTOPUS_ATTACK, - NPC_CLOSE_PUFFA_FISH_INFLATE, NPC_CLOSE_PARASITIC_WORM_ATTACK, }; @@ -285,20 +264,10 @@ protected: NPC_MOVEMENT_CLAM_RETRACT, NPC_MOVEMENT_PARASITIC_WORM, NPC_MOVEMENT_STATIC_CYCLE_ANIM, - NPC_MOVEMENT_SHARK_MAN, - NPC_MOVEMENT_BALL_BLOB, NPC_MOVEMENT_RETURNING_HAZARD_GROUND, NPC_MOVEMENT_SPIDER_CRAB_INITJUMP, }; - enum NPC_MOVEMENT_MODIFIER_FUNC - { - NPC_MOVEMENT_MODIFIER_NONE = 0, - NPC_MOVEMENT_MODIFIER_BOB = 1, - NPC_MOVEMENT_MODIFIER_FISH_FOLK, - NPC_MOVEMENT_MODIFIER_OCTOPUS, - }; - enum NPC_TIMER_FUNC { NPC_TIMER_NONE = 0, @@ -350,12 +319,6 @@ protected: IRON_DOGFISH_LASER_EYE_2, }; - enum NPC_FLAMING_SKULL_STATE - { - FLAMING_SKULL_ATTACK = 0, - FLAMING_SKULL_RETURN = 1, - }; - enum NPC_HERMIT_CRAB_STATE { HERMIT_CRAB_NO_ATTACK = 0, @@ -363,13 +326,6 @@ protected: HERMIT_CRAB_ROLL_ATTACK, }; - enum NPC_PUFFA_FISH_STATE - { - PUFFA_FISH_NO_INFLATE = 0, - PUFFA_FISH_TURN = 1, - PUFFA_FISH_INFLATE, - }; - enum NPC_GENERIC_HIT_STATE { NPC_GENERIC_HIT_CHECK_HEALTH = 100, @@ -411,7 +367,6 @@ protected: NPC_INIT_FUNC initFunc; NPC_SENSOR_FUNC sensorFunc; NPC_MOVEMENT_FUNC movementFunc; - NPC_MOVEMENT_MODIFIER_FUNC movementModifierFunc; NPC_CLOSE_FUNC closeFunc; NPC_TIMER_FUNC timerFunc; bool canTalk; @@ -450,56 +405,6 @@ protected: void reinit(); - // small jellyfish functions - - void processSmallJellyfishSensor(); - void processCloseSmallJellyfishEvade( int _frames ); - - // baby octopus functions - - void processBabyOctopusMovementModifier( int _frames, s32 dist, s16 headingChange ); - void processCloseOctopusAttack( int _frames ); - - // fish folk functions - - void processFishFolkMovementModifier( int _frames, s32 distX, s32 distY ); - - // ball blob functions - - void processBallBlobMovement( int _frames, s32 *moveX, s32 *moveY ); - - // clam functions - - void processCloseClamJumpAttack( int _frames ); - void processCloseClamSnapAttack( int _frames ); - - // ghost pirate functions - - void processCloseGhostPirateAttack( int _frames ); - - // puffa fish functions - - void processClosePuffaFishInflate( int _frames ); - - // shark man functions - - void processSharkManMovement( int _frames, s32 *moveX, s32 *moveY ); - void processCloseSharkManAttack( int _frames ); - - // anemone functions - - void processCloseAnemone1Attack( int _frames ); - void processCloseAnemone2Attack( int _frames ); - void processCloseAnemone3Attack( int _frames ); - - // skeletal fish functions - - void processCloseSkeletalFishAttack( int _frames ); - - // eyeball functions - - void processCloseEyeballAttack( int _frames ); - // flaming skull functions void processCloseFlamingSkullAttack( int _frames ); diff --git a/source/enemy/npcdata.cpp b/source/enemy/npcdata.cpp index aed94c86e..6490f9b4c 100644 --- a/source/enemy/npcdata.cpp +++ b/source/enemy/npcdata.cpp @@ -321,7 +321,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = //NPC_SENSOR_FALLING_ITEM_USER_CLOSE, NPC_SENSOR_NONE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_FALLING_ITEM_FALL, NPC_TIMER_NONE, false, @@ -344,7 +343,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_FISH_HOOK, NPC_SENSOR_FISH_HOOK_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_FISH_HOOK_RISE, NPC_TIMER_NONE, false, @@ -367,7 +365,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_RETURNING_HAZARD, NPC_SENSOR_NONE, NPC_MOVEMENT_RETURNING_HAZARD_GROUND, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -390,7 +387,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_PENDULUM, NPC_SENSOR_NONE, NPC_MOVEMENT_PENDULUM, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -413,7 +409,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_FIREBALL, NPC_SENSOR_NONE, NPC_MOVEMENT_FIREBALL, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -436,7 +431,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_RETURNING_HAZARD, NPC_SENSOR_NONE, NPC_MOVEMENT_RETURNING_HAZARD, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -459,7 +453,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -482,7 +475,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -505,8 +497,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC_CYCLE_ANIM, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_ANEMONE_1_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -528,8 +519,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_ANEMONE_2, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC_CYCLE_ANIM, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_ANEMONE_2_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -551,8 +541,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC_CYCLE_ANIM, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_ANEMONE_3_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -574,8 +563,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_GENERIC_USER_VISIBLE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_SKELETAL_FISH_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 3, @@ -595,10 +583,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ACTORS_CLAM_SBK, ANIM_CLAM_SIDESNAP, NPC_INIT_DEFAULT, - NPC_SENSOR_CLAM_USER_CLOSE, + NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_CLAM_JUMP_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -618,10 +605,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ACTORS_CLAM_SBK, ANIM_CLAM_SIDESNAP, NPC_INIT_DEFAULT, - NPC_SENSOR_CLAM_USER_CLOSE, + NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_CLAM_SNAP_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -643,7 +629,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -666,7 +651,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_FISH_FOLK, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH_WALK, - NPC_MOVEMENT_MODIFIER_FISH_FOLK, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -689,7 +673,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH_WALK, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -712,7 +695,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -733,10 +715,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ACTORS_PUFFAFISH_SBK, ANIM_PUFFAFISH_PUFFUPIDLE, NPC_INIT_DEFAULT, - NPC_SENSOR_PUFFA_FISH_USER_CLOSE, + NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_PUFFA_FISH_INFLATE, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 2, @@ -758,7 +739,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -781,7 +761,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_HERMIT_CRAB, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_FIXED_PATH_WALK, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_HERMIT_CRAB_ATTACK, NPC_TIMER_NONE, false, @@ -804,7 +783,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -827,7 +805,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_BOOGER_MONSTER_ATTACK, NPC_TIMER_NONE, false, @@ -850,7 +827,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_SPIDER_CRAB, NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_FIXED_PATH_WALK, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -873,7 +849,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -893,11 +868,10 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = { // NPC_EYEBALL ACTORS_EYEBALL_SBK, ANIM_EYEBALL_STALK, - NPC_INIT_EYEBALL, - NPC_SENSOR_EYEBALL_USER_CLOSE, + NPC_INIT_DEFAULT, + NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_EYEBALL_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -917,10 +891,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ACTORS_BABYOCTOPUS_SBK, ANIM_BABYOCTOPUS_IDLE, NPC_INIT_DEFAULT, - NPC_SENSOR_OCTOPUS_USER_CLOSE, + NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_OCTOPUS, - NPC_CLOSE_OCTOPUS_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 2, @@ -942,7 +915,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_FISH_FOLK, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH_WALK, - NPC_MOVEMENT_MODIFIER_FISH_FOLK, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -965,7 +937,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NINJA_STARFISH_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_GENERIC_USER_SEEK, NPC_TIMER_NONE, false, @@ -988,7 +959,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_NONE, NPC_MOVEMENT_FIXED_PATH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -1009,10 +979,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ACTORS_CLAM_SBK, ANIM_CLAM_SIDESNAP, NPC_INIT_GHOST_PIRATE, - NPC_SENSOR_GHOST_PIRATE_USER_CLOSE, + NPC_SENSOR_NONE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_GHOST_PIRATE_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 0, @@ -1031,11 +1000,10 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = { // NPC_FLAMING_SKULL ACTORS_FLAMINGSKULL_SBK, ANIM_FLAMINGSKULL_MOVE, - NPC_INIT_FLAMING_SKULL, - NPC_SENSOR_FLAMING_SKULL_USER_CLOSE, + NPC_INIT_DEFAULT, + NPC_SENSOR_USER_CLOSE, NPC_MOVEMENT_STATIC_CYCLE_ANIM, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_FLAMING_SKULL_ATTACK, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 3, @@ -1056,9 +1024,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ANIM_SHARKMAN_IDLE1_, NPC_INIT_DEFAULT, NPC_SENSOR_GENERIC_USER_VISIBLE, - NPC_MOVEMENT_SHARK_MAN, - NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_SHARK_MAN_ATTACK, + NPC_MOVEMENT_STATIC, + NPC_CLOSE_NONE, NPC_TIMER_NONE, false, 3, @@ -1080,7 +1047,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_DEFAULT, NPC_SENSOR_OIL_BLOB_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_GENERIC_USER_SEEK, NPC_TIMER_NONE, false, @@ -1103,7 +1069,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_SKULL_STOMPER, NPC_SENSOR_SKULL_STOMPER_USER_CLOSE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_SKULL_STOMPER_ATTACK, NPC_TIMER_NONE, false, @@ -1126,7 +1091,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_MOTHER_JELLYFISH, NPC_SENSOR_NONE, NPC_MOVEMENT_MOTHER_JELLYFISH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_MOTHER_JELLYFISH_ATTACK, NPC_TIMER_NONE, false, @@ -1149,7 +1113,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_SUB_SHARK, NPC_SENSOR_NONE, NPC_MOVEMENT_SUB_SHARK, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_SUB_SHARK_ATTACK, NPC_TIMER_NONE, false, @@ -1172,7 +1135,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_PARASITIC_WORM, NPC_SENSOR_PARASITIC_WORM_USER_CLOSE, NPC_MOVEMENT_PARASITIC_WORM, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_PARASITIC_WORM_ATTACK, NPC_TIMER_NONE, false, @@ -1195,7 +1157,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_FLYING_DUTCHMAN, NPC_SENSOR_NONE, NPC_MOVEMENT_FLYING_DUTCHMAN, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_FLYING_DUTCHMAN_ATTACK, NPC_TIMER_NONE, false, @@ -1218,7 +1179,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_IRON_DOGFISH, NPC_SENSOR_IRON_DOGFISH_USER_CLOSE, NPC_MOVEMENT_IRON_DOGFISH, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_IRON_DOGFISH_ATTACK, NPC_TIMER_NONE, false, @@ -1241,7 +1201,6 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_INIT_PARASITIC_WORM_SEGMENT, NPC_SENSOR_NONE, NPC_MOVEMENT_STATIC, - NPC_MOVEMENT_MODIFIER_NONE, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, @@ -1263,8 +1222,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = ANIM_BALLBLOB_WOBBLE, NPC_INIT_BALL_BLOB, NPC_SENSOR_NONE, - NPC_MOVEMENT_BALL_BLOB, - NPC_MOVEMENT_MODIFIER_NONE, + NPC_MOVEMENT_STATIC, NPC_CLOSE_NONE, NPC_TIMER_NONE, false, diff --git a/source/enemy/npuffa.cpp b/source/enemy/npuffa.cpp index be1335cb7..dd889248e 100644 --- a/source/enemy/npuffa.cpp +++ b/source/enemy/npuffa.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NPUFFA_H__ +#include "enemy\npuffa.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -24,7 +28,31 @@ #endif -void CNpcEnemy::processClosePuffaFishInflate( int _frames ) +bool CNpcPuffaFishEnemy::processSensor() +{ + switch( m_sensorFunc ) + { + case NPC_SENSOR_NONE: + return( false ); + + default: + { + if ( playerXDistSqr + playerYDistSqr < 10000 ) + { + m_state = PUFFA_FISH_NO_INFLATE; + m_controlFunc = NPC_CONTROL_CLOSE; + + return( true ); + } + else + { + return( false ); + } + } + } +} + +void CNpcPuffaFishEnemy::processClose( int _frames ) { if ( playerXDistSqr + playerYDistSqr > 15000 ) { diff --git a/source/enemy/nshrkman.cpp b/source/enemy/nshrkman.cpp index 4db8c5e22..881ef2010 100644 --- a/source/enemy/nshrkman.cpp +++ b/source/enemy/nshrkman.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NSHRKMAN_H__ +#include "enemy\nshrkman.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -32,15 +36,17 @@ #endif -void CNpcEnemy::processSharkManMovement( int _frames, s32 *moveX, s32 *moveY ) +void CNpcSharkManEnemy::processMovement( int _frames ) { + s32 moveX = 0, moveY = 0; + if ( m_movementTimer > 0 ) { m_movementTimer -= _frames; if ( m_animNo == m_data[m_type].moveAnim ) { - processGenericFixedPathWalk( _frames, moveX, moveY ); + processGenericFixedPathWalk( _frames, &moveX, &moveY ); } if ( !m_animPlaying ) @@ -111,9 +117,11 @@ void CNpcEnemy::processSharkManMovement( int _frames, s32 *moveX, s32 *moveY ) m_animPlaying = true; m_frame = 0; } + + processMovementModifier( _frames, moveX, moveY, 0, 0 ); } -void CNpcEnemy::processCloseSharkManAttack( int _frames ) +void CNpcSharkManEnemy::processClose( int _frames ) { s32 moveX = 0, moveY = 0; s32 groundHeight; diff --git a/source/enemy/nsklfish.cpp b/source/enemy/nsklfish.cpp index 174556129..52c08efc2 100644 --- a/source/enemy/nsklfish.cpp +++ b/source/enemy/nsklfish.cpp @@ -15,6 +15,10 @@ #include "enemy\npc.h" #endif +#ifndef __ENEMY_NSKLFISH_H__ +#include "enemy\nsklfish.h" +#endif + #ifndef __GAME_GAME_H__ #include "game\game.h" #endif @@ -28,7 +32,7 @@ #endif -void CNpcEnemy::processCloseSkeletalFishAttack( int _frames ) +void CNpcSkeletalFishEnemy::processClose( int _frames ) { s32 moveX, moveY; s16 decDir, incDir, moveDist; diff --git a/source/game/game.cpp b/source/game/game.cpp index 613a94a52..7a2dd5049 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -47,6 +47,46 @@ #include "enemy\nanemone.h" #endif +#ifndef __ENEMY_NCLAM_H__ +#include "enemy\nclam.h" +#endif + +#ifndef __ENEMY_NOCTO_H__ +#include "enemy\nocto.h" +#endif + +#ifndef __ENEMY_NFFOLK_H__ +#include "enemy\nffolk.h" +#endif + +#ifndef __ENEMY_NBBLOB_H__ +#include "enemy\nbblob.h" +#endif + +#ifndef __ENEMY_NGPIRATE_H__ +#include "enemy\ngpirate.h" +#endif + +#ifndef __ENEMY_NPUFFA_H__ +#include "enemy\npuffa.h" +#endif + +#ifndef __ENEMY_NSHRKMAN_H__ +#include "enemy\nshrkman.h" +#endif + +#ifndef __ENEMY_NSKLFISH_H__ +#include "enemy\nsklfish.h" +#endif + +#ifndef __ENEMY_NEYEBALL_H__ +#include "enemy\neyeball.h" +#endif + +#ifndef __ENEMY_NFSKULL_H__ +#include "enemy\nfskull.h" +#endif + #ifndef __ENEMY_NPLATFRM_H__ #include "enemy\nplatfrm.h" #endif @@ -373,6 +413,73 @@ void CGameScene::initLevel() break; } + case CNpcEnemy::NPC_CLAM_JUMP: + { + enemy = new ("jumping clam") CNpcJumpingClamEnemy; + break; + } + + case CNpcEnemy::NPC_CLAM_STATIC: + { + enemy = new ("static clam") CNpcStaticClamEnemy; + break; + } + + case CNpcEnemy::NPC_BABY_OCTOPUS: + { + enemy = new ("baby octopus") CNpcBabyOctopusEnemy; + break; + } + + case CNpcEnemy::NPC_FISH_FOLK: + case CNpcEnemy::NPC_ZOMBIE_FISH_FOLK: + { + enemy = new ("fish folk") CNpcFishFolk; + break; + } + + case CNpcEnemy::NPC_BALL_BLOB: + { + enemy = new ("ball blob") CNpcBallBlobEnemy; + break; + } + + case CNpcEnemy::NPC_GHOST_PIRATE: + { + enemy = new ("ghost pirate") CNpcGhostPirateEnemy; + break; + } + + case CNpcEnemy::NPC_PUFFA_FISH: + { + enemy = new ("puffa fish") CNpcPuffaFishEnemy; + break; + } + + case CNpcEnemy::NPC_SHARK_MAN: + { + enemy = new ("shark man") CNpcSharkManEnemy; + break; + } + + case CNpcEnemy::NPC_SKELETAL_FISH: + { + enemy = new ("skeletal fish") CNpcSkeletalFishEnemy; + break; + } + + case CNpcEnemy::NPC_EYEBALL: + { + enemy = new ("eyeball") CNpcEyeballEnemy; + break; + } + + case CNpcEnemy::NPC_FLAMING_SKULL: + { + enemy = new ("flaming skull") CNpcFlamingSkullEnemy; + break; + } + default: { enemy = new ("npc enemy") CNpcEnemy; diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 49f99b4c2..a1cf70bbe 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -121,6 +121,10 @@ SOURCE=..\..\..\source\enemy\nbblob.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nbblob.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nbooger.cpp # End Source File # Begin Source File @@ -129,6 +133,10 @@ SOURCE=..\..\..\source\enemy\nclam.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nclam.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\ndogfish.cpp # End Source File # Begin Source File @@ -137,6 +145,10 @@ SOURCE=..\..\..\source\enemy\neyeball.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\neyeball.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nfdutch.cpp # End Source File # Begin Source File @@ -145,10 +157,18 @@ SOURCE=..\..\..\source\enemy\nffolk.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nffolk.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nfskull.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nfskull.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\ngary.cpp # End Source File # Begin Source File @@ -169,6 +189,10 @@ SOURCE=..\..\..\source\enemy\ngpirate.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\ngpirate.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nhazard.cpp # End Source File # Begin Source File @@ -189,6 +213,10 @@ SOURCE=..\..\..\source\enemy\nocto.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nocto.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\npc.cpp # End Source File # Begin Source File @@ -221,6 +249,10 @@ SOURCE=..\..\..\source\enemy\npuffa.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\npuffa.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nscrab.cpp # End Source File # Begin Source File @@ -233,6 +265,10 @@ SOURCE=..\..\..\source\enemy\nshrkman.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nshrkman.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nsjfish.cpp # End Source File # Begin Source File @@ -245,6 +281,10 @@ SOURCE=..\..\..\source\enemy\nsklfish.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\nsklfish.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\nsshark.cpp # End Source File # Begin Source File