This commit is contained in:
Paul 2001-05-16 16:47:29 +00:00
parent cb067e3db8
commit 44ff77f5a2
5 changed files with 36 additions and 21 deletions

View file

@ -592,12 +592,14 @@ m_animFrame=0;
// Always ( cept for one level ) need this // Always ( cept for one level ) need this
registerAddon(PLAYER_ADDON_GLOVE); registerAddon(PLAYER_ADDON_GLOVE);
// registerAddon(PLAYER_ADDON_NET); #ifdef __USER_paul__
// registerAddon(PLAYER_ADDON_CORALBLOWER); registerAddon(PLAYER_ADDON_NET);
// registerAddon(PLAYER_ADDON_JELLYLAUNCHER); registerAddon(PLAYER_ADDON_CORALBLOWER);
// registerAddon(PLAYER_ADDON_GLASSES); registerAddon(PLAYER_ADDON_JELLYLAUNCHER);
// registerAddon(PLAYER_ADDON_BUBBLEWAND); registerAddon(PLAYER_ADDON_GLASSES);
// registerAddon(PLAYER_ADDON_JELLYFISHINNET); registerAddon(PLAYER_ADDON_BUBBLEWAND);
registerAddon(PLAYER_ADDON_JELLYFISHINNET);
#endif
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -1504,6 +1506,7 @@ void CPlayer::respawn()
m_invincibilityRingTimer=0; m_invincibilityRingTimer=0;
m_bubbleAmmo=0; m_bubbleAmmo=0;
m_jellyAmmo=0; m_jellyAmmo=0;
m_jellyfishAmmo=0;
m_moveVelocity.vx=m_moveVelocity.vy=0; m_moveVelocity.vx=m_moveVelocity.vy=0;
@ -1524,14 +1527,23 @@ void CPlayer::respawn()
---------------------------------------------------------------------- */ ---------------------------------------------------------------------- */
void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame) void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame)
{ {
POLY_FT4 *ft4; int playerMode;
int trans; int trans;
int addon; int addon;
POLY_FT4 *ft4;
if(m_currentMode==PLAYER_MODE_DEAD)
{
playerMode=m_lastModeBeforeDeath;
}
else
{
playerMode=m_currentMode;
}
trans=m_invincibleFrameCount||m_invincibilityRingTimer; trans=m_invincibleFrameCount||m_invincibilityRingTimer;
// Render an addon? // Render an addon?
addon=s_addonNumbers[m_currentMode]; addon=s_addonNumbers[playerMode];
if(addon!=NO_ADDON) if(addon!=NO_ADDON)
{ {
s8 addonAnimNo=s_animMapNet[addon][_animNo]; s8 addonAnimNo=s_animMapNet[addon][_animNo];
@ -1554,7 +1566,7 @@ void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame)
} }
// Render JFish in a net? // Render JFish in a net?
if(m_currentMode==PLAYER_MODE_NET&&m_currentPlayerModeClass->isJellyfishNetFull()) if(playerMode==PLAYER_MODE_NET&&getJellyFishAmmo())
{ {
s8 addonAnimNo=s_animMapNet[PLAYER_ADDON_JELLYFISHINNET][_animNo]; s8 addonAnimNo=s_animMapNet[PLAYER_ADDON_JELLYFISHINNET][_animNo];
if(addonAnimNo!=-1) if(addonAnimNo!=-1)
@ -1575,6 +1587,7 @@ void CPlayer::renderSb(DVECTOR *_pos,int _animNo,int _animFrame)
} }
} }
} }
// Render glasses addon? // Render glasses addon?
if(isWearingGlasses()) if(isWearingGlasses())
{ {

View file

@ -360,6 +360,11 @@ public:
void useOneJelly() {m_jellyAmmo--;} void useOneJelly() {m_jellyAmmo--;}
int getJellyAmmo() {return m_jellyAmmo;} int getJellyAmmo() {return m_jellyAmmo;}
void giveJellyFishAmmo() {if(!isJellyFishAmmoFull())m_jellyfishAmmo++;}
void useOneJellyFishAmmo() {m_jellyfishAmmo--;}
int isJellyFishAmmoFull() {return m_jellyfishAmmo==5;}
int getJellyFishAmmo() {return m_jellyfishAmmo;}
void setIsInWater(int _in) {m_isInWater=_in;} void setIsInWater(int _in) {m_isInWater=_in;}
int getIsInWater() {return m_isInWater;} int getIsInWater() {return m_isInWater;}
int getIsHealthFullSoICanStopSoakingUp() {return m_healthWaterLevel==WATERMAXHEALTH;} int getIsHealthFullSoICanStopSoakingUp() {return m_healthWaterLevel==WATERMAXHEALTH;}
@ -376,6 +381,7 @@ private:
int m_divingHelmet; int m_divingHelmet;
int m_bubbleAmmo; int m_bubbleAmmo;
int m_jellyAmmo; int m_jellyAmmo;
int m_jellyfishAmmo;
int m_isInWater; int m_isInWater;
// Platforms // Platforms

View file

@ -88,7 +88,6 @@ void CPlayerModeNet::enter()
{ {
CPlayerModeBase::enter(); CPlayerModeBase::enter();
m_netState=NET_STATE__INERT; m_netState=NET_STATE__INERT;
m_jellyfishHeld=0;
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
@ -140,11 +139,11 @@ void CPlayerModeNet::think()
padDown=getPadInputDown(); padDown=getPadInputDown();
if(padDown&(PI_CATCH|PI_FIRE)&&canSwingNetFromThisState()) if(padDown&(PI_CATCH|PI_FIRE)&&canSwingNetFromThisState())
{ {
if(padDown&PI_CATCH&&m_jellyfishHeld<5) if(padDown&PI_CATCH&&!m_player->isJellyFishAmmoFull())
{ {
m_netState=NET_STATE__CATCHING; m_netState=NET_STATE__CATCHING;
} }
else if(padDown&PI_FIRE&&m_jellyfishHeld) else if(padDown&PI_FIRE&&m_player->getJellyFishAmmo())
{ {
m_netState=NET_STATE__LAUNCHING; m_netState=NET_STATE__LAUNCHING;
} }
@ -196,11 +195,11 @@ void CPlayerModeNet::think()
((CNpcEnemy*)thing)->caughtWithNet(); ((CNpcEnemy*)thing)->caughtWithNet();
m_netState=NET_STATE__JUST_CAUGHT_SOMETHING; m_netState=NET_STATE__JUST_CAUGHT_SOMETHING;
thing=NULL; thing=NULL;
if(m_jellyfishHeld==0) if(m_player->getJellyFishAmmo()==0)
{ {
m_netSin=0; m_netSin=0;
} }
m_jellyfishHeld++; m_player->giveJellyFishAmmo();
} }
else else
{ {
@ -241,7 +240,7 @@ void CPlayerModeNet::think()
projectile->updateCollisionArea(); projectile->updateCollisionArea();
m_netState=NET_STATE__JUST_LAUNCHED_SOMETHING; m_netState=NET_STATE__JUST_LAUNCHED_SOMETHING;
m_jellyfishHeld--; m_player->useOneJellyFishAmmo();
} }
break; break;
@ -263,7 +262,7 @@ void CPlayerModeNet::think()
} }
} }
if(m_jellyfishHeld) if(m_player->getJellyFishAmmo())
{ {
m_netSin=(m_netSin+npspeed)&4095; m_netSin=(m_netSin+npspeed)&4095;
} }
@ -283,7 +282,7 @@ void CPlayerModeNet::think()
sb=m_player->getSpriteBank(); sb=m_player->getSpriteBank();
fh=sb->getFrameHeader(FRM__NET); fh=sb->getFrameHeader(FRM__NET);
if(m_jellyfishHeld) if(m_player->getJellyFishAmmo())
{ {
POLY_FT4 *ft4; POLY_FT4 *ft4;
@ -299,7 +298,7 @@ void CPlayerModeNet::think()
sb->printFT4(fh,CPlayer::POWERUPUI_ICONX,CPlayer::POWERUPUI_ICONY,0,0,CPlayer::POWERUPUI_OT); sb->printFT4(fh,CPlayer::POWERUPUI_ICONX,CPlayer::POWERUPUI_ICONY,0,0,CPlayer::POWERUPUI_OT);
} }
sprintf(buf,"x%d",m_jellyfishHeld); sprintf(buf,"x%d",m_player->getJellyFishAmmo());
m_player->getFontBank()->print(CPlayer::POWERUPUI_TEXTX,CPlayer::POWERUPUI_TEXTY,buf); m_player->getFontBank()->print(CPlayer::POWERUPUI_TEXTX,CPlayer::POWERUPUI_TEXTY,buf);
} }

