This commit is contained in:
Paul 2001-02-14 20:28:57 +00:00
parent f7a92200db
commit 795b2d2496
2 changed files with 32 additions and 115 deletions

View file

@ -142,10 +142,7 @@ FontBank s_debugFont;
int s_health;
int s_screenPos;
int m_cameraScrollPosX=0;
int m_cameraScrollPosY=600;
int m_cameraScrollDir=0;
DVECTOR m_cameraScrollPos={0,600};
int MAP3D_CENTRE_X=170;
int MAP3D_CENTRE_Y=500;
@ -164,9 +161,6 @@ int CAMERA_SCROLLSPEED=60; // Speed of the scroll ( 60=1 tile scrolled every
int angg=900;
DVECTOR ppos;
DVECTOR ofs;
DVECTOR m_cameraPos;
/*----------------------------------------------------------------------
@ -187,13 +181,9 @@ void CPlayer::init()
m_skel.setAnimDatabase(CAnimDB::GetPlayerAnimBank());
//!!#ifdef __USER_paul__
m_respawnPos.vx=23*16;
m_respawnPos.vy=10*16;
//!!#else
//!! m_respawnPos.vx=10;
//!! m_respawnPos.vy=10;
//!!#endif
// Temporary default respawn pos... should realy be set with setRespawnPos() from the level (pkg)
m_respawnPos.vx=23*16;
m_respawnPos.vy=10*16;
m_animNo=0;
@ -210,6 +200,7 @@ m_animFrame=0;
m_cameraOffset.vx=0;
m_cameraOffset.vy=0;
m_cameraScrollDir=0;
m_lastPadInput=m_padInput=PI_NONE;
@ -245,7 +236,7 @@ void CPlayer::shutdown()
Returns:
---------------------------------------------------------------------- */
int newmode=-1;
DVECTOR pos;
//DVECTOR pos;
void CPlayer::think(int _frames)
{
int i;
@ -263,24 +254,6 @@ if(newmode!=-1)
setMode((PLAYER_MODE)newmode);
newmode=-1;
}
/*!!
#ifndef __USER_paul__
int padInput=PadGetHeld(0);
int move=7*_frames;
if(padInput&PAD_UP) Pos.vy-=move;
if(padInput&PAD_DOWN) Pos.vy+=move;
if(padInput&PAD_LEFT) Pos.vx-=move;
if(padInput&PAD_RIGHT) Pos.vx+=move;
m_invincibleFrameCount=0;
if ( padInput & CPadConfig::getButton(CPadConfig::PAD_CFG_UP) ) // not sure where you want to put this, Paul (Charles)
{
GameScene.sendEvent( USER_REQUEST_TALK_EVENT, this );
}
#else
*/
#if 1
if(_frames>=3)_frames=2;
for(i=0;i<_frames;i++)
{
@ -407,98 +380,37 @@ if(PadGetDown(0)&PAD_CIRCLE)
// Camera scroll..
if(m_cameraScrollDir==-1)
{
if(m_cameraScrollPosX>-CAMERA_SCROLLLIMIT<<8)
if(m_cameraScrollPos.vx>-CAMERA_SCROLLLIMIT<<8)
{
m_cameraScrollPosX-=CAMERA_SCROLLSPEED;
if(m_cameraScrollPosX<-CAMERA_SCROLLLIMIT<<8)
m_cameraScrollPos.vx-=CAMERA_SCROLLSPEED;
if(m_cameraScrollPos.vx<-CAMERA_SCROLLLIMIT<<8)
{
m_cameraScrollPosX=-CAMERA_SCROLLLIMIT<<8;
m_cameraScrollPos.vx=-CAMERA_SCROLLLIMIT<<8;
m_cameraScrollDir=0;
}
}
}
else if(m_cameraScrollDir==+1)
{
if(m_cameraScrollPosX<(CAMERA_SCROLLLIMIT<<8))
if(m_cameraScrollPos.vx<(CAMERA_SCROLLLIMIT<<8))
{
m_cameraScrollPosX+=CAMERA_SCROLLSPEED;
if(m_cameraScrollPosX>CAMERA_SCROLLLIMIT<<8)
m_cameraScrollPos.vx+=CAMERA_SCROLLSPEED;
if(m_cameraScrollPos.vx>CAMERA_SCROLLLIMIT<<8)
{
m_cameraScrollPosX=CAMERA_SCROLLLIMIT<<8;
m_cameraScrollPos.vx=CAMERA_SCROLLLIMIT<<8;
m_cameraScrollDir=0;
}
}
}
/*
if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_UP))
{
if(m_cameraLookTimer<=-LOOKAROUND_DELAY)
{
m_cameraLookYOffset-=LOOKAROUND_SCROLLSPEED;
if(m_cameraLookYOffset<-LOOKAROUND_MAXSCROLL)
{
m_cameraLookYOffset=-LOOKAROUND_MAXSCROLL;
}
}
else
{
m_cameraLookTimer--;
}
}
else if(pad&CPadConfig::getButton(CPadConfig::PAD_CFG_DOWN))
{
if(m_cameraLookTimer>=LOOKAROUND_DELAY)
{
m_cameraLookYOffset+=LOOKAROUND_SCROLLSPEED;
if(m_cameraLookYOffset>LOOKAROUND_MAXSCROLL)
{
m_cameraLookYOffset=LOOKAROUND_MAXSCROLL;
}
}
else
{
m_cameraLookTimer++;
}
}
else
{
m_cameraLookTimer=0;
if(m_cameraLookYOffset<0)
{
m_cameraLookYOffset+=LOOKAROUND_RESETSPEED;
if(m_cameraLookYOffset>0)
{
m_cameraLookYOffset=0;
}
}
else if(m_cameraLookYOffset>0)
{
m_cameraLookYOffset-=LOOKAROUND_RESETSPEED;
if(m_cameraLookYOffset<0)
{
m_cameraLookYOffset=0;
}
}
}
*/
}
#endif
// Move the camera offset
ppos.vx=MAP3D_CENTRE_X+((MAP3D_BLOCKSTEPSIZE*m_cameraScrollPosX)>>8);
ppos.vy=MAP3D_CENTRE_Y+((MAP3D_BLOCKSTEPSIZE*m_cameraScrollPosY)>>8);;
m_cameraOffset.vx=MAP2D_CENTRE_X+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPosX))>>8);
m_cameraOffset.vy=MAP2D_CENTRE_Y+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPosY))>>8);;
ofs=m_cameraOffset;
pos=Pos;
m_playerScreenPos.vx=MAP3D_CENTRE_X+((MAP3D_BLOCKSTEPSIZE*m_cameraScrollPos.vx)>>8);
m_playerScreenPos.vy=MAP3D_CENTRE_Y+((MAP3D_BLOCKSTEPSIZE*m_cameraScrollPos.vy)>>8);;
m_cameraOffset.vx=MAP2D_CENTRE_X+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos.vx))>>8);
m_cameraOffset.vy=MAP2D_CENTRE_Y+((MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos.vy))>>8);;
m_cameraPos.vx=Pos.vx+m_cameraOffset.vx;
m_cameraPos.vy=Pos.vy+m_cameraOffset.vy;
@ -507,25 +419,25 @@ pos=Pos;
// Limit camera scroll to the edges of the map
if(m_cameraPos.vx<0)
{
ppos.vx+=m_cameraPos.vx*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_playerScreenPos.vx+=m_cameraPos.vx*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_cameraPos.vx=0;
m_cameraScrollDir=0;
}
else if(m_cameraPos.vx>m_mapCameraEdges.vx)
{
ppos.vx-=(m_mapCameraEdges.vx-m_cameraPos.vx)*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_playerScreenPos.vx-=(m_mapCameraEdges.vx-m_cameraPos.vx)*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_cameraPos.vx=m_mapCameraEdges.vx;
m_cameraScrollDir=0;
}
if(m_cameraPos.vy<0)
{
ppos.vy+=m_cameraPos.vy*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_playerScreenPos.vy+=m_cameraPos.vy*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_cameraPos.vy=0;
m_cameraScrollDir=0;
}
else if(m_cameraPos.vy>m_mapCameraEdges.vy)
{
ppos.vy-=(m_mapCameraEdges.vy-m_cameraPos.vy)*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_playerScreenPos.vy-=(m_mapCameraEdges.vy-m_cameraPos.vy)*MAP3D_BLOCKSTEPSIZE/MAP2D_BLOCKSTEPSIZE;
m_cameraPos.vy=m_mapCameraEdges.vy;
m_cameraScrollDir=0;
}
@ -562,11 +474,11 @@ if(eyes!=-1)
}
#endif
//int xval=(255-(MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPosX>>8)));
//int xval=(255-(MAP2D_BLOCKSTEPSIZE*(-m_cameraScrollPos.vx>>8)));
//DrawLine(xval-7,0,xval-7,255,0,128,255,0);
//DrawLine(xval+7,0,xval+7,255,0,128,255,0);
m_skel.setPos(ppos);
m_skel.setPos(m_playerScreenPos);
if(panim!=-1)
m_skel.setAnimNo(panim);
else
@ -885,7 +797,7 @@ void CPlayer::moveLeft()
m_moveVel.vx-=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
}
if(m_moveVel.vx<-CAMERA_STARTMOVETHRESHOLD||m_cameraScrollPosX<-CAMERA_SCROLLTHRESHOLD<<8)
if(m_moveVel.vx<-CAMERA_STARTMOVETHRESHOLD||m_cameraScrollPos.vx<-CAMERA_SCROLLTHRESHOLD<<8)
{
m_cameraScrollDir=+1;
}
@ -913,7 +825,7 @@ void CPlayer::moveRight()
m_moveVel.vx+=metrics->m_metric[PM__RUN_REVERSESLOWDOWN];
}
if(m_moveVel.vx>CAMERA_STARTMOVETHRESHOLD||m_cameraScrollPosX>CAMERA_SCROLLTHRESHOLD<<8)
if(m_moveVel.vx>CAMERA_STARTMOVETHRESHOLD||m_cameraScrollPos.vx>CAMERA_SCROLLTHRESHOLD<<8)
{
m_cameraScrollDir=-1;
}

View file

@ -151,6 +151,7 @@ public:
void setLayerCollision(class CLayerCollision *_layer) {m_layerCollision=_layer;}
void setMapSize(DVECTOR _mapSize);
void setRespawnPos(DVECTOR _respawn) {m_respawnPos=_respawn;}
protected:
enum
@ -231,6 +232,10 @@ private:
int m_animNo;
CSkelSpongeBob m_skel;
DVECTOR m_playerScreenPos;
DVECTOR m_cameraPos;
int m_cameraScrollDir;
DVECTOR m_moveVel;
int m_facing;
int m_fallFrames;