This commit is contained in:
parent
15d3aff1ab
commit
c48fce126a
@ -860,55 +860,51 @@ void CNpcEnemy::collidedWith( CThing *_thisThing )
|
||||
|
||||
ATTACK_STATE playerState = player->getAttackState();
|
||||
|
||||
switch( playerState )
|
||||
if(playerState==ATTACK_STATE__NONE)
|
||||
{
|
||||
case ATTACK_STATE__NONE:
|
||||
if ( !player->isRecoveringFromHit() )
|
||||
{
|
||||
if ( !player->isRecoveringFromHit() )
|
||||
switch( m_data[m_type].detectCollision )
|
||||
{
|
||||
switch( m_data[m_type].detectCollision )
|
||||
case DETECT_NO_COLLISION:
|
||||
{
|
||||
case DETECT_NO_COLLISION:
|
||||
{
|
||||
// ignore
|
||||
// ignore
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case DETECT_ALL_COLLISION:
|
||||
{
|
||||
m_oldControlFunc = m_controlFunc;
|
||||
m_controlFunc = NPC_CONTROL_COLLISION;
|
||||
case DETECT_ALL_COLLISION:
|
||||
{
|
||||
m_oldControlFunc = m_controlFunc;
|
||||
m_controlFunc = NPC_CONTROL_COLLISION;
|
||||
|
||||
processUserCollision( _thisThing );
|
||||
processUserCollision( _thisThing );
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case DETECT_ATTACK_COLLISION_GENERIC:
|
||||
{
|
||||
processAttackCollision();
|
||||
processUserCollision( _thisThing );
|
||||
case DETECT_ATTACK_COLLISION_GENERIC:
|
||||
{
|
||||
processAttackCollision();
|
||||
processUserCollision( _thisThing );
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// player is attacking, respond appropriately
|
||||
|
||||
default:
|
||||
if ( m_controlFunc != NPC_CONTROL_SHOT )
|
||||
{
|
||||
// player is attacking, respond appropriately
|
||||
|
||||
if ( m_controlFunc != NPC_CONTROL_SHOT )
|
||||
if(playerState==ATTACK_STATE__BUTT_BOUNCE)
|
||||
{
|
||||
m_controlFunc = NPC_CONTROL_SHOT;
|
||||
m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
|
||||
player->justButtBouncedABadGuy();
|
||||
}
|
||||
|
||||
break;
|
||||
m_controlFunc = NPC_CONTROL_SHOT;
|
||||
m_state = NPC_GENERIC_HIT_CHECK_HEALTH;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1812,6 +1812,20 @@ PLAYERINPUT CPlayer::readPadInput()
|
||||
return input;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CPlayer::justButtBouncedABadGuy()
|
||||
{
|
||||
m_currentPlayerModeClass->setState(STATE_BUTTBOUNCEUP);
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
|
@ -75,6 +75,7 @@ typedef enum
|
||||
STATE_BUTTBOUNCE,
|
||||
STATE_BUTTFALL,
|
||||
STATE_BUTTLAND,
|
||||
STATE_BUTTBOUNCEUP,
|
||||
STATE_DUCK,
|
||||
STATE_SOAKUP,
|
||||
STATE_GETUP,
|
||||
@ -356,6 +357,8 @@ public:
|
||||
|
||||
int isHoldingNet() {return m_currentMode==PLAYER_MODE_NET;}
|
||||
|
||||
void justButtBouncedABadGuy(); // Also fugly.. :/
|
||||
|
||||
private:
|
||||
int m_glassesFlag;
|
||||
int m_squeakyBootsTimer;
|
||||
|
@ -204,6 +204,7 @@ int CPlayerModeBubbleMixture::canBlowBubbleFromThisState()
|
||||
case STATE_BUTTBOUNCE:
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
case STATE_DUCK:
|
||||
case STATE_SOAKUP:
|
||||
case STATE_GETUP:
|
||||
|
@ -186,6 +186,7 @@ int CPlayerModeChop::canAttackFromThisState()
|
||||
case STATE_BUTTBOUNCE:
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
case STATE_DUCK:
|
||||
case STATE_SOAKUP:
|
||||
case STATE_GETUP:
|
||||
|
@ -115,6 +115,7 @@ static CPlayerState *s_stateTable[]=
|
||||
NULL, // STATE_BUTTBOUNCE
|
||||
NULL, // STATE_BUTTFALL
|
||||
NULL, // STATE_BUTTLAND
|
||||
NULL, // STATE_BUTTBOUNCEUP
|
||||
NULL, // STATE_DUCK
|
||||
NULL, // STATE_SOAKUP
|
||||
&s_stateGetUp, // STATE_GETUP
|
||||
|
@ -209,6 +209,7 @@ int CPlayerModeJellyLauncher::setState(int _state)
|
||||
case STATE_BUTTBOUNCE:
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
case STATE_DUCK:
|
||||
case STATE_SOAKUP:
|
||||
case STATE_GETUP:
|
||||
@ -252,6 +253,7 @@ int CPlayerModeJellyLauncher::canFireFromThisState()
|
||||
case STATE_BUTTBOUNCE:
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
case STATE_DUCK:
|
||||
case STATE_SOAKUP:
|
||||
case STATE_GETUP:
|
||||
|
@ -321,6 +321,7 @@ int CPlayerModeNet::canSwingNetFromThisState()
|
||||
case STATE_BUTTBOUNCE:
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
case STATE_DUCK:
|
||||
case STATE_SOAKUP:
|
||||
case STATE_GETUP:
|
||||
|
@ -107,6 +107,7 @@ static CPlayerState *s_stateTable[]=
|
||||
&s_stateButtBounce, // STATE_BUTTBOUNCE
|
||||
&s_stateButtBounceFall, // STATE_BUTTFALL
|
||||
&s_stateButtBounceLand, // STATE_BUTTLAND
|
||||
&s_stateButtBounceUp, // STATE_BUTTBOUNCEUP
|
||||
&s_stateDuck, // STATE_DUCK
|
||||
&s_stateSoakUp, // STATE_SOAKUP
|
||||
&s_stateGetUp, // STATE_GETUP
|
||||
@ -227,6 +228,7 @@ int CPlayerModeBase::canDoLookAround()
|
||||
case STATE_BUTTBOUNCE:
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
case STATE_DUCK:
|
||||
case STATE_GETUP:
|
||||
case STATE_JUMPBACK:
|
||||
@ -250,6 +252,7 @@ ATTACK_STATE CPlayerModeBase::getAttackState()
|
||||
{
|
||||
case STATE_BUTTFALL:
|
||||
case STATE_BUTTLAND:
|
||||
case STATE_BUTTBOUNCEUP:
|
||||
ret=ATTACK_STATE__BUTT_BOUNCE;
|
||||
break;
|
||||
|
||||
@ -283,10 +286,10 @@ void CPlayerModeBase::thinkVerticalMovement()
|
||||
{
|
||||
playerHasHitGround();
|
||||
}
|
||||
else if(m_currentState!=STATE_FALL&&m_currentState!=STATE_FALLFAR&&
|
||||
else if(m_currentState!=STATE_FALL&&m_currentState!=STATE_FALLFAR&& // Hmm.. (pkg)
|
||||
m_currentState!=STATE_BUTTFALL&&m_currentState!=STATE_BUTTBOUNCE&&
|
||||
m_currentState!=STATE_JUMP&&m_currentState!=STATE_SPRINGUP&&
|
||||
m_currentState!=STATE_JUMPBACK)
|
||||
m_currentState!=STATE_JUMPBACK&&m_currentState!=STATE_BUTTBOUNCEUP)
|
||||
{
|
||||
DVECTOR pos;
|
||||
pos=m_player->getPlayerPos();
|
||||
|
@ -62,6 +62,7 @@
|
||||
CPlayerStateButtBounce s_stateButtBounce;
|
||||
CPlayerStateButtBounceFall s_stateButtBounceFall;
|
||||
CPlayerStateButtBounceLand s_stateButtBounceLand;
|
||||
CPlayerStateButtBounceUp s_stateButtBounceUp;
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
@ -146,5 +147,55 @@ void CPlayerStateButtBounceLand::think(CPlayerModeBase *_playerMode)
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CPlayerStateButtBounceUp::enter(CPlayerModeBase *_playerMode)
|
||||
{
|
||||
_playerMode->setAnimNo(ANIM_SPONGEBOB_BUTTBOUNCEEND);
|
||||
m_bounceFrames=0;
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
int bounceUpFrames=5;
|
||||
void CPlayerStateButtBounceUp::think(CPlayerModeBase *_playerMode)
|
||||
{
|
||||
int controlHeld;
|
||||
|
||||
controlHeld=_playerMode->getPadInputHeld();
|
||||
if(controlHeld&PI_LEFT)
|
||||
{
|
||||
_playerMode->moveLeft();
|
||||
}
|
||||
else if(controlHeld&PI_RIGHT)
|
||||
{
|
||||
_playerMode->moveRight();
|
||||
}
|
||||
else
|
||||
{
|
||||
_playerMode->slowdown();
|
||||
}
|
||||
|
||||
if(m_bounceFrames<=bounceUpFrames)
|
||||
{
|
||||
m_bounceFrames++;
|
||||
_playerMode->jump();
|
||||
}
|
||||
else
|
||||
{
|
||||
_playerMode->setState(STATE_FALL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
||||
|
@ -54,7 +54,16 @@ public:
|
||||
virtual void enter(class CPlayerModeBase *_playerMode);
|
||||
virtual void think(class CPlayerModeBase *_playerMode);
|
||||
|
||||
};
|
||||
|
||||
class CPlayerStateButtBounceUp : public CPlayerState
|
||||
{
|
||||
public:
|
||||
virtual void enter(class CPlayerModeBase *_playerMode);
|
||||
virtual void think(class CPlayerModeBase *_playerMode);
|
||||
|
||||
private:
|
||||
int m_bounceFrames;
|
||||
|
||||
};
|
||||
|
||||
@ -66,6 +75,7 @@ private:
|
||||
extern CPlayerStateButtBounce s_stateButtBounce;
|
||||
extern CPlayerStateButtBounceFall s_stateButtBounceFall;
|
||||
extern CPlayerStateButtBounceLand s_stateButtBounceLand;
|
||||
extern CPlayerStateButtBounceUp s_stateButtBounceUp;
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
|
@ -105,7 +105,7 @@ void CPlayerStateFall::think(CPlayerModeBase *_playerMode)
|
||||
}
|
||||
_playerMode->fall();
|
||||
|
||||
if(controlHeld&PI_DOWN)
|
||||
if(controlDown&PI_DOWN)
|
||||
{
|
||||
_playerMode->setState(STATE_BUTTBOUNCE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user