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--;
|
||||
}
|
||||
|
||||
// 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..
|
||||
if(Pos.vx<m_playerPosLimitBox.x1) Pos.vx=m_playerPosLimitBox.x1;
|
||||
else if(Pos.vx>m_playerPosLimitBox.x2) Pos.vx=m_playerPosLimitBox.x2;
|
||||
|
@ -845,12 +881,6 @@ if(newmode!=-1)
|
|||
m_lastLedgeLookAhead=m_ledgeLookAhead;
|
||||
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
|
||||
calcCameraFocusPointTarget();
|
||||
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);
|
||||
itemX+=COLLECTEDITEM_GAP;
|
||||
}
|
||||
/*
|
||||
if(isWearingDivingHelmet())
|
||||
{
|
||||
sFrameHdr *fh=m_spriteBank->getFrameHeader(FRM__HELMET);
|
||||
m_spriteBank->printFT4(fh,itemX-(fh->W/2),COLLECTEDITEM_BASEY-(fh->H/2),0,0,0);
|
||||
itemX+=COLLECTEDITEM_GAP;
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
|
@ -1290,7 +1321,6 @@ void CPlayer::teleportTo(int _x,int _y)
|
|||
setPos(pos);
|
||||
setRespawnPos(pos);
|
||||
|
||||
m_leftRightScrollPosition=0;
|
||||
calcCameraFocusPointTarget();
|
||||
m_currentCamFocusPoint=m_currentCamFocusPointTarget;
|
||||
}
|
||||
|
@ -1367,7 +1397,7 @@ void CPlayer::playAnimFrameSfx(int _animNo,int _animFrame)
|
|||
---------------------------------------------------------------------- */
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1400,7 +1430,8 @@ void CPlayer::respawn()
|
|||
m_cameraLookOffset=0;
|
||||
|
||||
m_lockCamera=false;
|
||||
m_leftRightScrollPosition=0;
|
||||
m_cameraXScrollDir=0;
|
||||
m_cameraXScrollPos=0;
|
||||
calcCameraFocusPointTarget();
|
||||
m_currentCamFocusPoint=m_currentCamFocusPointTarget;
|
||||
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)
|
||||
{
|
||||
m_platform=_newPlatform;
|
||||
|
|
|
@ -188,6 +188,8 @@ public:
|
|||
virtual void think(int _frames);
|
||||
virtual void render();
|
||||
virtual void shove(DVECTOR move);
|
||||
void moveLeft(); // This is only for camera scroll right now..
|
||||
void moveRight(); // " " " " "
|
||||
virtual int moveVertical(int _moveDistance);
|
||||
virtual int moveHorizontal(int _moveDistance);
|
||||
virtual void setHasPlatformCollided( bool newVal );
|
||||
|
@ -288,7 +290,6 @@ private:
|
|||
int m_ledgeLookAhead,m_lastLedgeLookAhead;
|
||||
int m_ledgeLookOffset;
|
||||
int m_ledgeLookTimer;
|
||||
int m_leftRightScrollPosition;
|
||||
|
||||
|
||||
enum
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeBubbleMixture::enter()
|
||||
{
|
||||
CPlayerModeBase::enter();
|
||||
CSoundMediator::playSfx(CSoundMediator::SFX_BUBBLE_WAND);
|
||||
m_blowing=false;
|
||||
m_bubbleDelay=0;
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeChop::enter()
|
||||
{
|
||||
CPlayerModeBase::enter();
|
||||
m_chopping=false;
|
||||
}
|
||||
|
||||
|
|
|
@ -150,6 +150,7 @@ static PlayerMetrics s_playerMetrics=
|
|||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeCoralBlower::enter()
|
||||
{
|
||||
CPlayerModeBase::enter();
|
||||
m_blowerState=BLOWER_STATE__EMPTY;
|
||||
CSoundMediator::playSfx(CSoundMediator::SFX_ITEM__CORAL_BLOWER);
|
||||
}
|
||||
|
|
|
@ -73,6 +73,7 @@
|
|||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeJellyLauncher::enter()
|
||||
{
|
||||
CPlayerModeBase::enter();
|
||||
m_firingState=FIRING_STATE__NONE;
|
||||
m_player->giveJellyAmmo();
|
||||
}
|
||||
|
|
|
@ -86,6 +86,7 @@ int npsize=40;
|
|||
---------------------------------------------------------------------- */
|
||||
void CPlayerModeNet::enter()
|
||||
{
|
||||
CPlayerModeBase::enter();
|
||||
m_netState=NET_STATE__INERT;
|
||||
m_jellyfishHeld=0;
|
||||
}
|
||||
|
|
|
@ -537,6 +537,7 @@ void CPlayerModeBase::moveLeft()
|
|||
moveVel.vx-=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
|
||||
}
|
||||
setMoveVelocity(&moveVel);
|
||||
m_player->moveLeft();
|
||||
}
|
||||
|
||||
void CPlayerModeBase::moveRight()
|
||||
|
@ -560,6 +561,7 @@ void CPlayerModeBase::moveRight()
|
|||
moveVel.vx+=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
|
||||
}
|
||||
setMoveVelocity(&moveVel);
|
||||
m_player->moveRight();
|
||||
}
|
||||
int CPlayerModeBase::slowdown()
|
||||
{
|
||||
|
|
|
@ -117,10 +117,10 @@ void CPlayerStateJump::think(CPlayerModeBase *_playerMode)
|
|||
_playerMode->slowdown();
|
||||
}
|
||||
|
||||
if(controlDown&PI_DOWN)
|
||||
{
|
||||
_playerMode->setState(STATE_BUTTBOUNCE);
|
||||
}
|
||||
// if(controlDown&PI_DOWN)
|
||||
// {
|
||||
// _playerMode->setState(STATE_BUTTBOUNCE);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue