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

@ -90,6 +90,8 @@ eng=JUMP
eng=FIRE
[STR__FRONTEND__CATCH]
eng=CATCH
[STR__FRONTEND__WEAPONCHANGE]
eng=CHANGE WEAPON
; Screen menu
[STR__FRONTEND__HORIZONTAL_POSITION]

View File

@ -117,6 +117,7 @@ int CFrontEndOptions::s_buttonOrder[]=
CPadConfig::PAD_CFG_JUMP,
CPadConfig::PAD_CFG_FIRE,
CPadConfig::PAD_CFG_CATCH,
CPadConfig::PAD_CFG_WEAPONCHANGE,
};
CGUISpriteReadout::SpriteReadoutData CFrontEndOptions::s_controlReadoutSprites[]=
@ -318,6 +319,15 @@ void CFrontEndOptions::init()
tb->init(fr);
tb->setObjectXYWH(146+26,30,120,15);
tb->setText(STR__FRONTEND__CATCH);
sr=new ("spritereadout") CGUISpriteReadout();
sr->init(fr);
sr->setObjectXYWH(146,45,26,15);
sr->setReadoutTarget(&m_controlIcons[CONTROL_WEAPONCHANGE]);
sr->setReadoutData(s_controlReadoutSprites);
tb=new ("textbox") CGUITextBox();
tb->init(fr);
tb->setObjectXYWH(146+26,45,120,15);
tb->setText(STR__FRONTEND__WEAPONCHANGE);
// Populate SCREEN menu

View File

@ -71,6 +71,7 @@ private:
CONTROL_JUMP,
CONTROL_FIRE,
CONTROL_CATCH,
CONTROL_WEAPONCHANGE,
CONTROL_COUNT
};

View File

@ -242,7 +242,7 @@ ColShowType showCollision=SHOW_NONE;
#endif
void CLayerCollision::render(DVECTOR &MapPos)
{
if(PadGetDown(0)&PAD_CIRCLE)
if(PadGetDown(0)&PAD_L2)
{
showCollision=(ColShowType)(showCollision+1);
if(showCollision>SHOW_SEMITRANS)showCollision=SHOW_NONE;

View File

@ -447,8 +447,7 @@ void CLevel::initThings(int _respawningLevel)
createThisPickup=false;
}
if(((PICKUP_TYPE)ItemList->Type==PICKUP__NET||
(PICKUP_TYPE)ItemList->Type==PICKUP__HELMET)&&
if((PICKUP_TYPE)ItemList->Type==PICKUP__HELMET&&
_respawningLevel)
{
createThisPickup=false;

View File

@ -401,6 +401,7 @@ CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]=
PAD_SQUARE, // PAD_CFG_FIRE
PAD_TRIANGLE, // PAD_CFG_CATCH
PAD_CROSS, // PAD_CFG_JUMP
PAD_CIRCLE, // PAD_CFG_WEAPONCHANGE
}},
// Config B
{{
@ -413,6 +414,7 @@ CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]=
PAD_CROSS, // PAD_CFG_FIRE
PAD_TRIANGLE, // PAD_CFG_CATCH
PAD_SQUARE, // PAD_CFG_JUMP
PAD_CIRCLE, // PAD_CFG_WEAPONCHANGE
}},
// Config C
{{
@ -425,6 +427,7 @@ CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]=
PAD_CIRCLE, // PAD_CFG_FIRE
PAD_CROSS, // PAD_CFG_CATCH
PAD_TRIANGLE, // PAD_CFG_JUMP
PAD_SQUARE, // PAD_CFG_WEAPONCHANGE
}},
// Config D
{{
@ -437,6 +440,7 @@ CPadConfig::sPadConfigTable CPadConfig::s_padConfigs[NUM_PAD_CONFIGS]=
PAD_LEFT, // PAD_CFG_FIRE
PAD_UP, // PAD_CFG_CATCH
PAD_DOWN, // PAD_CFG_JUMP
PAD_RIGHT, // PAD_CFG_WEAPONCHANGE
}},
};

View File

@ -119,6 +119,7 @@ public:
PAD_CFG_FIRE,
PAD_CFG_CATCH,
PAD_CFG_JUMP,
PAD_CFG_WEAPONCHANGE,
PAD_CFG_MAX
};

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();
};

View File

@ -684,15 +684,6 @@ else if(oldmode!=-1&&!(PadGetHeld(0)&PAD_L1))
oldmode=-1;
}
#ifdef __USER_paul__
if(PadGetHeld(0)&PAD_L1&&PadGetHeld(0)&PAD_L2)
{
if(m_currentMode!=PLAYER_MODE_DEAD)
{
dieYouPorousFreak();
}
}
#endif
if(newmode!=-1)
{
setMode((PLAYER_MODE)newmode);
@ -723,10 +714,26 @@ if(newmode!=-1)
}
}
m_tryingToPickupWeapon=false;
for(i=0;i<_frames;i++)
{
// Think
updatePadInput();
if(getPadInputDown())
{
PAUL_DBGMSG("%02x",getPadInputDown());
}
if(getPadInputDown()&PI_WEAPONCHANGE)
{
if(!m_tryingToPickupWeapon&&
m_currentMode!=PLAYER_MODE_BASICUNARMED&&
m_currentMode!=PLAYER_MODE_FULLUNARMED&&
m_currentMode!=PLAYER_MODE_DEAD)
{
setMode(PLAYER_MODE_FULLUNARMED);
}
m_tryingToPickupWeapon=true;
}
// Trying to converate?
if(m_allowConversation==false&&
@ -1959,6 +1966,10 @@ PLAYERINPUT CPlayer::readPadInput()
{
input=(PLAYERINPUT)(input|PI_CATCH);
}
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_WEAPONCHANGE))
{
input=(PLAYERINPUT)(input|PI_WEAPONCHANGE);
}
#ifdef _RECORD_DEMO_MODE_

View File

@ -156,6 +156,7 @@ typedef enum
PI_JUMP =1<<4,
PI_FIRE =1<<5,
PI_CATCH =1<<6,
PI_WEAPONCHANGE =1<<7,
}PLAYERINPUT;
@ -258,6 +259,7 @@ public:
void setPlayerPos(DVECTOR *_pos) {Pos=*_pos;}
PLAYERINPUT getPadInputHeld() {return m_padInput;}
PLAYERINPUT getPadInputDown() {return m_padInputDown;}
int tryingToPickupWeapon() {return m_tryingToPickupWeapon;}
class CLayerCollision *getLayerCollision() {return m_layerCollision;}
void inSoakUpState();
@ -336,6 +338,7 @@ private:
PLAYERINPUT m_padInput; // Controls that are being held down
PLAYERINPUT m_lastPadInput; // Last frames controls
PLAYERINPUT m_padInputDown; // Controls that were pressed this frame
int m_tryingToPickupWeapon;
// Various info about the current map