This commit is contained in:
Paul 2001-04-30 21:27:46 +00:00
parent 87421347b6
commit 5385618c50
10 changed files with 325 additions and 60 deletions

View file

@ -121,6 +121,7 @@ void CPauseMenu::init()
STR__DEBUG__BALLOON_MODE, STR__DEBUG__BALLOON_MODE,
&newmode,PLAYER_MODE_BALLOON); &newmode,PLAYER_MODE_BALLOON);
xpos+=TEXT_SPACING; xpos+=TEXT_SPACING;
//#ifndef __USER_paul__
CGUIFactory::createValueButtonFrame(m_guiFrame, CGUIFactory::createValueButtonFrame(m_guiFrame,
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__DEBUG__BUBBLEMIXTURE_MODE, STR__DEBUG__BUBBLEMIXTURE_MODE,
@ -131,7 +132,6 @@ void CPauseMenu::init()
STR__DEBUG__NET_MODE, STR__DEBUG__NET_MODE,
&newmode,PLAYER_MODE_NET); &newmode,PLAYER_MODE_NET);
xpos+=TEXT_SPACING; xpos+=TEXT_SPACING;
#ifndef __USER_CDBUILD__
CGUIFactory::createValueButtonFrame(m_guiFrame, CGUIFactory::createValueButtonFrame(m_guiFrame,
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT, (FRAME_WIDTH-TEXT_BOX_WIDTH)/2,xpos,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
STR__DEBUG__CORALBLOWER_MODE, STR__DEBUG__CORALBLOWER_MODE,
@ -147,7 +147,7 @@ void CPauseMenu::init()
STR__DEBUG__DEAD_MODE, STR__DEBUG__DEAD_MODE,
&newmode,PLAYER_MODE_DEAD); &newmode,PLAYER_MODE_DEAD);
xpos+=TEXT_SPACING; xpos+=TEXT_SPACING;
#endif //#endif
m_active=false; m_active=false;
} }

View file

@ -25,6 +25,10 @@
#include "player\player.h" #include "player\player.h"
#endif #endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __GFX_OTPOS_H__ #ifndef __GFX_OTPOS_H__
#include "gfx\otpos.h" #include "gfx\otpos.h"
#endif #endif
@ -71,6 +75,8 @@ void CCoralBlowerPickup::init()
fh=getSpriteBank()->getFrameHeader(FRM__BLOWER); fh=getSpriteBank()->getFrameHeader(FRM__BLOWER);
setCollisionSize(fh->W,fh->H); setCollisionSize(fh->W,fh->H);
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_CORALBLOWER);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -29,6 +29,10 @@
#include "player\player.h" #include "player\player.h"
#endif #endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __GFX_OTPOS_H__ #ifndef __GFX_OTPOS_H__
#include "gfx\otpos.h" #include "gfx\otpos.h"
#endif #endif
@ -167,6 +171,8 @@ void CBubbleWandPickup::init()
fh=getSpriteBank()->getFrameHeader(FRM__BUBBLEWAND); fh=getSpriteBank()->getFrameHeader(FRM__BUBBLEWAND);
setCollisionSize(fh->W,fh->H); setCollisionSize(fh->W,fh->H);
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_BUBBLEWAND);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -21,6 +21,10 @@
#include "pickups\pglasses.h" #include "pickups\pglasses.h"
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __PLAYER_PLAYER_H__ #ifndef __PLAYER_PLAYER_H__
#include "player\player.h" #include "player\player.h"
#endif #endif
@ -74,6 +78,8 @@ void CGlassesPickup::init()
fh=getSpriteBank()->getFrameHeader(FRM__GLASSES); fh=getSpriteBank()->getFrameHeader(FRM__GLASSES);
setCollisionSize(fh->W,fh->H); setCollisionSize(fh->W,fh->H);
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_BUBBLEWAND);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -29,6 +29,10 @@
#include "player\player.h" #include "player\player.h"
#endif #endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __GFX_OTPOS_H__ #ifndef __GFX_OTPOS_H__
#include "gfx\otpos.h" #include "gfx\otpos.h"
#endif #endif
@ -165,6 +169,8 @@ void CJellyLauncherPickup::init()
fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER); fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER);
setCollisionSize(fh->W,fh->H); setCollisionSize(fh->W,fh->H);
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_JELLYLAUNCHER);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -25,6 +25,10 @@
#include "player\player.h" #include "player\player.h"
#endif #endif
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
/* Std Lib /* Std Lib
------- */ ------- */
@ -71,6 +75,8 @@ void CNetPickup::init()
fh=getSpriteBank()->getFrameHeader(FRM__NET); fh=getSpriteBank()->getFrameHeader(FRM__NET);
setCollisionSize(fh->W,fh->H); setCollisionSize(fh->W,fh->H);
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_NET);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------

