This commit is contained in:
parent
72e5da1ff6
commit
1a606c048d
9 changed files with 90 additions and 15 deletions
|
@ -514,6 +514,16 @@ static s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
|
||||||
// -------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
int m_cameraXScrollDir;
|
||||||
|
int m_cameraXScrollPos;
|
||||||
|
int CAMERA_SCROLLLIMIT=8; // SB is this many tiles off centre at most
|
||||||
|
//int CAMERA_SCROLLTHRESHOLD=6; // If SB moves when more than this many tiles off-centre, the camera will *always* scroll
|
||||||
|
int CAMERA_STARTMOVETHRESHOLD=20; // If SB moves faster than this then the camera starts scrolling
|
||||||
|
int CAMERA_STOPMOVETHRESHOLD=10; // If SB moves slower than this then the camera stops scrolling
|
||||||
|
int CAMERA_SCROLLSPEED=1000; // Speed of the scroll
|
||||||
|
int CAMERA_ACCURACYSHIFT=8;
|
||||||
|
const int CAMERA_TILESIZE=16;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
|
@ -712,6 +722,32 @@ if(newmode!=-1)
|
||||||
m_invincibleFrameCount--;
|
m_invincibleFrameCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Camera scroll..
|
||||||
|
if(m_cameraXScrollDir==-1)
|
||||||
|
{
|
||||||
|
if(m_cameraXScrollPos>-(CAMERA_SCROLLLIMIT*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT)
|
||||||
|
{
|
||||||
|
m_cameraXScrollPos-=CAMERA_SCROLLSPEED;
|
||||||
|
if(m_cameraXScrollPos<-(CAMERA_SCROLLLIMIT*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT)
|
||||||
|
{
|
||||||
|
m_cameraXScrollPos=-(CAMERA_SCROLLLIMIT*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT;
|
||||||
|
m_cameraXScrollDir=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(m_cameraXScrollDir==+1)
|
||||||
|
{
|
||||||
|
if(m_cameraXScrollPos<((CAMERA_SCROLLLIMIT*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT))
|
||||||
|
{
|
||||||
|
m_cameraXScrollPos+=CAMERA_SCROLLSPEED;
|
||||||
|
if(m_cameraXScrollPos>(CAMERA_SCROLLLIMIT*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT)
|
||||||
|
{
|
||||||
|
m_cameraXScrollPos=(CAMERA_SCROLLLIMIT*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT;
|
||||||
|
m_cameraXScrollDir=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Stop the player vanishing off the edge of the telly..
|
// Stop the player vanishing off the edge of the telly..
|
||||||
if(Pos.vx<m_playerPosLimitBox.x1) Pos.vx=m_playerPosLimitBox.x1;
|
if(Pos.vx<m_playerPosLimitBox.x1) Pos.vx=m_playerPosLimitBox.x1;
|
||||||
else if(Pos.vx>m_playerPosLimitBox.x2) Pos.vx=m_playerPosLimitBox.x2;
|
else if(Pos.vx>m_playerPosLimitBox.x2) Pos.vx=m_playerPosLimitBox.x2;
|
||||||
|
@ -845,12 +881,6 @@ if(newmode!=-1)
|
||||||
m_lastLedgeLookAhead=m_ledgeLookAhead;
|
m_lastLedgeLookAhead=m_ledgeLookAhead;
|
||||||
m_ledgeLookAhead=0;
|
m_ledgeLookAhead=0;
|
||||||
|
|
||||||
// Left/right scroll as SB moves left/right
|
|
||||||
int max=scmax*scspeed;
|
|
||||||
m_leftRightScrollPosition+=m_moveVelocity.vx;
|
|
||||||
if(m_leftRightScrollPosition<-max)m_leftRightScrollPosition=-max;
|
|
||||||
else if(m_leftRightScrollPosition>max)m_leftRightScrollPosition=max;
|
|
||||||
|
|
||||||
// Camera focus point stuff
|
// Camera focus point stuff
|
||||||
calcCameraFocusPointTarget();
|
calcCameraFocusPointTarget();
|
||||||
for(i=0;i<_frames;i++)
|
for(i=0;i<_frames;i++)
|
||||||
|
@ -1042,13 +1072,14 @@ for(int i=0;i<NUM_LASTPOS;i++)
|
||||||
m_spriteBank->printFT4(fh,x-2,y-2,0,0,0);
|
m_spriteBank->printFT4(fh,x-2,y-2,0,0,0);
|
||||||
itemX+=COLLECTEDITEM_GAP;
|
itemX+=COLLECTEDITEM_GAP;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if(isWearingDivingHelmet())
|
if(isWearingDivingHelmet())
|
||||||
{
|
{
|
||||||
sFrameHdr *fh=m_spriteBank->getFrameHeader(FRM__HELMET);
|
sFrameHdr *fh=m_spriteBank->getFrameHeader(FRM__HELMET);
|
||||||
m_spriteBank->printFT4(fh,itemX-(fh->W/2),COLLECTEDITEM_BASEY-(fh->H/2),0,0,0);
|
m_spriteBank->printFT4(fh,itemX-(fh->W/2),COLLECTEDITEM_BASEY-(fh->H/2),0,0,0);
|
||||||
itemX+=COLLECTEDITEM_GAP;
|
itemX+=COLLECTEDITEM_GAP;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1290,7 +1321,6 @@ void CPlayer::teleportTo(int _x,int _y)
|
||||||
setPos(pos);
|
setPos(pos);
|
||||||
setRespawnPos(pos);
|
setRespawnPos(pos);
|
||||||
|
|
||||||
m_leftRightScrollPosition=0;
|
|
||||||
calcCameraFocusPointTarget();
|
calcCameraFocusPointTarget();
|
||||||
m_currentCamFocusPoint=m_currentCamFocusPointTarget;
|
m_currentCamFocusPoint=m_currentCamFocusPointTarget;
|
||||||
}
|
}
|
||||||
|
@ -1367,7 +1397,7 @@ void CPlayer::playAnimFrameSfx(int _animNo,int _animFrame)
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayer::calcCameraFocusPointTarget()
|
void CPlayer::calcCameraFocusPointTarget()
|
||||||
{
|
{
|
||||||
m_currentCamFocusPointTarget.vx=Pos.vx+MAP2D_CENTRE_X+(m_leftRightScrollPosition/scspeed);
|
m_currentCamFocusPointTarget.vx=Pos.vx+MAP2D_CENTRE_X-(m_cameraXScrollPos>>CAMERA_ACCURACYSHIFT);
|
||||||
m_currentCamFocusPointTarget.vy=Pos.vy+MAP2D_CENTRE_Y;
|
m_currentCamFocusPointTarget.vy=Pos.vy+MAP2D_CENTRE_Y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1400,7 +1430,8 @@ void CPlayer::respawn()
|
||||||
m_cameraLookOffset=0;
|
m_cameraLookOffset=0;
|
||||||
|
|
||||||
m_lockCamera=false;
|
m_lockCamera=false;
|
||||||
m_leftRightScrollPosition=0;
|
m_cameraXScrollDir=0;
|
||||||
|
m_cameraXScrollPos=0;
|
||||||
calcCameraFocusPointTarget();
|
calcCameraFocusPointTarget();
|
||||||
m_currentCamFocusPoint=m_currentCamFocusPointTarget;
|
m_currentCamFocusPoint=m_currentCamFocusPointTarget;
|
||||||
m_cameraPos.vx=m_currentCamFocusPoint.vx;
|
m_cameraPos.vx=m_currentCamFocusPoint.vx;
|
||||||
|
@ -1909,6 +1940,42 @@ void CPlayer::shove( DVECTOR move )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
|
void CPlayer::moveLeft()
|
||||||
|
{
|
||||||
|
if(m_moveVelocity.vx<-CAMERA_STARTMOVETHRESHOLD)//||m_cameraXScrollPos<-(CAMERA_SCROLLTHRESHOLD*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT)
|
||||||
|
{
|
||||||
|
m_cameraXScrollDir=+1;
|
||||||
|
}
|
||||||
|
else if(m_moveVelocity.vx>-CAMERA_STOPMOVETHRESHOLD)
|
||||||
|
{
|
||||||
|
m_cameraXScrollDir=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void CPlayer::moveRight()
|
||||||
|
{
|
||||||
|
if(m_moveVelocity.vx>CAMERA_STARTMOVETHRESHOLD)//||m_cameraXScrollPos>(CAMERA_SCROLLTHRESHOLD*CAMERA_TILESIZE)<<CAMERA_ACCURACYSHIFT)
|
||||||
|
{
|
||||||
|
m_cameraXScrollDir=-1;
|
||||||
|
}
|
||||||
|
else if(m_moveVelocity.vx<CAMERA_STOPMOVETHRESHOLD)
|
||||||
|
{
|
||||||
|
m_cameraXScrollDir=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------
|
||||||
|
Function:
|
||||||
|
Purpose:
|
||||||
|
Params:
|
||||||
|
Returns:
|
||||||
|
---------------------------------------------------------------------- */
|
||||||
void CPlayer::setPlatform(CThing *_newPlatform)
|
void CPlayer::setPlatform(CThing *_newPlatform)
|
||||||
{
|
{
|
||||||
m_platform=_newPlatform;
|
m_platform=_newPlatform;
|
||||||
|
|
|
@ -188,6 +188,8 @@ public:
|
||||||
virtual void think(int _frames);
|
virtual void think(int _frames);
|
||||||
virtual void render();
|
virtual void render();
|
||||||
virtual void shove(DVECTOR move);
|
virtual void shove(DVECTOR move);
|
||||||
|
void moveLeft(); // This is only for camera scroll right now..
|
||||||
|
void moveRight(); // " " " " "
|
||||||
virtual int moveVertical(int _moveDistance);
|
virtual int moveVertical(int _moveDistance);
|
||||||
virtual int moveHorizontal(int _moveDistance);
|
virtual int moveHorizontal(int _moveDistance);
|
||||||
virtual void setHasPlatformCollided( bool newVal );
|
virtual void setHasPlatformCollided( bool newVal );
|
||||||
|
@ -288,7 +290,6 @@ private:
|
||||||
int m_ledgeLookAhead,m_lastLedgeLookAhead;
|
int m_ledgeLookAhead,m_lastLedgeLookAhead;
|
||||||
int m_ledgeLookOffset;
|
int m_ledgeLookOffset;
|
||||||
int m_ledgeLookTimer;
|
int m_ledgeLookTimer;
|
||||||
int m_leftRightScrollPosition;
|
|
||||||
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayerModeBubbleMixture::enter()
|
void CPlayerModeBubbleMixture::enter()
|
||||||
{
|
{
|
||||||
|
CPlayerModeBase::enter();
|
||||||
CSoundMediator::playSfx(CSoundMediator::SFX_BUBBLE_WAND);
|
CSoundMediator::playSfx(CSoundMediator::SFX_BUBBLE_WAND);
|
||||||
m_blowing=false;
|
m_blowing=false;
|
||||||
m_bubbleDelay=0;
|
m_bubbleDelay=0;
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayerModeChop::enter()
|
void CPlayerModeChop::enter()
|
||||||
{
|
{
|
||||||
|
CPlayerModeBase::enter();
|
||||||
m_chopping=false;
|
m_chopping=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,7 @@ static PlayerMetrics s_playerMetrics=
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayerModeCoralBlower::enter()
|
void CPlayerModeCoralBlower::enter()
|
||||||
{
|
{
|
||||||
|
CPlayerModeBase::enter();
|
||||||
m_blowerState=BLOWER_STATE__EMPTY;
|
m_blowerState=BLOWER_STATE__EMPTY;
|
||||||
CSoundMediator::playSfx(CSoundMediator::SFX_ITEM__CORAL_BLOWER);
|
CSoundMediator::playSfx(CSoundMediator::SFX_ITEM__CORAL_BLOWER);
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,7 @@
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayerModeJellyLauncher::enter()
|
void CPlayerModeJellyLauncher::enter()
|
||||||
{
|
{
|
||||||
|
CPlayerModeBase::enter();
|
||||||
m_firingState=FIRING_STATE__NONE;
|
m_firingState=FIRING_STATE__NONE;
|
||||||
m_player->giveJellyAmmo();
|
m_player->giveJellyAmmo();
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,6 +86,7 @@ int npsize=40;
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CPlayerModeNet::enter()
|
void CPlayerModeNet::enter()
|
||||||
{
|
{
|
||||||
|
CPlayerModeBase::enter();
|
||||||
m_netState=NET_STATE__INERT;
|
m_netState=NET_STATE__INERT;
|
||||||
m_jellyfishHeld=0;
|
m_jellyfishHeld=0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -537,6 +537,7 @@ void CPlayerModeBase::moveLeft()
|
||||||
moveVel.vx-=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
|
moveVel.vx-=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
|
||||||
}
|
}
|
||||||
setMoveVelocity(&moveVel);
|
setMoveVelocity(&moveVel);
|
||||||
|
m_player->moveLeft();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPlayerModeBase::moveRight()
|
void CPlayerModeBase::moveRight()
|
||||||
|
@ -560,6 +561,7 @@ void CPlayerModeBase::moveRight()
|
||||||
moveVel.vx+=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
|
moveVel.vx+=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
|
||||||
}
|
}
|
||||||
setMoveVelocity(&moveVel);
|
setMoveVelocity(&moveVel);
|
||||||
|
m_player->moveRight();
|
||||||
}
|
}
|
||||||
int CPlayerModeBase::slowdown()
|
int CPlayerModeBase::slowdown()
|
||||||
{
|
{
|
||||||
|
|
|
@ -117,10 +117,10 @@ void CPlayerStateJump::think(CPlayerModeBase *_playerMode)
|
||||||
_playerMode->slowdown();
|
_playerMode->slowdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(controlDown&PI_DOWN)
|
// if(controlDown&PI_DOWN)
|
||||||
{
|
// {
|
||||||
_playerMode->setState(STATE_BUTTBOUNCE);
|
// _playerMode->setState(STATE_BUTTBOUNCE);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue