This commit is contained in:
Paul 2001-03-30 17:47:00 +00:00
parent 904214167c
commit cb8f318494
13 changed files with 128 additions and 121 deletions

View file

@ -33,12 +33,20 @@
#include "player\pmodes.h"
#endif
#ifndef __PLAYER_PMBLOON_H__
#include "player\pmbloon.h"
#endif
#ifndef __PLAYER_PMBUBBLE_H__
#include "player\pmbubble.h"
#endif
#ifndef __PLAYER_PMCHOP_H__
#include "player\pmchop.h"
#endif
#ifndef __PLAYER_PMBLOON_H__
#include "player\pmbloon.h"
#ifndef __PLAYER_PMCORAL_H__
#include "player\pmcoral.h"
#endif
#ifndef __PLAYER_PMDEAD_H__
@ -140,8 +148,9 @@ static const char *s_modeText[NUM_PLAYERMODES]=
"BASICUNARMED",
"FULLUNARMED",
"BALLOON",
// "NET",
// "CORALBLOWER",
"BUBBLE MIXTURE",
"CORALBLOWER",
"DEAD",
"FLY",
};
#include "gfx\font.h"
@ -170,17 +179,21 @@ int CAMERA_SCROLLSPEED=60; // Speed of the scroll ( 60=1 tile scrolled every
CPlayerModeBase PLAYERMODE;
CPlayerModeChop PLAYERMODECHOP;
CPlayerModeBalloon PLAYERMODEBALLOON;
CPlayerModeDead PLAYERMODEDEAD;
CPlayerModeFly PLAYERMODEFLY;
CPlayerModeBase PLAYERMODE;
CPlayerModeChop PLAYERMODECHOP;
CPlayerModeBalloon PLAYERMODEBALLOON;
CPlayerModeBubbleMixture PLAYERMODEBUBBLEMIXTURE;
CPlayerModeCoralBlower PLAYERMODECORALBLOWER;
CPlayerModeDead PLAYERMODEDEAD;
CPlayerModeFly PLAYERMODEFLY;
CPlayerMode *CPlayer::s_playerModes[NUM_PLAYERMODES]=
{
&PLAYERMODE, // PLAYER_MODE_BASICUNARMED
&PLAYERMODECHOP, // PLAYER_MODE_FULLUNARMED
&PLAYERMODEBALLOON, // PLAYER_MODE_BALLOON
&PLAYERMODEBUBBLEMIXTURE, // PLAYER_MODE_BUBBLE_MIXTURE
&PLAYERMODECORALBLOWER, // PLAYER_MODE_CORALBLOWER
&PLAYERMODEDEAD, // PLAYER_MODE_DEAD
&PLAYERMODEFLY, // PLAYER_MODE_FLY
};

View file

@ -51,10 +51,9 @@ typedef enum
PLAYER_MODE_BASICUNARMED,
PLAYER_MODE_FULLUNARMED,
PLAYER_MODE_BALLOON,
//PLAYER_MODE_BUBBLE_MIXTURE,
//PLAYER_MODE_HELMET,
PLAYER_MODE_BUBBLE_MIXTURE,
// PLAYER_MODE_NET,
// PLAYER_MODE_CORALBLOWER,
PLAYER_MODE_CORALBLOWER,
//PLAYER_MODE_JELLY_LAUNCHER,
PLAYER_MODE_DEAD,

View file

