This commit is contained in:
Paul 2001-05-18 21:03:51 +00:00
parent 124ffdb79b
commit 10e51da890
21 changed files with 182 additions and 178 deletions

View file

@ -83,7 +83,7 @@ void CBalloonPickup::init()
{
sFrameHdr *fh;
CBaseRespawningPickup::init();
CBaseWeaponPickup::init();
m_sin=0;
fh=getSpriteBank()->getFrameHeader(FRM__BALLOON);
@ -117,7 +117,7 @@ void CBalloonPickup::collect(class CPlayer *_player)
{
_player->setMode(PLAYER_MODE_BALLOON);
CSoundMediator::playSfx(CSoundMediator::SFX_BALLOON_INFLATE);
CBaseRespawningPickup::collect(_player);
CBaseWeaponPickup::collect(_player);
}
/*----------------------------------------------------------------------

View file

@ -34,7 +34,7 @@
Structure defintions
-------------------- */
class CBalloonPickup : public CBaseRespawningPickup
class CBalloonPickup : public CBaseWeaponPickup
{
public:
virtual void init();

View file

@ -69,33 +69,11 @@
---------------------------------------------------------------------- */
void CCoralBlowerPickup::init()
{
sFrameHdr *fh;
CBasePickup::init();
fh=getSpriteBank()->getFrameHeader(FRM__BLOWER);
setCollisionSize(fh->W,fh->H);
CBaseWeaponSimplePickup::init();
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_CORALBLOWER);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
DVECTOR CCoralBlowerPickup::getSizeForPlacement()
{
DVECTOR size;
sFrameHdr *fh;
fh=getSpriteBank()->getFrameHeader(FRM__BLOWER);
size.vx=fh->W;
size.vy=fh->H;
return size;
}
/*----------------------------------------------------------------------
Function:
Purpose:
@ -105,7 +83,7 @@ DVECTOR CCoralBlowerPickup::getSizeForPlacement()
void CCoralBlowerPickup::collect(class CPlayer *_player)
{
_player->setMode(PLAYER_MODE_CORALBLOWER);
CBasePickup::collect(_player);
CBaseWeaponSimplePickup::collect(_player);
}
/*----------------------------------------------------------------------
@ -114,17 +92,9 @@ void CCoralBlowerPickup::collect(class CPlayer *_player)
Params:
Returns:
---------------------------------------------------------------------- */
void CCoralBlowerPickup::renderPickup(DVECTOR *_pos)
int CCoralBlowerPickup::getWeaponSpriteFrame()
{
SpriteBank *sprites;
sFrameHdr *fh;
int x,y;
sprites=getSpriteBank();
fh=sprites->getFrameHeader(FRM__BLOWER);
x=_pos->vx-(fh->W/2);
y=_pos->vy-(fh->H/2);
sprites->printFT4(fh,x,y,0,0,OTPOS__PICKUP_POS);
return FRM__BLOWER;
}
/*===========================================================================

View file

@ -34,15 +34,14 @@
Structure defintions
-------------------- */
class CCoralBlowerPickup : public CBasePickup
class CCoralBlowerPickup : public CBaseWeaponSimplePickup
{
public:
virtual void init();
virtual DVECTOR getSizeForPlacement();
virtual void collect(class CPlayer *_player);
protected:
virtual void renderPickup(DVECTOR *_pos);
virtual int getWeaponSpriteFrame();
};

View file

@ -165,33 +165,11 @@ void CBubbleMixturePickup::renderPickup(DVECTOR *_pos)
---------------------------------------------------------------------- */
void CBubbleWandPickup::init()
{
sFrameHdr *fh;
CBaseRespawningPickup::init();
fh=getSpriteBank()->getFrameHeader(FRM__BUBBLEWAND);
setCollisionSize(fh->W,fh->H);
CBaseWeaponSimplePickup::init();
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_BUBBLEWAND);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
DVECTOR CBubbleWandPickup::getSizeForPlacement()
{
DVECTOR size;
sFrameHdr *fh;
fh=getSpriteBank()->getFrameHeader(FRM__BUBBLEWAND);
size.vx=fh->W;
size.vy=fh->H;
return size;
}
/*----------------------------------------------------------------------
Function:
Purpose:
@ -201,7 +179,7 @@ DVECTOR CBubbleWandPickup::getSizeForPlacement()
void CBubbleWandPickup::collect(class CPlayer *_player)
{
_player->setMode(PLAYER_MODE_BUBBLE_MIXTURE);
CBaseRespawningPickup::collect(_player);
CBaseWeaponSimplePickup::collect(_player);
}
/*----------------------------------------------------------------------
@ -210,28 +188,9 @@ void CBubbleWandPickup::collect(class CPlayer *_player)
Params:
Returns:
---------------------------------------------------------------------- */
int CBubbleWandPickup::getRespawnTime()
int CBubbleWandPickup::getWeaponSpriteFrame()
{
return 60*10;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CBubbleWandPickup::renderPickup(DVECTOR *_pos)
{
SpriteBank *sprites;
sFrameHdr *fh;
int x,y;
sprites=getSpriteBank();
fh=sprites->getFrameHeader(FRM__BUBBLEWAND);
x=_pos->vx-(fh->W/2);
y=_pos->vy-(fh->H/2);
sprites->printFT4(fh,x,y,0,0,OTPOS__PICKUP_POS);
return FRM__BUBBLEWAND;
}
/*===========================================================================

View file

@ -54,18 +54,14 @@ private:
};
class CBubbleWandPickup : public CBaseRespawningPickup
class CBubbleWandPickup : public CBaseWeaponSimplePickup
{
public:
virtual void init();
virtual DVECTOR getSizeForPlacement();
virtual void collect(class CPlayer *_player);
protected:
virtual int getRespawnTime();
virtual void renderPickup(DVECTOR *_pos);
virtual int getWeaponSpriteFrame();
};

View file

@ -25,6 +25,10 @@
#include "level\level.h"
#endif
#ifndef __PLAYER_PLAYER_H__
#include "player\player.h"
#endif
// For the factory..
#ifndef __PICKUPS_PHEALTH_H__
@ -277,6 +281,88 @@ void CBaseRespawningPickup::collect(class CPlayer *_player)
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CBaseWeaponPickup::collidedWith(CThing *_thisThing)
{
switch(_thisThing->getThingType())
{
case TYPE_PLAYER:
if(((CPlayer*)_thisThing)->tryingToPickupWeapon())
{
collect((CPlayer*)_thisThing);
}
break;
default:
ASSERT(0);
break;
}
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CBaseWeaponSimplePickup::init()
{
sFrameHdr *fh;
CBaseWeaponPickup::init();
fh=getSpriteBank()->getFrameHeader(FRM__NET);
setCollisionSize(fh->W,fh->H);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
DVECTOR CBaseWeaponSimplePickup::getSizeForPlacement()
{
DVECTOR size;
sFrameHdr *fh;
fh=getSpriteBank()->getFrameHeader(getWeaponSpriteFrame());
size.vx=fh->W;
size.vy=fh->H;
return size;
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
void CBaseWeaponSimplePickup::renderPickup(DVECTOR *_pos)
{
SpriteBank *sprites;
sFrameHdr *fh;
int x,y;
sprites=getSpriteBank();
fh=sprites->getFrameHeader(getWeaponSpriteFrame());
x=_pos->vx-(fh->W/2);
y=_pos->vy-(fh->H/2);
sprites->printFT4(fh,x,y,0,0,OTPOS__PICKUP_POS);
}
/*----------------------------------------------------------------------
Function:
Purpose: This is basically a factory method for making pickups :)

View file

@ -107,6 +107,31 @@ private:
};
class CBaseWeaponPickup : public CBaseRespawningPickup
{
protected:
virtual void collidedWith(CThing *_thisThing);
virtual int getRespawnTime() {return 5*60;}
};
class CBaseWeaponSimplePickup : public CBaseWeaponPickup
{
public:
virtual void init();
virtual DVECTOR getSizeForPlacement();
protected:
virtual void renderPickup(DVECTOR *_pos);
virtual int getWeaponSpriteFrame()=0;
};
/*----------------------------------------------------------------------
Globals
------- */

View file

@ -163,33 +163,11 @@ void CJellyLauncherAmmoPickup::renderPickup(DVECTOR *_pos)
---------------------------------------------------------------------- */
void CJellyLauncherPickup::init()
{
sFrameHdr *fh;
CBasePickup::init();
fh=getSpriteBank()->getFrameHeader(FRM__LAUNCHER);
setCollisionSize(fh->W,fh->H);
CBaseWeaponSimplePickup::init();
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_JELLYLAUNCHER);
}
/*----------------------------------------------------------------------
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:
@ -199,7 +177,7 @@ DVECTOR CJellyLauncherPickup::getSizeForPlacement()
void CJellyLauncherPickup::collect(class CPlayer *_player)
{
_player->setMode(PLAYER_MODE_JELLY_LAUNCHER);
CBasePickup::collect(_player);
CBaseWeaponSimplePickup::collect(_player);
}
/*----------------------------------------------------------------------
@ -208,17 +186,9 @@ void CJellyLauncherPickup::collect(class CPlayer *_player)
Params:
Returns:
---------------------------------------------------------------------- */
void CJellyLauncherPickup::renderPickup(DVECTOR *_pos)
int CJellyLauncherPickup::getWeaponSpriteFrame()
{
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);
return FRM__LAUNCHER;
}

View file

@ -50,15 +50,14 @@ private:
};
class CJellyLauncherPickup : public CBasePickup
class CJellyLauncherPickup : public CBaseWeaponSimplePickup
{
public:
virtual void init();
virtual DVECTOR getSizeForPlacement();
virtual void collect(class CPlayer *_player);
protected:
virtual void renderPickup(DVECTOR *_pos);
virtual int getWeaponSpriteFrame();
};