View file

@ -92,6 +92,31 @@
#include <sprites.h> #include <sprites.h>
#endif #endif
#ifndef __ANIM_SPONGEBOB_HEADER__
#include <ACTOR_SPONGEBOB_Anim.h>
#endif
#ifndef __ANIM_SPONGEBOB_NET_HEADER__
#include <ACTOR_SPONGEBOB_NET_Anim.h>
#endif
#ifndef __ANIM_SPONGEBOB_CORALBLOWER_HEADER__
#include <ACTOR_SPONGEBOB_CORALBLOWER_Anim.h>
#endif
#ifndef __ANIM_SPONGEBOB_JELLYLAUNCHER_HEADER__
#include <ACTOR_SPONGEBOB_JELLYLAUNCHER_Anim.h>
#endif
//#ifndef __ANIM_SPONGEBOB_GLASSES_HEADER__
//#include <ACTOR_SPONGEBOB_GLASSES_Anim.h>
//#endif
//#ifndef __ANIM_SPONGEBOB_BUBBLEWAND_HEADER__
//#include <ACTOR_SPONGEBOB_BUBBLEWAND_Anim.h>
//#endif
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Tyepdefs && Defines Tyepdefs && Defines
@ -239,7 +264,183 @@ pint ledgeShift=1;
pint cammove=2; pint cammove=2;
CActorGfx *m_actorWeaponGfx;
// --------------------------------- Addon stuff ---------------------------------
CActorGfx *s_addonActorGfx[NUM_PLAYER_ADDONS]=
{
NULL, // PLAYER_ADDON_NET
NULL, // PLAYER_ADDON_CORALBLOWER
NULL, // PLAYER_ADDON_JELLYLAUNCHER
NULL, // PLAYER_ADDON_GLASSES
NULL, // PLAYER_ADDON_BUBBLEWAND
};
FileEquate s_addonActorPoolNames[NUM_PLAYER_ADDONS]=
{
ACTORS_SPONGEBOB_NET_SBK, // PLAYER_ADDON_NET
ACTORS_SPONGEBOB_CORALBLOWER_SBK, // PLAYER_ADDON_CORALBLOWER
ACTORS_SPONGEBOB_JELLYLAUNCHER_SBK, // PLAYER_ADDON_JELLYLAUNCHER
(FileEquate)-1, // PLAYER_ADDON_GLASSES
(FileEquate)-1, // PLAYER_ADDON_BUBBLEWAND
};
PLAYER_ADDONS s_addonNumbers[NUM_PLAYERMODES]=
{
NO_ADDON, // PLAYER_MODE_BASICUNARMED
NO_ADDON, // PLAYER_MODE_FULLUNARMED
NO_ADDON, // PLAYER_MODE_BALLOON
PLAYER_ADDON_BUBBLEWAND, // PLAYER_MODE_BUBBLE_MIXTURE
PLAYER_ADDON_NET, // PLAYER_MODE_NET
PLAYER_ADDON_CORALBLOWER, // PLAYER_MODE_CORALBLOWER
PLAYER_ADDON_JELLYLAUNCHER, // PLAYER_MODE_JELLY_LAUNCHER
NO_ADDON, // PLAYER_MODE_DEAD
NO_ADDON, // PLAYER_MODE_FLY
};
static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
{
// PLAYER_ADDON_NET,
{
ANIM_SPONGEBOB_NET_BUTTBOUNCEEND, // ANIM_SPONGEBOB_BUTTBOUNCEEND,
ANIM_SPONGEBOB_NET_BUTTBOUNCESTART, // ANIM_SPONGEBOB_BUTTBOUNCESTART,
ANIM_SPONGEBOB_NET_FALL, // ANIM_SPONGEBOB_FALL,
ANIM_SPONGEBOB_NET_GETUP, // ANIM_SPONGEBOB_GETUP,
ANIM_SPONGEBOB_NET_HITGROUND, // ANIM_SPONGEBOB_HITGROUND,
ANIM_SPONGEBOB_NET_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH,
ANIM_SPONGEBOB_NET_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND,
ANIM_SPONGEBOB_NET_JUMPEND, // ANIM_SPONGEBOB_JUMPEND,
ANIM_SPONGEBOB_NET_JUMP, // ANIM_SPONGEBOB_JUMP,
ANIM_SPONGEBOB_NET_RUN, // ANIM_SPONGEBOB_RUN,
ANIM_SPONGEBOB_NET_RUNSTOP, // ANIM_SPONGEBOB_RUNSTOP,
ANIM_SPONGEBOB_NET_RUNSTART, // ANIM_SPONGEBOB_RUNSTART,
ANIM_SPONGEBOB_NET_SOAKUP, // ANIM_SPONGEBOB_SOAKUP,
ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_NET_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND,
-1, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
-1, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
},
// PLAYER_ADDON_CORALBLOWER,
{
-1, // ANIM_SPONGEBOB_BUTTBOUNCEEND,
-1, // ANIM_SPONGEBOB_BUTTBOUNCESTART,
ANIM_SPONGEBOB_CORALBLOWER_FALL, // ANIM_SPONGEBOB_FALL,
ANIM_SPONGEBOB_CORALBLOWER_GETUP, // ANIM_SPONGEBOB_GETUP,
ANIM_SPONGEBOB_CORALBLOWER_HITGROUND, // ANIM_SPONGEBOB_HITGROUND,
ANIM_SPONGEBOB_CORALBLOWER_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH,
ANIM_SPONGEBOB_CORALBLOWER_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND,
ANIM_SPONGEBOB_CORALBLOWER_JUMPEND, // ANIM_SPONGEBOB_JUMPEND,
ANIM_SPONGEBOB_CORALBLOWER_JUMP, // ANIM_SPONGEBOB_JUMP,
-1, // ANIM_SPONGEBOB_RUN,
-1, // ANIM_SPONGEBOB_RUNSTOP,
-1, // ANIM_SPONGEBOB_RUNSTART,
ANIM_SPONGEBOB_CORALBLOWER_SOAKUP, // ANIM_SPONGEBOB_SOAKUP,
ANIM_SPONGEBOB_CORALBLOWER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_CORALBLOWER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_CORALBLOWER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
ANIM_SPONGEBOB_CORALBLOWER_FIREEND, // ANIM_SPONGEBOB_FIREEND,
ANIM_SPONGEBOB_CORALBLOWER_FIRESTART, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
ANIM_SPONGEBOB_CORALBLOWER_WALK, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
},
// PLAYER_ADDON_JELLYLAUNCHER,
{
ANIM_SPONGEBOB_JELLYLAUNCHER_BUTTBOUNCEEND, // ANIM_SPONGEBOB_BUTTBOUNCEEND,
ANIM_SPONGEBOB_JELLYLAUNCHER_BUTTBOUNCESTART, // ANIM_SPONGEBOB_BUTTBOUNCESTART,
ANIM_SPONGEBOB_JELLYLAUNCHER_FALL, // ANIM_SPONGEBOB_FALL,
ANIM_SPONGEBOB_JELLYLAUNCHER_GETUP, // ANIM_SPONGEBOB_GETUP,
ANIM_SPONGEBOB_JELLYLAUNCHER_HITGROUND, // ANIM_SPONGEBOB_HITGROUND,
ANIM_SPONGEBOB_JELLYLAUNCHER_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH,
ANIM_SPONGEBOB_JELLYLAUNCHER_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND,
ANIM_SPONGEBOB_JELLYLAUNCHER_JUMPEND, // ANIM_SPONGEBOB_JUMPEND,
ANIM_SPONGEBOB_JELLYLAUNCHER_JUMP, // ANIM_SPONGEBOB_JUMP,
ANIM_SPONGEBOB_JELLYLAUNCHER_RUN, // ANIM_SPONGEBOB_RUN,
ANIM_SPONGEBOB_JELLYLAUNCHER_RUNSTOP, // ANIM_SPONGEBOB_RUNSTOP,
ANIM_SPONGEBOB_JELLYLAUNCHER_RUNSTART, // ANIM_SPONGEBOB_RUNSTART,
ANIM_SPONGEBOB_JELLYLAUNCHER_SOAKUP, // ANIM_SPONGEBOB_SOAKUP,
ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_JELLYLAUNCHER_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_JELLYLAUNCHER_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
ANIM_SPONGEBOB_JELLYLAUNCHER_FIREEND, // ANIM_SPONGEBOB_FIREEND,
ANIM_SPONGEBOB_JELLYLAUNCHER_FIRESTART, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
-1, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
},
// PLAYER_ADDON_GLASSES,
{
-1, // ANIM_SPONGEBOB_BUTTBOUNCEEND,
-1, // ANIM_SPONGEBOB_BUTTBOUNCESTART,
-1, // ANIM_SPONGEBOB_FALL,
-1, // ANIM_SPONGEBOB_GETUP,
-1, // ANIM_SPONGEBOB_HITGROUND,
-1, // ANIM_SPONGEBOB_IDLEBREATH,
-1, // ANIM_SPONGEBOB_IDLEWIND,
-1, // ANIM_SPONGEBOB_JUMPEND,
-1, // ANIM_SPONGEBOB_JUMP,
-1, // ANIM_SPONGEBOB_RUN,
-1, // ANIM_SPONGEBOB_RUNSTOP,
-1, // ANIM_SPONGEBOB_RUNSTART,
-1, // ANIM_SPONGEBOB_SOAKUP,
-1, // ANIM_SPONGEBOB_TEETERBACK,
-1, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE,
-1, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND,
-1, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
-1, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
},
// PLAYER_ADDON_BUBBLEWAND,
{
-1, // ANIM_SPONGEBOB_BUTTBOUNCEEND,
-1, // ANIM_SPONGEBOB_BUTTBOUNCESTART,
-1, // ANIM_SPONGEBOB_FALL,
-1, // ANIM_SPONGEBOB_GETUP,
-1, // ANIM_SPONGEBOB_HITGROUND,
-1, // ANIM_SPONGEBOB_IDLEBREATH,
-1, // ANIM_SPONGEBOB_IDLEWIND,
-1, // ANIM_SPONGEBOB_JUMPEND,
-1, // ANIM_SPONGEBOB_JUMP,
-1, // ANIM_SPONGEBOB_RUN,
-1, // ANIM_SPONGEBOB_RUNSTOP,
-1, // ANIM_SPONGEBOB_RUNSTART,
-1, // ANIM_SPONGEBOB_SOAKUP,
-1, // ANIM_SPONGEBOB_TEETERBACK,
-1, // ANIM_SPONGEBOB_TEETERFRONT,
-1, // ANIM_SPONGEBOB_SWIPE,
-1, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND,
-1, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
-1, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
},
};
// -------------------------------------------------------------------------------
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -250,6 +451,8 @@ CActorGfx *m_actorWeaponGfx;
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::init() void CPlayer::init()
{ {
int i;
CPlayerThing::init(); CPlayerThing::init();
m_fontBank=new ("PlayerFont") FontBank(); m_fontBank=new ("PlayerFont") FontBank();
@ -261,12 +464,9 @@ void CPlayer::init()
m_layerCollision=NULL; m_layerCollision=NULL;
CActorPool::AddActor(ACTORS_SPONGEBOB_NET_SBK);
m_actorWeaponGfx=CActorPool::GetActor(ACTORS_SPONGEBOB_NET_SBK);
m_actorGfx=CActorPool::GetActor(ACTORS_SPONGEBOB_SBK); m_actorGfx=CActorPool::GetActor(ACTORS_SPONGEBOB_SBK);
for(int i=0;i<NUM_PLAYERMODES;i++) for(i=0;i<NUM_PLAYERMODES;i++)
{ {
s_playerModes[i]->initialise(this); s_playerModes[i]->initialise(this);
} }
@ -287,6 +487,14 @@ m_animFrame=0;
resetPlayerCollisionSizeToBase(); resetPlayerCollisionSizeToBase();
m_divingHelmet=false; m_divingHelmet=false;
//#ifdef __USER_paul__
registerAddon(PLAYER_ADDON_NET);
registerAddon(PLAYER_ADDON_CORALBLOWER);
registerAddon(PLAYER_ADDON_JELLYLAUNCHER);
registerAddon(PLAYER_ADDON_GLASSES);
registerAddon(PLAYER_ADDON_BUBBLEWAND);
//#endif
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -297,11 +505,21 @@ m_animFrame=0;
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::shutdown() void CPlayer::shutdown()
{ {
for(int i=0;i<NUM_PLAYERMODES;i++) int i;
for(i=0;i<NUM_PLAYERMODES;i++)
{ {
s_playerModes[i]->shutdown(); s_playerModes[i]->shutdown();
} }
for(i=0;i<NUM_PLAYER_ADDONS;i++)
{
if(s_addonActorGfx[i])
{
delete s_addonActorGfx[i];
s_addonActorGfx[i]=NULL;
}
}
delete m_actorGfx; delete m_actorGfx;
m_spriteBank->dump(); delete m_spriteBank; m_spriteBank->dump(); delete m_spriteBank;
@ -569,9 +787,9 @@ int panim=-1;
#include "gfx\prim.h" // (pkg) #include "gfx\prim.h" // (pkg)
int healthx=40; int healthx=40;
int healthy=40; int healthy=40;
int healthr=200; int healthr=128;
int healthg=75; int healthg=0;
int healthb=75; int healthb=0;
#ifdef __USER_paul__ #ifdef __USER_paul__
#define NUM_LASTPOS 50 #define NUM_LASTPOS 50
@ -781,6 +999,26 @@ ATTACK_STATE CPlayer::getAttackState()
return m_currentPlayerModeClass->getAttackState(); return m_currentPlayerModeClass->getAttackState();
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPlayer::registerAddon(PLAYER_ADDONS _addon)
{
if(!s_addonActorGfx[_addon])
{
FileEquate sbk;
sbk=s_addonActorPoolNames[_addon];
if(sbk!=-1)
{
s_addonActorGfx[_addon]=CActorPool::GetActor(sbk);
}
}
}
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
@ -952,52 +1190,45 @@ void CPlayer::respawn()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
#ifndef __ANIM_SPONGEBOB_NET_HEADER__
#include <ACTOR_SPONGEBOB_NET_Anim.h>
#endif
static s8 s_animMapNet[]=
{
ANIM_SPONGEBOB_NET_BUTTBOUNCEEND, // ANIM_SPONGEBOB_BUTTBOUNCEEND=0,
ANIM_SPONGEBOB_NET_BUTTBOUNCESTART, // ANIM_SPONGEBOB_BUTTBOUNCESTART,
ANIM_SPONGEBOB_NET_FALL, // ANIM_SPONGEBOB_FALL,
ANIM_SPONGEBOB_NET_GETUP, // ANIM_SPONGEBOB_GETUP,
ANIM_SPONGEBOB_NET_HITGROUND, // ANIM_SPONGEBOB_HITGROUND,
ANIM_SPONGEBOB_NET_IDLEBREATH, // ANIM_SPONGEBOB_IDLEBREATH,
ANIM_SPONGEBOB_NET_IDLEWIND, // ANIM_SPONGEBOB_IDLEWIND,
ANIM_SPONGEBOB_NET_JUMPEND, // ANIM_SPONGEBOB_JUMPEND,
ANIM_SPONGEBOB_NET_JUMP, // ANIM_SPONGEBOB_JUMP,
ANIM_SPONGEBOB_NET_RUN, // ANIM_SPONGEBOB_RUN,
ANIM_SPONGEBOB_NET_RUNSTOP, // ANIM_SPONGEBOB_RUNSTOP,
ANIM_SPONGEBOB_NET_RUNSTART, // ANIM_SPONGEBOB_RUNSTART,
ANIM_SPONGEBOB_NET_SOAKUP, // ANIM_SPONGEBOB_SOAKUP,
ANIM_SPONGEBOB_NET_TEETERBACK, // ANIM_SPONGEBOB_TEETERBACK,
ANIM_SPONGEBOB_NET_TEETERFRONT, // ANIM_SPONGEBOB_TEETERFRONT,
ANIM_SPONGEBOB_NET_SWIPE, // ANIM_SPONGEBOB_SWIPE,
ANIM_SPONGEBOB_NET_DEATHSPIN, // ANIM_SPONGEBOB_DEATHSPIN,
-1, // ANIM_SPONGEBOB_BALLOONJUMP,
-1, // ANIM_SPONGEBOB_BLOWBUBBLE,
-1, // ANIM_SPONGEBOB_FIREEND,
-1, // ANIM_SPONGEBOB_FIRESTART,
-1, // ANIM_SPONGEBOB_IDLEWEAPON,
-1, // ANIM_SPONGEBOB_WALK,
-1, // ANIM_SPONGEBOB_KARATE,
};
void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame) void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame)
{ {
if(m_currentMode==PLAYER_MODE_NET) int addon;
// Render an addon?
addon=s_addonNumbers[m_currentMode];
if(addon!=NO_ADDON)
{ {
if(s_animMapNet[_animNo]!=-1) s8 addonAnimFrame=s_animMapNet[addon][_animNo];
if(addonAnimFrame!=-1)
{ {
if(_animFrame<m_actorWeaponGfx->getFrameCount(s_animMapNet[_animNo])) CActorGfx *addonGfx=s_addonActorGfx[addon];
if(addonGfx&&
_animFrame>=addonGfx->getFrameCount(addonAnimFrame))
{ {
m_actorWeaponGfx->Render(*_pos,s_animMapNet[_animNo],_animFrame,m_facing==FACING_RIGHT?0:1); PAUL_DBGMSG("FRAME OVERRUN ON SPONGEBOB ADDON!");
_animFrame=0;
} }
addonGfx->Render(*_pos,addonAnimFrame,_animFrame,m_facing==FACING_RIGHT?0:1);
} }
} }
// Render glasses addon?
if(isWearingGlasses())
{
s8 addonAnimFrame=s_animMapNet[PLAYER_ADDON_GLASSES][_animNo];
if(addonAnimFrame!=-1)
{
CActorGfx *addonGfx=s_addonActorGfx[PLAYER_ADDON_GLASSES];
if(_animFrame>=addonGfx->getFrameCount(addonAnimFrame))
{
PAUL_DBGMSG("FRAME OVERRUN ON SPONGEBOB GLASSES ADDON!");
_animFrame=0;
}
addonGfx->Render(*_pos,addonAnimFrame,_animFrame,m_facing==FACING_RIGHT?0:1);
}
}
// Render SB
m_actorGfx->Render(*_pos,_animNo,_animFrame,m_facing==FACING_RIGHT?0:1); m_actorGfx->Render(*_pos,_animNo,_animFrame,m_facing==FACING_RIGHT?0:1);
} }

View file

@ -81,6 +81,18 @@ typedef enum
NUM_STATES, NUM_STATES,
}PLAYER_STATE; }PLAYER_STATE;
typedef enum
{
PLAYER_ADDON_NET,
PLAYER_ADDON_CORALBLOWER,
PLAYER_ADDON_JELLYLAUNCHER,
PLAYER_ADDON_GLASSES,
PLAYER_ADDON_BUBBLEWAND,
NUM_PLAYER_ADDONS,
NO_ADDON,
}PLAYER_ADDONS;
enum enum
{ {
FACING_LEFT=+1, FACING_LEFT=+1,
@ -170,6 +182,8 @@ public:
ATTACK_STATE getAttackState(); ATTACK_STATE getAttackState();
int isRecoveringFromHit() {return m_invincibleFrameCount!=0||m_currentMode==PLAYER_MODE_DEAD;} int isRecoveringFromHit() {return m_invincibleFrameCount!=0||m_currentMode==PLAYER_MODE_DEAD;}
void registerAddon(PLAYER_ADDONS _addon);
public: public:
void setMode(PLAYER_MODE _mode); void setMode(PLAYER_MODE _mode);
int getFacing(); int getFacing();

View file

@ -17,10 +17,6 @@
#include "triggers\tlook.h" #include "triggers\tlook.h"
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __PLAYER_PLAYER_H__ #ifndef __PLAYER_PLAYER_H__
#include "player\player.h" #include "player\player.h"
#endif #endif
@ -56,22 +52,20 @@
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CLookTrigger::collidedWith(CThing *_thisThing) void CLookTrigger::collidedWith(CThing *_thisThing)
{ {
CPlayer *player;
DVECTOR collCentre; DVECTOR collCentre;
CRECT collArea; CRECT collArea;
ASSERT(_thisThing->getThingType()==TYPE_PLAYER); ASSERT(_thisThing->getThingType()==TYPE_PLAYER);
// Only collide if players feet are inside the trigger // Only collide if players feet are inside the trigger
player=GameScene.getPlayer(); collCentre=((CPlayer*)_thisThing)->getCollisionCentre();
collCentre=player->getCollisionCentre();
collArea.x1=collCentre.vx-5; collArea.x1=collCentre.vx-5;
collArea.y1=collCentre.vy-5; collArea.y1=collCentre.vy-5;
collArea.x2=collArea.x1+10; collArea.x2=collArea.x1+10;
collArea.y2=collArea.y1+10; collArea.y2=collArea.y1+10;
if(checkCollisionAgainstArea(&collArea)) if(checkCollisionAgainstArea(&collArea))
{ {
player->setLedgeLookAhead(+4); ((CPlayer*)_thisThing)->setLedgeLookAhead(+4);
} }
} }

View file

@ -17,10 +17,6 @@
#include "triggers\trestart.h" #include "triggers\trestart.h"
#ifndef __GAME_GAME_H__
#include "game\game.h"
#endif
#ifndef __PLAYER_PLAYER_H__ #ifndef __PLAYER_PLAYER_H__
#include "player\player.h" #include "player\player.h"
#endif #endif