@ -67,7 +67,8 @@ static PlayerMetrics s_playerMetrics=
---------------------------------------------------------------------- */
void CPlayerModeCoralBlower::enter()
{
m_chopping=false;
m_blowerState=BLOWER_STATE__FULL;//BLOWER_STATE__EMPTY;
CSoundMediator::playSfx(CSoundMediator::SFX_ITEM__CORAL_BLOWER);
}
/*----------------------------------------------------------------------
@ -76,39 +77,44 @@ void CPlayerModeCoralBlower::enter()
Params:
Returns:
---------------------------------------------------------------------- */
int cbstate=0;
void CPlayerModeCoralBlower::think()
{
// If we're chopping then restore the 'real' anim number/frame before
// doing the think so that the rest of the code doesn't know what
// is going on ;)
if(m_chopping)
{
setAnimNo(m_savedAnimNo);
setAnimFrame(m_savedAnimFrame);
}
CPlayerModeBase::think();
// Start to chop?
if(!m_chopping&&getPadInputDown()&PI_ACTION&&canAttackFromThisState())
switch(m_blowerState)
{
m_chopFrame=0;
m_chopping=true;
}
// Chopping?
if(m_chopping)
{
m_player->setAnimNo(ANIM_SPONGEBOB_KARATE);
m_player->setAnimFrame(m_chopFrame);
m_chopFrame++;
if(m_chopFrame>=m_player->getAnimFrameCount())
{
PAUL_DBGMSG("restore %d,%d",m_savedAnimNo,m_savedAnimFrame);
m_player->setAnimNo(m_savedAnimNo);
m_player->setAnimFrame(m_savedAnimFrame);
m_chopping=false;
}
case BLOWER_STATE__EMPTY:
if(getPadInputDown()&PI_ACTION&&getState()==STATE_IDLE)
{
m_blowerState=BLOWER_STATE__SUCKING;
}
break;
case BLOWER_STATE__SUCKING:
if(!(getPadInputHeld()&PI_ACTION&&getState()==STATE_IDLE))
{
m_blowerState=BLOWER_STATE__EMPTY;
}
break;
case BLOWER_STATE__FULL:
if(getPadInputDown()&PI_ACTION&&getState()==STATE_IDLE)
{
m_blowerState=BLOWER_STATE__AIMING;
}
break;
case BLOWER_STATE__AIMING:
if(getState()==STATE_IDLE)
{
m_blowerState=BLOWER_STATE__EMPTY;
}
if(!getPadInputHeld()&PI_ACTION)
{
// Fire!
m_blowerState=BLOWER_STATE__EMPTY;
}
break;
}
cbstate=m_blowerState;
}
/*----------------------------------------------------------------------
@ -122,67 +128,5 @@ const struct PlayerMetrics *CPlayerModeCoralBlower::getPlayerMetrics()
return &s_playerMetrics;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPlayerModeCoralBlower::setAnimNo(int _animNo)
{
CPlayerModeBase::setAnimNo(_animNo);
m_savedAnimNo=_animNo;
}
void CPlayerModeCoralBlower::setAnimFrame(int _animFrame)
{
CPlayerModeBase::setAnimFrame(_animFrame);
m_savedAnimFrame=_animFrame;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPlayerModeCoralBlower::isInAttackState()
{
return m_chopping||CPlayerModeBase::isInAttackState();
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPlayerModeCoralBlower::canAttackFromThisState()
{
int ret=false;
switch(getState())
{
case STATE_IDLE:
case STATE_IDLETEETER:
case STATE_JUMP:
case STATE_RUN:
case STATE_FALL:
ret=true;
break;
case STATE_FALLFAR:
case STATE_BUTTBOUNCE:
case STATE_BUTTFALL:
case STATE_BUTTLAND:
case STATE_DUCK:
case STATE_SOAKUP:
case STATE_GETUP:
break;
}
return ret;
}
/*===========================================================================
end */

View file

@ -42,18 +42,16 @@ public:
virtual const struct PlayerMetrics *getPlayerMetrics();
virtual void setAnimNo(int _animNo);
virtual void setAnimFrame(int _animFrame);
virtual int isInAttackState();
private:
int canAttackFromThisState();
int m_savedAnimNo,m_savedAnimFrame;
int m_chopFrame;
int m_chopping;
typedef enum
{
BLOWER_STATE__EMPTY,
BLOWER_STATE__SUCKING,
BLOWER_STATE__FULL,
BLOWER_STATE__AIMING,
} BlowerState;
BlowerState m_blowerState;
};