View file

@ -40,7 +40,6 @@ public:
virtual void enter(); virtual void enter();
virtual void think(); virtual void think();
virtual void renderModeUi(); virtual void renderModeUi();
virtual int isJellyfishNetFull() {return m_jellyfishHeld!=0;}
virtual void setAnimNo(int _animNo); virtual void setAnimNo(int _animNo);
virtual void setAnimFrame(int _animFrame); virtual void setAnimFrame(int _animFrame);
@ -61,7 +60,6 @@ private:
int m_netFrame; int m_netFrame;
NetState m_netState; NetState m_netState;
int m_netSin; int m_netSin;
int m_jellyfishHeld;
}; };

View file

@ -93,7 +93,6 @@ public:
virtual int canDoLookAround() {return false;} virtual int canDoLookAround() {return false;}
virtual void springPlayerUp() {;} virtual void springPlayerUp() {;}
void inSoakUpState(); void inSoakUpState();
virtual int isJellyfishNetFull() {ASSERT(0);return false;} // Fugly..
virtual int setState(int _state) {return 0;} virtual int setState(int _state) {return 0;}
virtual int getState() {return STATE_IDLE;} // ARSE.. states need to go back in CPlayer! (pkg) virtual int getState() {return STATE_IDLE;} // ARSE.. states need to go back in CPlayer! (pkg)