This commit is contained in:
parent
a567d00bc3
commit
d4dc0ef1d2
10 changed files with 148 additions and 46 deletions
|
@ -1,8 +1,7 @@
|
|||
sharksubchomp
|
||||
sharksubdeath
|
||||
sharksubidle
|
||||
sharksubspit
|
||||
sharksubsprintclosed
|
||||
sharksubsprintopen
|
||||
sharksubswim
|
||||
sharksubswipe
|
||||
chomp
|
||||
death
|
||||
gethit
|
||||
sprintclosed
|
||||
sprintopen
|
||||
swim
|
||||
swipe
|
||||
|
|
|
@ -186,3 +186,5 @@ actors/SKELETALFISH.SBK
|
|||
actors/SPIDERCRAB.SBK
|
||||
actors/SPIKEYANENOME.SBK
|
||||
actors/STOMPER.SBK
|
||||
|
||||
actors/SHARKSUB.SBK
|
|
@ -112,7 +112,8 @@ ACTOR_NPC := BarnacleBoy Krusty Squidward Gary Sandy Patrick MermaidMan
|
|||
|
||||
ACTOR_ENEMY := Anenome BabyOctopus Ballblob Caterpillar clam Dustdevil Eyeball \
|
||||
Flamingskull FlyingDutchman Ghost HermitCrab IronDogFish Lrgjellyfish \
|
||||
PuffaFish Sharkman Skeletalfish SpiderCrab SpikeyAnenome Stomper
|
||||
PuffaFish Sharkman Skeletalfish SpiderCrab SpikeyAnenome Stomper \
|
||||
SharkSub
|
||||
|
||||
# Boogermonster GiantWorm Jellyfish2 Motherjellyfish Nautilus Neptune SeaSnake SharkSub
|
||||
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
#include "enemy\nmjfish.h"
|
||||
#endif
|
||||
|
||||
#ifndef __VID_HEADER_
|
||||
#include "system\vid.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GAME_GAME_H__
|
||||
#include "game\game.h"
|
||||
#endif
|
||||
|
@ -217,4 +221,71 @@ void CNpcMotherJellyfishEnemy::processClose( int _frames )
|
|||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*void CNpcMotherJellyfishEnemy::render()
|
||||
{
|
||||
SprFrame = NULL;
|
||||
|
||||
if ( m_isActive )
|
||||
{
|
||||
CEnemyThing::render();
|
||||
|
||||
// Render
|
||||
DVECTOR renderPos;
|
||||
DVECTOR origRenderPos;
|
||||
DVECTOR offset = CLevel::getCameraPos();
|
||||
int spriteWidth = m_spriteBank->getFrameWidth( m_frame >> 8 );
|
||||
int spriteHeight = m_spriteBank->getFrameHeight( m_frame >> 8 );
|
||||
|
||||
renderPos.vx = Pos.vx - offset.vx;
|
||||
origRenderPos.vx = renderPos.vx;
|
||||
renderPos.vx += m_drawOffset.vx;
|
||||
|
||||
renderPos.vy = Pos.vy - offset.vy;
|
||||
origRenderPos.vy = renderPos.vy;
|
||||
renderPos.vy += m_drawOffset.vy - ( spriteHeight >> 1 );
|
||||
|
||||
if ( renderPos.vx >= 0 && renderPos.vx <= VidGetScrW() )
|
||||
{
|
||||
if ( renderPos.vy >= 0 && renderPos.vy <= VidGetScrH() )
|
||||
{
|
||||
SprFrame = m_spriteBank->printRotatedScaledSprite( FRM_JELLYFISH1_SWIM1,renderPos.vx,renderPos.vy,4096,4096,0,10);
|
||||
setRGB0( SprFrame, 255, 128, 255 );
|
||||
|
||||
// get xmax, xmin, ymax, ymin
|
||||
|
||||
s32 XMax;
|
||||
s32 XMin;
|
||||
|
||||
s32 YMax;
|
||||
s32 YMin;
|
||||
|
||||
XMin=SprFrame->x0;
|
||||
if (XMin>SprFrame->x1) XMin=SprFrame->x1;
|
||||
if (XMin>SprFrame->x2) XMin=SprFrame->x2;
|
||||
if (XMin>SprFrame->x3) XMin=SprFrame->x3;
|
||||
XMax=SprFrame->x0;
|
||||
if (XMax<SprFrame->x1) XMax=SprFrame->x1;
|
||||
if (XMax<SprFrame->x2) XMax=SprFrame->x2;
|
||||
if (XMax<SprFrame->x3) XMax=SprFrame->x3;
|
||||
YMin=SprFrame->y0;
|
||||
if (YMin>SprFrame->y1) YMin=SprFrame->y1;
|
||||
if (YMin>SprFrame->y2) YMin=SprFrame->y2;
|
||||
if (YMin>SprFrame->y3) YMin=SprFrame->y3;
|
||||
YMax=SprFrame->y0;
|
||||
if (YMax<SprFrame->y1) YMax=SprFrame->y1;
|
||||
if (YMax<SprFrame->y2) YMax=SprFrame->y2;
|
||||
if (YMax<SprFrame->y3) YMax=SprFrame->y3;
|
||||
|
||||
XMax -= origRenderPos.vx;
|
||||
XMin -= origRenderPos.vx;
|
||||
YMax -= origRenderPos.vy;
|
||||
YMin -= origRenderPos.vy;
|
||||
|
||||
setCollisionSize( ( XMax - XMin ), ( YMax - YMin ) );
|
||||
setCollisionCentreOffset( ( XMax + XMin ) >> 1, ( YMax + YMin ) >> 1 );
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
|
|
@ -18,6 +18,7 @@ class CNpcMotherJellyfishEnemy : public CNpcEnemy
|
|||
{
|
||||
public:
|
||||
virtual void postInit();
|
||||
//void render();
|
||||
protected:
|
||||
virtual void processClose( int _frames );
|
||||
virtual void processMovement( int _frames );
|
||||
|
|
|
@ -42,12 +42,7 @@ class CNpcEnemy : public CEnemyThing
|
|||
public:
|
||||
enum NPC_UNIT_TYPE
|
||||
{
|
||||
//NPC_FALLING_ITEM = 0,
|
||||
//NPC_FISH_HOOK = 1,
|
||||
NPC_DUST_DEVIL = 0,
|
||||
//NPC_PENDULUM,
|
||||
//NPC_FIREBALL,
|
||||
//NPC_SAW_BLADE,
|
||||
NPC_SMALL_JELLYFISH_1 = 1,
|
||||
NPC_SMALL_JELLYFISH_2,
|
||||
NPC_ANEMONE_1,
|
||||
|
|
|
@ -103,9 +103,9 @@
|
|||
#include <ACTOR_BALLBLOB_ANIM.h>
|
||||
#endif
|
||||
|
||||
//#ifndef __ANIM_SHARKSUB_HEADER__
|
||||
//#include <ACTOR_SHARKSUB_ANIM.h>
|
||||
//#endif
|
||||
#ifndef __ANIM_SHARKSUB_HEADER__
|
||||
#include <ACTOR_SHARKSUB_ANIM.h>
|
||||
#endif
|
||||
|
||||
|
||||
CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||
|
@ -793,8 +793,8 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SUB_SHARK
|
||||
ACTORS_CLAM_SBK,
|
||||
ANIM_CLAM_SIDESNAP,
|
||||
ACTORS_SHARKSUB_SBK,
|
||||
ANIM_SHARKSUB_SWIM,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
NPC_CLOSE_NONE,
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#endif
|
||||
|
||||
#ifndef __ANIM_SHARKSUB_HEADER__
|
||||
#include <ACTOR_CLAM_ANIM.h>
|
||||
#include <ACTOR_SHARKSUB_ANIM.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -40,6 +40,7 @@ void CNpcSubSharkEnemy::postInit()
|
|||
{
|
||||
m_state = SUB_SHARK_MINE_1;
|
||||
m_extendDir = EXTEND_RIGHT;
|
||||
m_npcPath.setPathType( CNpcPath::PONG_PATH );
|
||||
}
|
||||
|
||||
void CNpcSubSharkEnemy::processMovement( int _frames )
|
||||
|
@ -49,13 +50,13 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
|||
if ( playerXDistSqr + playerYDistSqr < 100 && !m_salvoCount )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_SIDESNAP;
|
||||
m_animNo = ANIM_SHARKSUB_SWIPE;
|
||||
m_frame = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_SIDESNAP;
|
||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
||||
m_frame = 0;
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +83,32 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
|||
m_movementTimer -= _frames;
|
||||
}
|
||||
|
||||
if ( m_extendDir == EXTEND_RIGHT )
|
||||
s32 moveX = 0, moveY = 0;
|
||||
s32 moveVel = 0;
|
||||
s32 moveDist = 0;
|
||||
|
||||
processGenericFixedPathMove( _frames, &moveX, &moveY, &moveVel, &moveDist );
|
||||
|
||||
if ( moveX > 0 )
|
||||
{
|
||||
m_extendDir = EXTEND_RIGHT;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_extendDir = EXTEND_LEFT;
|
||||
}
|
||||
|
||||
Pos.vx += moveX;
|
||||
Pos.vy += moveY;
|
||||
|
||||
if ( m_movementTimer <= 0 )
|
||||
{
|
||||
m_controlFunc = NPC_CONTROL_CLOSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*if ( m_extendDir == EXTEND_RIGHT )
|
||||
{
|
||||
s32 xDist = 600 - Pos.vx;
|
||||
s32 xDistSqr = xDist * xDist;
|
||||
|
@ -123,7 +149,7 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
|||
m_controlFunc = NPC_CONTROL_CLOSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void CNpcSubSharkEnemy::processClose( int _frames )
|
||||
|
@ -145,6 +171,13 @@ void CNpcSubSharkEnemy::processClose( int _frames )
|
|||
case SUB_SHARK_MINE_1:
|
||||
case SUB_SHARK_MINE_2:
|
||||
{
|
||||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
||||
m_frame = 0;
|
||||
}
|
||||
|
||||
processGenericGotoTarget( _frames, playerXDist, 0, m_data[m_type].speed );
|
||||
|
||||
if ( playerXDistSqr < 100 )
|
||||
|
@ -167,7 +200,7 @@ void CNpcSubSharkEnemy::processClose( int _frames )
|
|||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_SIDESNAP;
|
||||
m_animNo = ANIM_SHARKSUB_SPRINTOPEN;
|
||||
m_frame = 0;
|
||||
}
|
||||
|
||||
|
@ -176,7 +209,7 @@ void CNpcSubSharkEnemy::processClose( int _frames )
|
|||
if ( playerXDistSqr < 10000 )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_SIDESNAP;
|
||||
m_animNo = ANIM_SHARKSUB_CHOMP;
|
||||
m_frame = 0;
|
||||
|
||||
m_state = SUB_SHARK_SWALLOW;
|
||||
|
@ -222,7 +255,7 @@ void CNpcSubSharkEnemy::processClose( int _frames )
|
|||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_SIDESNAP;
|
||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
||||
m_frame = 0;
|
||||
m_controlFunc = NPC_CONTROL_MOVEMENT;
|
||||
m_movementTimer = GameState::getOneSecondInFrames() * 8;
|
||||
|
|
|
@ -270,7 +270,7 @@ CNpcPlatform::NPC_PLATFORM_DATA CNpcPlatform::m_data[NPC_PLATFORM_TYPE_MAX] =
|
|||
0,
|
||||
4,
|
||||
NPC_PLATFORM_INFINITE_LIFE,
|
||||
4,
|
||||
2,
|
||||
NPC_PLATFORM_TIMER_NONE,
|
||||
},
|
||||
|
||||
|
@ -284,7 +284,7 @@ CNpcPlatform::NPC_PLATFORM_DATA CNpcPlatform::m_data[NPC_PLATFORM_TYPE_MAX] =
|
|||
0,
|
||||
4,
|
||||
NPC_PLATFORM_INFINITE_LIFE,
|
||||
4,
|
||||
2,
|
||||
NPC_PLATFORM_TIMER_NONE,
|
||||
},
|
||||
|
||||
|
|
|
@ -117,14 +117,14 @@ AttackStrength=20
|
|||
|
||||
# [Largejellyfish] - This is a platform
|
||||
|
||||
#[Motherjellyfish]
|
||||
#Gfx=..\..\graphics\characters\
|
||||
#WayPoints=16
|
||||
#Speed=3
|
||||
#TurnRate=256
|
||||
#Collision=0
|
||||
#Health=256
|
||||
#AttackStrength=1234
|
||||
[Motherjellyfish]
|
||||
Gfx=..\..\graphics\characters\MotherJellyfish\render\psx\+motherjellyfish0000.bmp
|
||||
WayPoints=16
|
||||
Speed=3
|
||||
TurnRate=256
|
||||
Collision=0
|
||||
Health=256
|
||||
AttackStrength=1234
|
||||
|
||||
[Anenome-Level1]
|
||||
Gfx=..\..\graphics\characters\Anenome\render\AnemneLvl1Icon.bmp
|
||||
|
@ -298,14 +298,14 @@ Collision=0
|
|||
Health=16
|
||||
AttackStrength=20
|
||||
|
||||
#[SharkSub]
|
||||
#Gfx=..\..\graphics\characters\
|
||||
#WayPoints=16
|
||||
#Speed=3
|
||||
#TurnRate=2048
|
||||
#Collision=0
|
||||
#Health=256
|
||||
#AttackStrength=0
|
||||
[SharkSub]
|
||||
Gfx=..\..\graphics\characters\SharkSub\render\psx\SharkSub_swim0000.bmp
|
||||
WayPoints=16
|
||||
Speed=3
|
||||
TurnRate=2048
|
||||
Collision=0
|
||||
Health=256
|
||||
AttackStrength=0
|
||||
|
||||
[Skeletalfish]
|
||||
Gfx=..\..\graphics\characters\Skeletalfish\render\psx\skeletalfish_idle0000.bmp
|
||||
|
|
Loading…
Add table
Reference in a new issue