This commit is contained in:
parent
9e165f3895
commit
b019994145
10 changed files with 72 additions and 210 deletions
|
@ -167,8 +167,7 @@ player_src := demoplay \
|
|||
psrun \
|
||||
pstates \
|
||||
modelist \
|
||||
pmballoon \
|
||||
pmboots
|
||||
pmballoon
|
||||
|
||||
script_src := script \
|
||||
function
|
||||
|
|
|
@ -107,18 +107,14 @@ void CPauseMenu::init()
|
|||
&newmode,PLAYER_MODE_FULLUNARMED);
|
||||
CGUIFactory::createValueButtonFrame(m_guiFrame,
|
||||
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,TEXT_SPACING*7,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
|
||||
STR__DEBUG__SQUEAKYBOOTS_MODE,
|
||||
&newmode,PLAYER_MODE_SQUEAKYBOOTS);
|
||||
CGUIFactory::createValueButtonFrame(m_guiFrame,
|
||||
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,TEXT_SPACING*8,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
|
||||
STR__DEBUG__NET_MODE,
|
||||
&newmode,PLAYER_MODE_NET);
|
||||
CGUIFactory::createValueButtonFrame(m_guiFrame,
|
||||
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,TEXT_SPACING*9,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
|
||||
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,TEXT_SPACING*8,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
|
||||
STR__DEBUG__BALLOON_MODE,
|
||||
&newmode,PLAYER_MODE_BALLOON);
|
||||
CGUIFactory::createValueButtonFrame(m_guiFrame,
|
||||
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,TEXT_SPACING*10,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
|
||||
(FRAME_WIDTH-TEXT_BOX_WIDTH)/2,TEXT_SPACING*9,TEXT_BOX_WIDTH,TEXT_BOX_HEIGHT,
|
||||
STR__DEBUG__CORALBLOWER_MODE,
|
||||
&newmode,PLAYER_MODE_CORALBLOWER);
|
||||
#endif
|
||||
|
|
|
@ -21,6 +21,10 @@
|
|||
|
||||
#include "pickups\pglasses.h"
|
||||
|
||||
#ifndef __PLAYER_PLAYER_H__
|
||||
#include "player\player.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -70,6 +74,7 @@ void CGlassesPickup::init()
|
|||
---------------------------------------------------------------------- */
|
||||
void CGlassesPickup::collect(class CPlayer *_player)
|
||||
{
|
||||
_player->giveGlasses();
|
||||
CBasePickup::collect(_player);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ void CShoesPickup::init()
|
|||
---------------------------------------------------------------------- */
|
||||
void CShoesPickup::collect(class CPlayer *_player)
|
||||
{
|
||||
_player->setMode(PLAYER_MODE_SQUEAKYBOOTS);
|
||||
_player->giveSqueakyBoots();
|
||||
CBaseRespawningPickup::collect(_player);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,10 +22,6 @@
|
|||
#include "player/pmodes.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PMBOOTS_H__
|
||||
#include "player/pmboots.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PMBALLOON_H__
|
||||
#include "player/pmballoon.h"
|
||||
#endif
|
||||
|
@ -95,7 +91,6 @@
|
|||
---- */
|
||||
|
||||
CPlayerMode modeEmpty;
|
||||
CPlayerModeBoots modeBoots;
|
||||
CPlayerModeBalloon modeBalloon;
|
||||
|
||||
CPlayerStateUnarmedIdle stateUnarmedIdle;
|
||||
|
@ -198,41 +193,6 @@ CPlayer::PlayerMode CPlayer::s_modes[NUM_PLAYERMODES]=
|
|||
}
|
||||
},
|
||||
|
||||
//
|
||||
// PLAYER_MODE_SQUEAKYBOOTS
|
||||
// Squeaky boots. Also has butt bounce and karate chop
|
||||
//
|
||||
{
|
||||
{ {
|
||||
DEFAULT_PLAYER_JUMP_VELOCITY, // PM__JUMP_VELOCITY
|
||||
DEFAULT_PLAYER_MAX_JUMP_FRAMES, // PM__MAX_JUMP_FRAMES
|
||||
DEFAULT_PLAYER_MAX_SAFE_FALL_FRAMES, // PM__MAX_SAFE_FALL_FRAMES
|
||||
DEFAULT_PLAYER_MAX_RUN_VELOCITY, // PM__MAX_RUN_VELOCITY
|
||||
DEFAULT_PLAYER_RUN_SPEEDUP, // PM__RUN_SPEEDUP
|
||||
DEFAULT_PLAYER_RUN_REVERSESLOWDOWN, // PM__RUN_REVERSESLOWDOWN
|
||||
DEFAULT_PLAYER_RUN_SLOWDOWN, // PM__RUN_SLOWDOWN
|
||||
} },
|
||||
&modeBoots,
|
||||
{
|
||||
&stateUnarmedIdle, // STATE_IDLE
|
||||
&stateTeeterIdle, // STATE_IDLETEETER
|
||||
&stateJump, // STATE_JUMP
|
||||
&stateRun, // STATE_RUN
|
||||
&stateFall, // STATE_FALL
|
||||
&stateFallFar, // STATE_FALLFAR
|
||||
&stateButtBounce, // STATE_BUTTBOUNCE
|
||||
&stateButtBounceFall, // STATE_BUTTFALL
|
||||
&stateButtBounceLand, // STATE_BUTTLAND
|
||||
&stateChop, // STATE_ATTACK
|
||||
&stateRunChop, // STATE_RUNATTACK
|
||||
&stateAirChop, // STATE_AIRATTACK
|
||||
&stateDuck, // STATE_DUCK
|
||||
&stateSoackUp, // STATE_SOAKUP
|
||||
&stateGetup, // STATE_GETUP
|
||||
&stateDead, // STATE_DEAD
|
||||
}
|
||||
},
|
||||
|
||||
//
|
||||
// PLAYER_MODE_BALLOON
|
||||
// Holding a balloon
|
||||
|
|
|
@ -71,6 +71,23 @@
|
|||
// Two dice. One says 'Re' on every face, the other says 'boot',
|
||||
// 'install', 'try', 'tire', 'sume' and 'number'
|
||||
|
||||
/*
|
||||
WEAPON MODES
|
||||
unamred constant
|
||||
karate-chop constant
|
||||
balloon timed ( respawn )
|
||||
bubble mixture (un)limited supply ( respawn )
|
||||
helmet constant ( respawn )
|
||||
coral blower constant ( respawn )
|
||||
net constant
|
||||
jelly launcher limited supply ( respawn )
|
||||
|
||||
POWER-UPS
|
||||
glasses constant
|
||||
squeaky boots timed ( respawn )
|
||||
mm & bb ring timed
|
||||
*/
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
------------------- */
|
||||
|
@ -134,7 +151,6 @@ static const char *s_modeText[NUM_PLAYERMODES]=
|
|||
{
|
||||
"BASICUNARMED",
|
||||
"FULLUNARMED",
|
||||
"SQUEAKYBOOTS",
|
||||
"BALLOON",
|
||||
"NET",
|
||||
"CORALBLOWER",
|
||||
|
@ -163,7 +179,6 @@ int CAMERA_STOPMOVETHRESHOLD=10; // If SB moves slower than this then the camer
|
|||
int CAMERA_SCROLLSPEED=60; // Speed of the scroll ( 60=1 tile scrolled every 4 and a bit frames )
|
||||
|
||||
|
||||
int angg=900;
|
||||
|
||||
|
||||
|
||||
|
@ -216,6 +231,8 @@ m_skel.setAng(512);
|
|||
|
||||
setCollisionSize(25,50);
|
||||
setCollisionCentreOffset(0,-25);
|
||||
|
||||
m_skel.setAng(900);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
|
@ -248,7 +265,6 @@ void CPlayer::think(int _frames)
|
|||
|
||||
CPlayerThing::think(_frames);
|
||||
|
||||
m_skel.setAng(angg);
|
||||
|
||||
if(PadGetHeld(0)&PAD_L1&&PadGetHeld(0)&PAD_L2)
|
||||
{
|
||||
|
@ -268,6 +284,23 @@ if(newmode!=-1)
|
|||
thinkVerticalMovement();
|
||||
thinkHorizontalMovement();
|
||||
|
||||
// Powerups
|
||||
if(m_squeakyBootsTimer)
|
||||
{
|
||||
m_squeakyBootsTimer--;
|
||||
}
|
||||
if(m_invinvibilityRingTimer)
|
||||
{
|
||||
m_invinvibilityRingTimer--;
|
||||
}
|
||||
|
||||
// Flashing..
|
||||
if(m_invincibleFrameCount)
|
||||
{
|
||||
m_invincibleFrameCount--;
|
||||
}
|
||||
|
||||
|
||||
#ifdef _STATE_DEBUG_
|
||||
sprintf(posBuf,"%03d (%02d) ,%03d (%02d) = dfg:%+02d",Pos.vx,Pos.vx&0x0f,Pos.vy,Pos.vy&0x0f,m_layerCollision->getHeightFromGround(Pos.vx,Pos.vy));
|
||||
#endif
|
||||
|
@ -278,12 +311,6 @@ else if(Pos.vx>m_mapEdge.vx-64)Pos.vx=m_mapEdge.vx-64;
|
|||
if(Pos.vy<64)Pos.vy=64;
|
||||
else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||
|
||||
// Flashing..
|
||||
if(m_invincibleFrameCount)
|
||||
{
|
||||
m_invincibleFrameCount--;
|
||||
}
|
||||
|
||||
// Teeter if on an edge
|
||||
if(m_currentState==STATE_IDLE&&isOnEdge())
|
||||
{
|
||||
|
@ -815,13 +842,14 @@ void CPlayer::setAnimFrame(int _animFrame)
|
|||
if(m_animFrame==frameSfx->m_frame)
|
||||
{
|
||||
CSoundMediator::SFXID sfxId=frameSfx->m_sfxId;
|
||||
if(m_currentMode==PLAYER_MODE_SQUEAKYBOOTS)
|
||||
if(m_squeakyBootsTimer)
|
||||
{
|
||||
// Ugh.. horrible way to change the sfx when wearing squeaky boots (pkg)
|
||||
if(sfxId==CSoundMediator::SFX_SPONGEBOB_WALK_1)sfxId=CSoundMediator::SFX_SPONGEBOB_SQUEAKY_SHOES_1;
|
||||
else if(sfxId==CSoundMediator::SFX_SPONGEBOB_WALK_2)sfxId=CSoundMediator::SFX_SPONGEBOB_SQUEAKY_SHOES_2;
|
||||
}
|
||||
CSoundMediator::playSfx(sfxId);
|
||||
break;
|
||||
}
|
||||
if(m_animFrame<frameSfx->m_frame)
|
||||
{
|
||||
|
@ -1122,8 +1150,8 @@ int invincibleSponge=false; // NB: This is for debugging purposes only so don't
|
|||
#endif
|
||||
void CPlayer::takeDamage(DAMAGE_TYPE _damage)
|
||||
{
|
||||
// Don't take damage if still recovering from the last hit
|
||||
if(!m_invincibleFrameCount)
|
||||
if(!m_invincibleFrameCount|| // Don't take damage if still recovering from the last hit
|
||||
m_invinvibilityRingTimer) // Or if we have the invincibility ring on
|
||||
{
|
||||
int ouchThatHurt=true;
|
||||
|
||||
|
@ -1136,7 +1164,7 @@ void CPlayer::takeDamage(DAMAGE_TYPE _damage)
|
|||
break;
|
||||
|
||||
case DAMAGE__ELECTROCUTION:
|
||||
if(m_currentMode==PLAYER_MODE_SQUEAKYBOOTS)
|
||||
if(m_squeakyBootsTimer)
|
||||
{
|
||||
ouchThatHurt=false;
|
||||
}
|
||||
|
|
|
@ -54,10 +54,13 @@ typedef enum
|
|||
{
|
||||
PLAYER_MODE_BASICUNARMED,
|
||||
PLAYER_MODE_FULLUNARMED,
|
||||
PLAYER_MODE_SQUEAKYBOOTS,
|
||||
PLAYER_MODE_BALLOON,
|
||||
//PLAYER_MODE_BUBBLE_MIXTURE,
|
||||
//PLAYER_MODE_HELMET,
|
||||
PLAYER_MODE_NET,
|
||||
PLAYER_MODE_CORALBLOWER,
|
||||
//PLAYER_MODE_JELLY_LAUNCHER,
|
||||
|
||||
PLAYER_MODE_FLY,
|
||||
|
||||
NUM_PLAYERMODES,
|
||||
|
@ -266,7 +269,7 @@ private:
|
|||
LOOKAROUND_MAXSCROLL=60, // Maximum distance to scroll
|
||||
LOOKAROUND_RESETSPEED=6, // Speed of scroll back when look around ended
|
||||
};
|
||||
int m_invincibleFrameCount;
|
||||
int m_invincibleFrameCount; // Initial invincibility and also invincibility after taking damage
|
||||
|
||||
void thinkVerticalMovement();
|
||||
void thinkHorizontalMovement();
|
||||
|
@ -295,6 +298,23 @@ private:
|
|||
DVECTOR m_mapEdge;
|
||||
DVECTOR m_respawnPos;
|
||||
|
||||
|
||||
|
||||
// Powerups
|
||||
private:
|
||||
enum
|
||||
{
|
||||
SQUEAKY_BOOTS_TIME=60*10,
|
||||
INVINCIBILITY_RING_TIME=60*10,
|
||||
};
|
||||
public:
|
||||
void giveGlasses() {m_glassesFlag=true;}
|
||||
void giveSqueakyBoots() {m_squeakyBootsTimer=SQUEAKY_BOOTS_TIME;}
|
||||
void giveInvinvibilityRing() {m_invinvibilityRingTimer=INVINCIBILITY_RING_TIME;}
|
||||
private:
|
||||
int m_glassesFlag;
|
||||
int m_squeakyBootsTimer;
|
||||
int m_invinvibilityRingTimer;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,74 +0,0 @@
|
|||
/*=========================================================================
|
||||
|
||||
pmboots.cpp
|
||||
|
||||
Author: PKG
|
||||
Created:
|
||||
Project: Spongebob
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 2001 Climax Development Ltd
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
#include "player/pmboots.h"
|
||||
|
||||
#ifndef __PLAYER_PLAYER_H__
|
||||
#include "player/player.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
||||
/* Data
|
||||
---- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function Prototypes
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Vars
|
||||
---- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
int boottime=60*20;
|
||||
void CPlayerModeBoots::enter(class CPlayer *_player)
|
||||
{
|
||||
m_timer=boottime;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Function:
|
||||
Purpose:
|
||||
Params:
|
||||
Returns:
|
||||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeBoots::think(class CPlayer *_player)
|
||||
{
|
||||
if(--m_timer==0)
|
||||
{
|
||||
_player->setMode(PLAYER_MODE_FULLUNARMED);
|
||||
}
|
||||
}
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
|
@ -1,64 +0,0 @@
|
|||
/*=========================================================================
|
||||
|
||||
pmboots.h
|
||||
|
||||
Author: PKG
|
||||
Created:
|
||||
Project: Spongebob
|
||||
Purpose:
|
||||
|
||||
Copyright (c) 2001 Climax Development Ltd
|
||||
|
||||
===========================================================================*/
|
||||
|
||||
#ifndef __PLAYER_PMBOOTS_H__
|
||||
#define __PLAYER_PMBOOTS_H__
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
|
||||
#ifndef __PLAYER_PMODES_H__
|
||||
#include "player/pmodes.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Tyepdefs && Defines
|
||||
------------------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Structure defintions
|
||||
-------------------- */
|
||||
|
||||
class CPlayerModeBoots : public CPlayerMode
|
||||
{
|
||||
public:
|
||||
virtual void enter(class CPlayer *_player);
|
||||
virtual void think(class CPlayer *_player);
|
||||
|
||||
private:
|
||||
int m_timer;
|
||||
};
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Globals
|
||||
------- */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
Functions
|
||||
--------- */
|
||||
|
||||
/*---------------------------------------------------------------------- */
|
||||
|
||||
#endif /* __PLAYER_PMBOOTS_H__ */
|
||||
|
||||
/*===========================================================================
|
||||
end */
|
||||
|
||||
|
||||
|
|
@ -768,14 +768,6 @@ SOURCE=..\..\..\source\player\pmballoon.h
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\pmboots.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\pmboots.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\pmodes.h
|
||||
# End Source File
|
||||
# End Group
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue