From de136cdcf9335507b2edf93af13ccb2de998fdd7 Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 25 Jan 2001 19:57:29 +0000 Subject: [PATCH] --- makefile.gaz | 1 + source/enemy/npc.cpp | 59 ++++++++++++++----- source/enemy/npc.h | 34 ++++++++--- source/enemy/nsshark.cpp | 27 +++------ .../spongebob project/spongebob project.dsp | 4 ++ 5 files changed, 86 insertions(+), 39 deletions(-) diff --git a/makefile.gaz b/makefile.gaz index 04cb3615a..92faa809f 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -67,6 +67,7 @@ enemy_src := 2denemy \ nmjfish \ nfdutch \ nsshark \ + ndogfish \ enemy projectl_src := projectl diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index 4f316a8db..f90c5d68e 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -418,12 +418,24 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 3, 256, }, + + { // NPC_IRON_DOGFISH + NPC_INIT_IRON_DOGFISH, + NPC_SENSOR_NONE, + NPC_MOVEMENT_IRON_DOGFISH, + NPC_MOVEMENT_MODIFIER_NONE, + NPC_CLOSE_IRON_DOGFISH_ATTACK, + NPC_TIMER_NONE, + false, + 3, + 2048, + }, }; void CNpc::init() { - m_type = NPC_SUB_SHARK; + m_type = NPC_IRON_DOGFISH; m_heading = m_fireHeading = 0; m_movementTimer = 0; @@ -525,6 +537,14 @@ void CNpc::init() break; } + case NPC_INIT_IRON_DOGFISH: + { + m_state = IRON_DOGFISH_THUMP_1; + m_extendDir = EXTEND_RIGHT; + + break; + } + default: break; @@ -793,19 +813,6 @@ bool CNpc::processSensor() } case NPC_SENSOR_ANEMONE_USER_CLOSE: - { - if ( xDistSqr + yDistSqr < 40000 ) - { - m_controlFunc = NPC_CONTROL_CLOSE; - - return( true ); - } - else - { - return( false ); - } - } - case NPC_SENSOR_EYEBALL_USER_CLOSE: { if ( xDistSqr + yDistSqr < 40000 ) @@ -850,6 +857,20 @@ bool CNpc::processSensor() } } + case NPC_SENSOR_IRON_DOGFISH_USER_CLOSE: + { + if ( xDistSqr + yDistSqr < 10000 ) + { + m_controlFunc = NPC_CONTROL_CLOSE; + + return( true ); + } + else + { + return( false ); + } + } + default: return( false ); } @@ -985,6 +1006,13 @@ void CNpc::processMovement(int _frames) break; } + case NPC_MOVEMENT_IRON_DOGFISH: + { + processIronDogfishMovement( _frames ); + + break; + } + default: break; @@ -1097,6 +1125,9 @@ void CNpc::processClose(int _frames) break; + case NPC_CLOSE_IRON_DOGFISH_ATTACK: + processCloseIronDogfishAttack( _frames ); + default: break; } diff --git a/source/enemy/npc.h b/source/enemy/npc.h index 04ac2d6d1..703fe7523 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -60,6 +60,7 @@ public: NPC_MOTHER_JELLYFISH, NPC_SUB_SHARK, NPC_FLYING_DUTCHMAN, + NPC_IRON_DOGFISH, NPC_UNIT_TYPE_MAX, }; @@ -83,6 +84,7 @@ protected: NPC_INIT_MOTHER_JELLYFISH, NPC_INIT_SUB_SHARK, NPC_INIT_FLYING_DUTCHMAN, + NPC_INIT_IRON_DOGFISH, }; enum NPC_CONTROL_FUNC @@ -107,6 +109,7 @@ protected: NPC_SENSOR_EYEBALL_USER_CLOSE, NPC_SENSOR_SKULL_STOMPER_USER_CLOSE, NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE, + NPC_SENSOR_IRON_DOGFISH_USER_CLOSE, }; enum NPC_CLOSE_FUNC @@ -126,6 +129,7 @@ protected: NPC_CLOSE_MOTHER_JELLYFISH_ATTACK, NPC_CLOSE_SUB_SHARK_ATTACK, NPC_CLOSE_FLYING_DUTCHMAN_ATTACK, + NPC_CLOSE_IRON_DOGFISH_ATTACK, }; enum NPC_MOVEMENT_FUNC @@ -137,6 +141,7 @@ protected: NPC_MOVEMENT_MOTHER_JELLYFISH, NPC_MOVEMENT_SUB_SHARK, NPC_MOVEMENT_FLYING_DUTCHMAN, + NPC_MOVEMENT_IRON_DOGFISH, }; enum NPC_MOVEMENT_MODIFIER_FUNC @@ -160,6 +165,13 @@ protected: MOTHER_JELLYFISH_ATTACK_PLAYER, }; + enum NPC_SUB_SHARK_STATE + { + SUB_SHARK_CYCLE = 0, + SUB_SHARK_MINE_1 = 1, + SUB_SHARK_MINE_2, + }; + enum NPC_FLYING_DUTCHMAN_STATE { FLYING_DUTCHMAN_ATTACK_PLAYER_1 = 0, @@ -167,11 +179,13 @@ protected: FLYING_DUTCHMAN_ATTACK_PLAYER_3, }; - enum NPC_SUB_SHARK_STATE + enum NPC_IRON_DOGFISH_STATE { - SUB_SHARK_CYCLE = 0, - SUB_SHARK_MINE_1 = 1, - SUB_SHARK_MINE_2, + IRON_DOGFISH_THUMP_1 = 0, + IRON_DOGFISH_LASER_EYE_1 = 1, + IRON_DOGFISH_THUMP_2, + IRON_DOGFISH_ROLL, + IRON_DOGFISH_LASER_EYE_2, }; enum @@ -256,15 +270,21 @@ protected: void processMotherJellyfishMovement( int _frames ); void processCloseMotherJellyfishAttack( int _frames ); + // sub shark functions + + void processSubSharkMovement( int _frames ); + void processCloseSubSharkAttack( int _frames ); + // flying dutchman functions void processFlyingDutchmanMovement( int _frames ); void processCloseFlyingDutchmanAttack( int _frames ); - // sub shark functions + // iron dogfish functions - void processSubSharkMovement( int _frames ); - void processCloseSubSharkAttack( int _frames ); + void processIronDogfishMovement( int _frames ); + void processStandardIronDogfishAttack( int _frames ); + void processCloseIronDogfishAttack( int _frames ); // data diff --git a/source/enemy/nsshark.cpp b/source/enemy/nsshark.cpp index 2ddb8a3b6..6ba4f5d0f 100644 --- a/source/enemy/nsshark.cpp +++ b/source/enemy/nsshark.cpp @@ -92,19 +92,19 @@ void CNpc::processCloseSubSharkAttack( int _frames ) s32 xDist = playerPos.vx - Pos.vx; s32 xDistSqr = xDist * xDist; + if ( xDist > 0 ) + { + m_extendDir = EXTEND_RIGHT; + } + else + { + m_extendDir = EXTEND_LEFT; + } + switch( m_state ) { case SUB_SHARK_MINE_1: { - if ( xDist > 0 ) - { - m_extendDir = EXTEND_RIGHT; - } - else - { - m_extendDir = EXTEND_LEFT; - } - if ( xDistSqr > 100 ) { processGenericGotoTarget( _frames, xDist, 0, m_data[m_type].speed ); @@ -124,15 +124,6 @@ void CNpc::processCloseSubSharkAttack( int _frames ) case SUB_SHARK_MINE_2: { - if ( xDist > 0 ) - { - m_extendDir = EXTEND_RIGHT; - } - else - { - m_extendDir = EXTEND_LEFT; - } - if ( xDistSqr > 100 ) { processGenericGotoTarget( _frames, xDist, 0, m_data[m_type].speed ); diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 7da695c60..f5018286b 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -137,6 +137,10 @@ SOURCE=..\..\..\source\enemy\nclam.cpp # End Source File # Begin Source File +SOURCE=..\..\..\source\enemy\ndogfish.cpp +# End Source File +# Begin Source File + SOURCE=..\..\..\source\enemy\neyeball.cpp # End Source File # Begin Source File