View file

@ -69,34 +69,12 @@
---------------------------------------------------------------------- */
void CNetPickup::init()
{
sFrameHdr *fh;
CBasePickup::init();
fh=getSpriteBank()->getFrameHeader(FRM__NET);
setCollisionSize(fh->W,fh->H);
CBaseWeaponSimplePickup::init();
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_NET);
GameScene.getPlayer()->registerAddon(PLAYER_ADDON_JELLYFISHINNET);
}
/*----------------------------------------------------------------------
Function:
Purpose:
Params:
Returns:
---------------------------------------------------------------------- */
DVECTOR CNetPickup::getSizeForPlacement()
{
DVECTOR size;
sFrameHdr *fh;
fh=getSpriteBank()->getFrameHeader(FRM__NET);
size.vx=fh->W;
size.vy=fh->H;
return size;
}
/*----------------------------------------------------------------------
Function:
Purpose:
@ -106,7 +84,7 @@ DVECTOR CNetPickup::getSizeForPlacement()
void CNetPickup::collect(class CPlayer *_player)
{
_player->setMode(PLAYER_MODE_NET);
CBasePickup::collect(_player);
CBaseWeaponSimplePickup::collect(_player);
}
/*----------------------------------------------------------------------
@ -115,18 +93,11 @@ void CNetPickup::collect(class CPlayer *_player)
Params:
Returns:
---------------------------------------------------------------------- */
void CNetPickup::renderPickup(DVECTOR *_pos)
int CNetPickup::getWeaponSpriteFrame()
{
SpriteBank *sprites;
sFrameHdr *fh;
int x,y;
sprites=getSpriteBank();
fh=sprites->getFrameHeader(FRM__NET);
x=_pos->vx-(fh->W/2);
y=_pos->vy-(fh->H/2);
sprites->printFT4(fh,x,y,0,0,OTPOS__PICKUP_POS);
return FRM__NET;
}
/*===========================================================================
end */

View file

@ -34,16 +34,14 @@
Structure defintions
-------------------- */
class CNetPickup : public CBasePickup
class CNetPickup : public CBaseWeaponSimplePickup
{
public:
virtual void init();
virtual int dontKillDuringLevelRespawn() {return true;}
virtual DVECTOR getSizeForPlacement();
virtual void collect(class CPlayer *_player);
protected:
virtual void renderPickup(DVECTOR *_pos);
virtual int getWeaponSpriteFrame();
};