This commit is contained in:
Paul 2001-01-29 22:35:18 +00:00
parent dd3fb8cbc8
commit 3d6fc4e5e9
12 changed files with 239 additions and 86 deletions

View File

@ -99,6 +99,8 @@ m_animFrame=0;
m_cameraOffsetTarget.vy=0; m_cameraOffsetTarget.vy=0;
m_cameraOffset.vx=0; m_cameraOffset.vx=0;
m_cameraOffset.vy=0; m_cameraOffset.vy=0;
m_lastPadInput=m_padInput=0;
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -120,12 +122,22 @@ void CPlayer::shutdown()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
DVECTOR ofs={-240,-134}; // nearly -256,-128 ;) DVECTOR ofs={-240,-134}; // nearly -256,-128 ;)
int psize=0; int psize=0;
int newmode=-1;
void CPlayer::think(int _frames) void CPlayer::think(int _frames)
{ {
int i; int i;
CThing::think(_frames); CThing::think(_frames);
if(newmode!=-1)
{
setMode((PLAYER_MODE)newmode);
newmode=-1;
}
#ifndef __USER_paul__ #ifndef __USER_paul__
int padInput=PadGetHeld(0); int padInput=PadGetHeld(0);
int move=7*_frames; int move=7*_frames;
@ -140,6 +152,7 @@ void CPlayer::think(int _frames)
for(i=0;i<_frames;i++) for(i=0;i<_frames;i++)
{ {
// Think // Think
updatePadInput();
m_currentStateClass->think(this); m_currentStateClass->think(this);
// Horizontal movement // Horizontal movement
@ -397,9 +410,13 @@ DVECTOR CPlayer::getPlayerPos()
{ {
return Pos; return Pos;
} }
int CPlayer::getPadInput() int CPlayer::getPadInputHeld()
{ {
return PadGetHeld(0); return m_padInput;
}
int CPlayer::getPadInputDown()
{
return m_padInputDown;
} }
@ -429,7 +446,6 @@ int CPlayer::isOnSolidGround()
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::moveLeft() void CPlayer::moveLeft()
{ {
const PlayerMetrics *metrics; const PlayerMetrics *metrics;
@ -493,5 +509,31 @@ void CPlayer::fall()
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CPlayer::updatePadInput()
{
m_lastPadInput=m_padInput;
m_padInput=readPadInput();
m_padInputDown=m_padInput&(m_lastPadInput^-1);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPlayer::readPadInput()
{
return PadGetHeld(0);
}
/*=========================================================================== /*===========================================================================
end */ end */

View File

@ -66,6 +66,7 @@ typedef enum
{ {
PLAYER_MODE_BASICUNARMED, PLAYER_MODE_BASICUNARMED,
PLAYER_MODE_FULLUNARMED, PLAYER_MODE_FULLUNARMED,
PLAYER_MODE_CORALBLOWER,
NUM_PLAYERMODES, NUM_PLAYERMODES,
}PLAYER_MODE; }PLAYER_MODE;
@ -133,7 +134,8 @@ protected:
DVECTOR getMoveVelocity(); DVECTOR getMoveVelocity();
void setMoveVelocity(DVECTOR *_moveVel); void setMoveVelocity(DVECTOR *_moveVel);
DVECTOR getPlayerPos(); DVECTOR getPlayerPos();
virtual int getPadInput(); int getPadInputHeld();
int getPadInputDown();
// Collision // Collision
int isOnSolidGround(); int isOnSolidGround();
@ -183,6 +185,12 @@ private:
DVECTOR m_cameraOffsetTarget; DVECTOR m_cameraOffsetTarget;
DVECTOR m_cameraOffset; DVECTOR m_cameraOffset;
void updatePadInput();
virtual int readPadInput();
int m_padInput; // Controls that are being held down
int m_lastPadInput; // Last frames controls
int m_padInputDown; // Controls that were pressed this frame
}; };

View File

@ -72,7 +72,8 @@
Vars Vars
---- */ ---- */
CPlayerStateIdle stateIdle; CPlayerStateUnarmedIdle stateUnarmedIdle;
CPlayerStateCoralBlowerIdle stateCoralBlowerIdle;
CPlayerStateJump stateJump; CPlayerStateJump stateJump;
CPlayerStateRun stateRun; CPlayerStateRun stateRun;
CPlayerStateFall stateFall; CPlayerStateFall stateFall;
@ -113,7 +114,7 @@ CPlayer::PlayerMode CPlayer::s_modes[NUM_PLAYERMODES]=
1, // PM__RUN_SLOWDOWN 1, // PM__RUN_SLOWDOWN
} }, } },
{ {
&stateIdle, // STATE_IDLE &stateUnarmedIdle, // STATE_IDLE
&stateJump, // STATE_JUMP &stateJump, // STATE_JUMP
&stateRun, // STATE_RUN &stateRun, // STATE_RUN
&stateFall, // STATE_FALL &stateFall, // STATE_FALL
@ -146,7 +147,7 @@ CPlayer::PlayerMode CPlayer::s_modes[NUM_PLAYERMODES]=
1, // PM__RUN_SLOWDOWN 1, // PM__RUN_SLOWDOWN
} }, } },
{ {
&stateIdle, // STATE_IDLE &stateUnarmedIdle, // STATE_IDLE
&stateJump, // STATE_JUMP &stateJump, // STATE_JUMP
&stateRun, // STATE_RUN &stateRun, // STATE_RUN
&stateFall, // STATE_FALL &stateFall, // STATE_FALL
@ -161,7 +162,40 @@ CPlayer::PlayerMode CPlayer::s_modes[NUM_PLAYERMODES]=
&stateSoackUp, // STATE_SOAKUP &stateSoackUp, // STATE_SOAKUP
&stateGetup, // STATE_GETUP &stateGetup, // STATE_GETUP
} }
} },
//
// Armed with coral blower
//
{
{ {
8, // PM__JUMP_VELOCITY
10, // PM__MAX_JUMP_FRAMES
20, // PM__MAX_SAFE_FALL_FRAMES
4, // PM__GRAVITY_VALUE
8, // PM__TERMINAL_VELOCITY
4,//8, // PM__MAX_RUN_VELOCITY
2,//4, // PM__RUN_SPEEDUP
2, // PM__RUN_REVERSESLOWDOWN
2,//1, // PM__RUN_SLOWDOWN
} },
{
&stateCoralBlowerIdle, // STATE_IDLE
NULL, // STATE_JUMP
&stateRun, // STATE_RUN
&stateFall, // STATE_FALL
&stateFallFar, // STATE_FALLFAR
NULL, // STATE_BUTTBOUNCE
NULL, // STATE_BUTTFALL
NULL, // STATE_BUTTLAND
NULL, // STATE_ATTACK
NULL, // STATE_RUNATTACK
NULL, // STATE_AIRATTACK
NULL, // STATE_DUCK
NULL, // STATE_SOAKUP
NULL, // STATE_GETUP
}
},
}; };

View File

@ -90,14 +90,14 @@ void CPlayerStateChop::think(CPlayer *_player)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateRunChop::think(CPlayer *_player) void CPlayerStateRunChop::think(CPlayer *_player)
{ {
int control; int controlHeld;
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
moveLeft(_player); moveLeft(_player);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
moveRight(_player); moveRight(_player);
} }
@ -128,14 +128,14 @@ void CPlayerStateRunChop::think(CPlayer *_player)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateAirChop::think(CPlayer *_player) void CPlayerStateAirChop::think(CPlayer *_player)
{ {
int control; int controlHeld;
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
moveLeft(_player); moveLeft(_player);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
moveRight(_player); moveRight(_player);
} }

View File

@ -111,10 +111,10 @@ void CPlayerStateSoakUp::enter(CPlayer *_player)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateSoakUp::think(CPlayer *_player) void CPlayerStateSoakUp::think(CPlayer *_player)
{ {
int control; int controlHeld;
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(!(control&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))) if(!(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)))
{ {
setState(_player,STATE_GETUP); setState(_player,STATE_GETUP);
} }

View File

@ -77,17 +77,17 @@ void CPlayerStateFall::enter(CPlayer *_player)
void CPlayerStateFall::think(CPlayer *_player) void CPlayerStateFall::think(CPlayer *_player)
{ {
const PlayerMetrics *metrics; const PlayerMetrics *metrics;
int control; int controlHeld;
DVECTOR move; DVECTOR move;
metrics=getPlayerMetrics(_player); metrics=getPlayerMetrics(_player);
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
moveLeft(_player); moveLeft(_player);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
moveRight(_player); moveRight(_player);
} }
@ -96,11 +96,11 @@ void CPlayerStateFall::think(CPlayer *_player)
slowdown(_player); slowdown(_player);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
{ {
setState(_player,STATE_AIRATTACK); setState(_player,STATE_AIRATTACK);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
{ {
move.vx=0; move.vx=0;
move.vy=0; move.vy=0;
@ -131,16 +131,16 @@ void CPlayerStateFallFar::enter(CPlayer *_player)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateFallFar::think(CPlayer *_player) void CPlayerStateFallFar::think(CPlayer *_player)
{ {
int control; int controlHeld;
DVECTOR move; DVECTOR move;
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
moveLeft(_player); moveLeft(_player);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
moveRight(_player); moveRight(_player);
} }

View File

@ -58,19 +58,6 @@
Vars Vars
---- */ ---- */
CPlayerStateIdle::IdleAnims CPlayerStateIdle::s_idleAnims[]=
{
// start frame loop frame end frame loop count
// { -1, ANIM_PLAYER_ANIM_IDLEGENERIC04, -1, 4 },
// { -1, ANIM_PLAYER_ANIM_IDLEGENERIC04, -1, 10 },
// { -1, ANIM_PLAYER_ANIM_IDLEGENERIC03, -1, 3 },
{ -1, ANIM_PLAYER_ANIM_IDLEBOOTS, -1, 4 },
{ -1, ANIM_PLAYER_ANIM_IDLECORAL, -1, 10 },
{ -1, ANIM_PLAYER_ANIM_WAKEUP, -1, 1 },
};
int CPlayerStateIdle::s_numIdleAnims=sizeof(CPlayerStateIdle::s_idleAnims)/sizeof(CPlayerStateIdle::IdleAnims);
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
Function: Function:
Purpose: Purpose:
@ -95,27 +82,28 @@ void CPlayerStateIdle::enter(CPlayer *_player)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateIdle::think(CPlayer *_player) void CPlayerStateIdle::think(CPlayer *_player)
{ {
int control; int controlDown,controlHeld;
control=getPadInput(_player); controlDown=getPadInputDown(_player);
controlHeld=getPadInputHeld(_player);
if(advanceAnimFrameAndCheckForEndOfAnim(_player)) if(advanceAnimFrameAndCheckForEndOfAnim(_player))
{ {
setNextIdleAnim(_player); setNextIdleAnim(_player);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) if(controlDown&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
{ {
setState(_player,STATE_JUMP); setState(_player,STATE_JUMP);
} }
else if(control&(CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)|CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))) else if(controlHeld&(CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)|CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)))
{ {
setState(_player,STATE_RUN); setState(_player,STATE_RUN);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
{ {
setState(_player,STATE_ATTACK); setState(_player,STATE_ATTACK);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
{ {
setState(_player,STATE_DUCK); setState(_player,STATE_DUCK);
} }
@ -131,9 +119,9 @@ void CPlayerStateIdle::think(CPlayer *_player)
void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player) void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player)
{ {
IdleAnims *anims; IdleAnims *anims;
int finished=false; int finished=false;
anims=&s_idleAnims[m_currentIdleAnim]; anims=getIdleAnimsDb(m_currentIdleAnim);
switch(m_animState) switch(m_animState)
{ {
case ANIMSTATE_START: case ANIMSTATE_START:
@ -172,14 +160,14 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player)
} }
else else
{ {
if(s_numIdleAnims) if(getNumIdleAnims()>1)
{ {
// Randomly choose the next anim to run // Randomly choose the next anim to run
int lastAnim; int lastAnim;
lastAnim=m_currentIdleAnim; lastAnim=m_currentIdleAnim;
do do
{ {
m_currentIdleAnim=getRndRange(s_numIdleAnims); m_currentIdleAnim=getRndRange(getNumIdleAnims());
}while(m_currentIdleAnim==lastAnim); }while(m_currentIdleAnim==lastAnim);
} }
else else
@ -189,7 +177,7 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player)
} }
// Start playing the anim // Start playing the anim
anims=&s_idleAnims[m_currentIdleAnim]; anims=getIdleAnimsDb(m_currentIdleAnim);
if(anims->m_startFrame==-1) if(anims->m_startFrame==-1)
{ {
// No start anim - go straight into loop // No start anim - go straight into loop
@ -211,5 +199,53 @@ void CPlayerStateIdle::setNextIdleAnim(CPlayer *_player)
} }
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
static IdleAnims s_unarmedIdleAnims[]=
{
// start frame loop frame end frame loop count
{ -1, ANIM_PLAYER_ANIM_IDLEBOOTS, -1, 4 },
{ -1, ANIM_PLAYER_ANIM_IDLECORAL, -1, 10 },
{ -1, ANIM_PLAYER_ANIM_WAKEUP, -1, 1 },
};
static int s_numUnarmedIdleAnims=sizeof(s_unarmedIdleAnims)/sizeof(IdleAnims);
IdleAnims *CPlayerStateUnarmedIdle::getIdleAnimsDb(int _animNo)
{
ASSERT(_animNo<getNumIdleAnims());
return &s_unarmedIdleAnims[_animNo];
}
int CPlayerStateUnarmedIdle::getNumIdleAnims()
{
return s_numUnarmedIdleAnims;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
static IdleAnims s_coralBlowerIdleAnims[]=
{
// start frame loop frame end frame loop count
{ -1, ANIM_PLAYER_ANIM_IDLECORAL, -1, 1 },
};
static int s_numCoralBlowerIdleAnims=sizeof(s_coralBlowerIdleAnims)/sizeof(IdleAnims);
IdleAnims *CPlayerStateCoralBlowerIdle::getIdleAnimsDb(int _animNo)
{
ASSERT(_animNo<getNumIdleAnims());
return &s_coralBlowerIdleAnims[_animNo];
}
int CPlayerStateCoralBlowerIdle::getNumIdleAnims()
{
return s_numCoralBlowerIdleAnims;
}
/*=========================================================================== /*===========================================================================
end */ end */

View File

@ -32,21 +32,22 @@
Structure defintions Structure defintions
-------------------- */ -------------------- */
typedef struct
{
int m_startFrame; // Or -1 for none
int m_loopFrame; // Must exist
int m_endFrame; // Or -1 for none
int m_loopCount; // Number of times to run m_loopFrame
} IdleAnims;
class CPlayerStateIdle : public CPlayerState class CPlayerStateIdle : public CPlayerState
{ {
public: public:
void enter(class CPlayer *_player); virtual void enter(class CPlayer *_player);
void think(class CPlayer *_player); virtual void think(class CPlayer *_player);
private: private:
typedef struct
{
int m_startFrame; // Or -1 for none
int m_loopFrame; // Must exist
int m_endFrame; // Or -1 for none
int m_loopCount; // Number of times to run m_loopFrame;
} IdleAnims;
typedef enum typedef enum
{ {
ANIMSTATE_START, ANIMSTATE_START,
@ -56,13 +57,31 @@ private:
void setNextIdleAnim(class CPlayer *_player); void setNextIdleAnim(class CPlayer *_player);
virtual IdleAnims *getIdleAnimsDb(int _animNo)=0;
virtual int getNumIdleAnims()=0;
int m_idleTime; // Number of idle anims that have been started int m_idleTime; // Number of idle anims that have been started
int m_currentIdleAnim; int m_currentIdleAnim;
ANIMSTATE m_animState; ANIMSTATE m_animState;
int m_loopCount; // Number of times to loop middle section of anim int m_loopCount; // Number of times to loop middle section of anim
};
class CPlayerStateUnarmedIdle : public CPlayerStateIdle
{
private:
virtual IdleAnims *getIdleAnimsDb(int _animNo);
virtual int getNumIdleAnims();
};
class CPlayerStateCoralBlowerIdle : public CPlayerStateIdle
{
private:
virtual IdleAnims *getIdleAnimsDb(int _animNo);
virtual int getNumIdleAnims();
static IdleAnims s_idleAnims[];
static int s_numIdleAnims;
}; };

View File

@ -84,12 +84,12 @@ void CPlayerStateJump::enter(CPlayer *_player)
void CPlayerStateJump::think(CPlayer *_player) void CPlayerStateJump::think(CPlayer *_player)
{ {
const PlayerMetrics *metrics; const PlayerMetrics *metrics;
int control; int controlHeld;
metrics=getPlayerMetrics(_player); metrics=getPlayerMetrics(_player);
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(m_jumpFrames<=metrics->m_metric[PM__MAX_JUMP_FRAMES]&&control&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) if(m_jumpFrames<=metrics->m_metric[PM__MAX_JUMP_FRAMES]&&controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
{ {
m_jumpFrames++; m_jumpFrames++;
} }
@ -98,15 +98,15 @@ void CPlayerStateJump::think(CPlayer *_player)
setState(_player,STATE_FALL); setState(_player,STATE_FALL);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
{ {
setState(_player,STATE_AIRATTACK); setState(_player,STATE_AIRATTACK);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
moveLeft(_player); moveLeft(_player);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
moveRight(_player); moveRight(_player);
} }

View File

@ -66,8 +66,8 @@
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateRun::enter(CPlayer *_player) void CPlayerStateRun::enter(CPlayer *_player)
{ {
int control; int controlHeld;
control=getPadInput(_player); controlHeld=getPadInputHeld(_player);
if(getMoveVelocity(_player).vx) if(getMoveVelocity(_player).vx)
{ {
@ -78,11 +78,11 @@ void CPlayerStateRun::enter(CPlayer *_player)
setAnimNo(_player,ANIM_PLAYER_ANIM_RUNSTART); setAnimNo(_player,ANIM_PLAYER_ANIM_RUNSTART);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
setFacing(_player,FACING_LEFT); setFacing(_player,FACING_LEFT);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
setFacing(_player,FACING_RIGHT); setFacing(_player,FACING_RIGHT);
} }
@ -99,27 +99,28 @@ void CPlayerStateRun::enter(CPlayer *_player)
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayerStateRun::think(CPlayer *_player) void CPlayerStateRun::think(CPlayer *_player)
{ {
int control; int controlDown,controlHeld;
control=getPadInput(_player); controlDown=getPadInputDown(_player);
controlHeld=getPadInputHeld(_player);
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP)) if(controlDown&CPadConfig::getButton(CPadConfig::PAD_CFG_JUMP))
{ {
setState(_player,STATE_JUMP); setState(_player,STATE_JUMP);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
{ {
setState(_player,STATE_DUCK); setState(_player,STATE_DUCK);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_ACTION))
{ {
setState(_player,STATE_RUNATTACK); setState(_player,STATE_RUNATTACK);
} }
if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT)) if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_LEFT))
{ {
moveLeft(_player); moveLeft(_player);
} }
else if(control&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT)) else if(controlHeld&CPadConfig::getButton(CPadConfig::PAD_CFG_RIGHT))
{ {
moveRight(_player); moveRight(_player);
} }

View File

@ -216,9 +216,21 @@ DVECTOR CPlayerState::getPlayerPos(CPlayer *_player)
Params: Params:
Returns: Returns:
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
int CPlayerState::getPadInput(CPlayer *_player) int CPlayerState::getPadInputHeld(CPlayer *_player)
{ {
return _player->getPadInput(); return _player->getPadInputHeld();
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
int CPlayerState::getPadInputDown(CPlayer *_player)
{
return _player->getPadInputDown();
} }

View File

@ -54,7 +54,8 @@ protected:
DVECTOR getMoveVelocity(class CPlayer *_player); DVECTOR getMoveVelocity(class CPlayer *_player);
void setMoveVelocity(class CPlayer *_player,DVECTOR *_moveVel); void setMoveVelocity(class CPlayer *_player,DVECTOR *_moveVel);
DVECTOR getPlayerPos(class CPlayer *_player); DVECTOR getPlayerPos(class CPlayer *_player);
int getPadInput(class CPlayer *_player); int getPadInputHeld(class CPlayer *_player);
int getPadInputDown(class CPlayer *_player);
int isOnSolidGround(class CPlayer *_player); int isOnSolidGround(class CPlayer *_player);