diff --git a/source/pickups/pickup.cpp b/source/pickups/pickup.cpp index 88c0b2c14..aa0b93463 100644 --- a/source/pickups/pickup.cpp +++ b/source/pickups/pickup.cpp @@ -352,6 +352,10 @@ CBasePickup *createPickup(const PICKUP_TYPE _type,const DVECTOR *_pos) pickup=new ("BalloonAndSpatulaPickup") CBalloonAndSpatulaPickup(); break; + case PICKUP__JELLY_LAUNCHER: + pickup=new ("JellylauncherPickup") CJellyLauncherPickup(); + break; + default: ASSERT(!"UNKNOWN PICKUP TYPE"); return NULL; diff --git a/source/pickups/pickup.h b/source/pickups/pickup.h index 37cb75fe4..b279aba40 100644 --- a/source/pickups/pickup.h +++ b/source/pickups/pickup.h @@ -48,6 +48,7 @@ typedef enum PICKUP__CORAL_BLOWER, PICKUP__QUEST_ITEM__TEST, // Needs to be one of these for each quest item ( I think ) PICKUP__BALLOON_AND_SPATULA, + PICKUP__JELLY_LAUNCHER, } PICKUP_TYPE; diff --git a/source/pickups/pjlammo.cpp b/source/pickups/pjlammo.cpp index b8e9bce28..102871ec5 100644 --- a/source/pickups/pjlammo.cpp +++ b/source/pickups/pjlammo.cpp @@ -74,7 +74,7 @@ void CJellyLauncherAmmoPickup::init() CBasePickup::init(); m_rattle=0; - fh=getSpriteBank()->getFrameHeader(FRM__JELLYAMMO); + fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER); setCollisionSize(fh->W,fh->H); } @@ -89,7 +89,7 @@ DVECTOR CJellyLauncherAmmoPickup::getSizeForPlacement() DVECTOR size; sFrameHdr *fh; - fh=getSpriteBank()->getFrameHeader(FRM__JELLYAMMO); + fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER); size.vx=fh->W; size.vy=fh->H; return size; @@ -136,7 +136,7 @@ void CJellyLauncherAmmoPickup::renderPickup(DVECTOR *_pos) int angle; sprites=getSpriteBank(); - fh=sprites->getFrameHeader(FRM__JELLYAMMO); + fh=sprites->getFrameHeader(FRM__LAUNCHER); if(m_rattle<=jlammo_rattlecount*4095) { angle=((msin(m_rattle&4095)*jlammo_rattlescale)>>12)&4095; @@ -148,5 +148,73 @@ void CJellyLauncherAmmoPickup::renderPickup(DVECTOR *_pos) sprites->printRotatedScaledSprite(fh,_pos->vx,_pos->vy,4096,4096,angle,OTPOS__PICKUP_POS); } + + + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CJellyLauncherPickup::init() +{ + sFrameHdr *fh; + + CBasePickup::init(); + + fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER); + setCollisionSize(fh->W,fh->H); +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +DVECTOR CJellyLauncherPickup::getSizeForPlacement() +{ + DVECTOR size; + sFrameHdr *fh; + + fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER); + size.vx=fh->W; + size.vy=fh->H; + return size; +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CJellyLauncherPickup::collect(class CPlayer *_player) +{ + _player->setMode(PLAYER_MODE_JELLY_LAUNCHER); + CBasePickup::collect(_player); +} + +/*---------------------------------------------------------------------- + Function: + Purpose: + Params: + Returns: + ---------------------------------------------------------------------- */ +void CJellyLauncherPickup::renderPickup(DVECTOR *_pos) +{ + SpriteBank *sprites; + sFrameHdr *fh; + int x,y; + + sprites=getSpriteBank(); + fh=sprites->getFrameHeader(FRM__LAUNCHER); + x=_pos->vx-(fh->W/2); + y=_pos->vy-(fh->H/2); + sprites->printFT4(fh,x,y,0,0,OTPOS__PICKUP_POS); +} + + /*=========================================================================== end */ diff --git a/source/pickups/pjlammo.h b/source/pickups/pjlammo.h index 085d69448..b39cbd0ae 100644 --- a/source/pickups/pjlammo.h +++ b/source/pickups/pjlammo.h @@ -38,7 +38,6 @@ class CJellyLauncherAmmoPickup : public CBasePickup { public: virtual void init(); - virtual DVECTOR getSizeForPlacement(); virtual void collect(class CPlayer *_player); @@ -51,6 +50,18 @@ private: }; +class CJellyLauncherPickup : public CBasePickup +{ +public: + virtual void init(); + virtual DVECTOR getSizeForPlacement(); + virtual void collect(class CPlayer *_player); + +protected: + virtual void renderPickup(DVECTOR *_pos); +}; + + /*---------------------------------------------------------------------- Globals ------- */ diff --git a/source/player/pmjelly.cpp b/source/player/pmjelly.cpp index e8ecc76a9..a0e2eff8b 100644 --- a/source/player/pmjelly.cpp +++ b/source/player/pmjelly.cpp @@ -152,7 +152,7 @@ void CPlayerModeJellyLauncher::renderModeUi() char buf[4]; sb=m_player->getSpriteBank(); - fh=sb->getFrameHeader(FRM__BLOWER); + fh=sb->getFrameHeader(FRM__LAUNCHER); switch(m_firingState) { case FIRING_STATE__NONE: