This commit is contained in:
parent
2145a8d6c7
commit
a45d720982
3 changed files with 58 additions and 24 deletions
|
@ -179,8 +179,8 @@ static const char *s_modeText[NUM_PLAYERMODES]=
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int s_screenPos;
|
int s_screenPos;
|
||||||
int m_cameraLookOffset=0;
|
int m_cameraLookOffset;
|
||||||
|
|
||||||
int MAP2D_CENTRE_X=-256;
|
int MAP2D_CENTRE_X=-256;
|
||||||
int MAP2D_CENTRE_Y=-170;
|
int MAP2D_CENTRE_Y=-170;
|
||||||
|
@ -286,12 +286,12 @@ int looktimeout=20;
|
||||||
int lookmaxoffsetup=3*MAP2D_BLOCKSTEPSIZE;
|
int lookmaxoffsetup=3*MAP2D_BLOCKSTEPSIZE;
|
||||||
int lookmaxoffsetdown=6*MAP2D_BLOCKSTEPSIZE;
|
int lookmaxoffsetdown=6*MAP2D_BLOCKSTEPSIZE;
|
||||||
int lookspeed=2;
|
int lookspeed=2;
|
||||||
int lookreturnspeed=80;
|
int lookreturnspeed=5;
|
||||||
|
|
||||||
int ledgeTimer=25;
|
int ledgeTimer=50;
|
||||||
int ledgeSpeedIn=1;
|
int ledgeSpeedIn=1;
|
||||||
int ledgeSpeedOut=3;
|
int ledgeSpeedOut=3;
|
||||||
int ledgeShift=2;
|
int ledgeShift=1;
|
||||||
|
|
||||||
/*----------------------------------------------------------------------
|
/*----------------------------------------------------------------------
|
||||||
Function:
|
Function:
|
||||||
|
@ -401,7 +401,7 @@ else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return to centre
|
// Return to centre
|
||||||
if(m_padLookAroundTimer>=0&&m_cameraLookOffset<0)
|
if(m_padLookAroundTimer==0&&m_cameraLookOffset<0)
|
||||||
{
|
{
|
||||||
m_cameraLookOffset+=lookreturnspeed;
|
m_cameraLookOffset+=lookreturnspeed;
|
||||||
if(m_cameraLookOffset>0)
|
if(m_cameraLookOffset>0)
|
||||||
|
@ -409,7 +409,7 @@ else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||||
m_cameraLookOffset=0;
|
m_cameraLookOffset=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(m_padLookAroundTimer<=0&&m_cameraLookOffset>0)
|
if(m_padLookAroundTimer==0&&m_cameraLookOffset>0)
|
||||||
{
|
{
|
||||||
m_cameraLookOffset-=lookreturnspeed;
|
m_cameraLookOffset-=lookreturnspeed;
|
||||||
if(m_cameraLookOffset<0)
|
if(m_cameraLookOffset<0)
|
||||||
|
@ -422,21 +422,33 @@ else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||||
// Ledge look-ahead stuff
|
// Ledge look-ahead stuff
|
||||||
if(m_ledgeLookAhead&&m_ledgeLookAhead==m_lastLedgeLookAhead)
|
if(m_ledgeLookAhead&&m_ledgeLookAhead==m_lastLedgeLookAhead)
|
||||||
{
|
{
|
||||||
// timer..
|
|
||||||
if(m_ledgeLookTimer<ledgeTimer)
|
if(m_ledgeLookTimer<ledgeTimer)
|
||||||
{
|
{
|
||||||
m_ledgeLookTimer+=ledgeSpeedIn*_frames;
|
m_ledgeLookTimer+=_frames;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int limit;
|
int limit;
|
||||||
limit=(m_ledgeLookAhead*MAP2D_BLOCKSTEPSIZE)<<ledgeShift;
|
limit=(m_ledgeLookAhead*MAP2D_BLOCKSTEPSIZE)<<ledgeShift;
|
||||||
if(m_ledgeLookOffset<limit)
|
if(m_ledgeLookAhead>0)
|
||||||
{
|
{
|
||||||
m_ledgeLookOffset+=_frames;
|
if(m_ledgeLookOffset<limit)
|
||||||
if(m_ledgeLookOffset>limit)
|
|
||||||
{
|
{
|
||||||
m_ledgeLookOffset=limit;
|
// Look down
|
||||||
|
m_ledgeLookOffset+=ledgeSpeedIn*_frames;
|
||||||
|
if(m_ledgeLookOffset>limit)
|
||||||
|
{
|
||||||
|
m_ledgeLookOffset=limit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(m_ledgeLookOffset>limit)
|
||||||
|
{
|
||||||
|
// Look up
|
||||||
|
m_ledgeLookOffset-=ledgeSpeedIn*_frames;
|
||||||
|
if(m_ledgeLookOffset<limit)
|
||||||
|
{
|
||||||
|
m_ledgeLookOffset=limit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -445,6 +457,7 @@ else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||||
{
|
{
|
||||||
if(m_ledgeLookOffset>0)
|
if(m_ledgeLookOffset>0)
|
||||||
{
|
{
|
||||||
|
// Relax from look down
|
||||||
m_ledgeLookOffset-=ledgeSpeedOut*_frames;
|
m_ledgeLookOffset-=ledgeSpeedOut*_frames;
|
||||||
if(m_ledgeLookOffset<=0)
|
if(m_ledgeLookOffset<=0)
|
||||||
{
|
{
|
||||||
|
@ -454,6 +467,7 @@ else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||||
}
|
}
|
||||||
else if(m_ledgeLookOffset<0)
|
else if(m_ledgeLookOffset<0)
|
||||||
{
|
{
|
||||||
|
// Relax from look up
|
||||||
m_ledgeLookOffset+=ledgeSpeedOut*_frames;
|
m_ledgeLookOffset+=ledgeSpeedOut*_frames;
|
||||||
if(m_ledgeLookOffset>=0)
|
if(m_ledgeLookOffset>=0)
|
||||||
{
|
{
|
||||||
|
@ -468,14 +482,20 @@ else if(Pos.vy>m_mapEdge.vy-64)Pos.vy=m_mapEdge.vy-64;
|
||||||
|
|
||||||
// Camera focus point stuff
|
// Camera focus point stuff
|
||||||
m_currentCamFocusPointTarget.vx=Pos.vx+MAP2D_CENTRE_X;
|
m_currentCamFocusPointTarget.vx=Pos.vx+MAP2D_CENTRE_X;
|
||||||
m_currentCamFocusPointTarget.vy=Pos.vy+MAP2D_CENTRE_Y+(m_ledgeLookOffset>>ledgeShift);
|
m_currentCamFocusPointTarget.vy=Pos.vy+MAP2D_CENTRE_Y;
|
||||||
for(i=0;i<_frames;i++)
|
for(i=0;i<_frames;i++)
|
||||||
{
|
{
|
||||||
m_currentCamFocusPoint.vx+=(m_currentCamFocusPointTarget.vx-m_currentCamFocusPoint.vx)>>cammove;
|
m_currentCamFocusPoint.vx+=(m_currentCamFocusPointTarget.vx-m_currentCamFocusPoint.vx)>>cammove;
|
||||||
m_currentCamFocusPoint.vy+=(m_currentCamFocusPointTarget.vy-m_currentCamFocusPoint.vy)>>cammove;
|
m_currentCamFocusPoint.vy+=(m_currentCamFocusPointTarget.vy-m_currentCamFocusPoint.vy)>>cammove;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Final camera position
|
||||||
|
int yoff;
|
||||||
|
yoff=m_cameraLookOffset+(m_ledgeLookOffset>>ledgeShift);
|
||||||
|
if(yoff<-lookmaxoffsetup)yoff=-lookmaxoffsetup;
|
||||||
|
else if(yoff>lookmaxoffsetdown)yoff=lookmaxoffsetdown;
|
||||||
m_cameraPos.vx=m_currentCamFocusPoint.vx;
|
m_cameraPos.vx=m_currentCamFocusPoint.vx;
|
||||||
m_cameraPos.vy=m_currentCamFocusPoint.vy+m_cameraLookOffset;
|
m_cameraPos.vy=m_currentCamFocusPoint.vy+yoff;
|
||||||
|
|
||||||
|
|
||||||
// Limit camera scroll to the edges of the map
|
// Limit camera scroll to the edges of the map
|
||||||
|
|
|
@ -56,9 +56,23 @@
|
||||||
---------------------------------------------------------------------- */
|
---------------------------------------------------------------------- */
|
||||||
void CLookTrigger::collidedWith(CThing *_thisThing)
|
void CLookTrigger::collidedWith(CThing *_thisThing)
|
||||||
{
|
{
|
||||||
|
CPlayer *player;
|
||||||
|
DVECTOR collCentre;
|
||||||
|
CRECT collArea;
|
||||||
|
|
||||||
ASSERT(_thisThing->getThingType()==TYPE_PLAYER);
|
ASSERT(_thisThing->getThingType()==TYPE_PLAYER);
|
||||||
|
|
||||||
GameScene.getPlayer()->setLedgeLookAhead(+4);
|
// Only collide if players feet are inside the trigger
|
||||||
|
player=GameScene.getPlayer();
|
||||||
|
collCentre=player->getCollisionCentre();
|
||||||
|
collArea.x1=collCentre.vx-5;
|
||||||
|
collArea.y1=collCentre.vy-5;
|
||||||
|
collArea.x2=collArea.x1+10;
|
||||||
|
collArea.y2=collArea.y1+10;
|
||||||
|
if(checkCollisionAgainstArea(&collArea))
|
||||||
|
{
|
||||||
|
player->setLedgeLookAhead(+4);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================
|
/*===========================================================================
|
||||||
|
|
|
@ -561,14 +561,6 @@ SOURCE=..\..\..\source\level\layertile3d.h
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\source\level\layertilesolid.cpp
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\..\source\level\layertilesolid.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\..\..\source\level\level.cpp
|
SOURCE=..\..\..\source\level\level.cpp
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
@ -1135,6 +1127,14 @@ SOURCE=..\..\..\source\triggers\tlevexit.cpp
|
||||||
|
|
||||||
SOURCE=..\..\..\source\triggers\tlevexit.h
|
SOURCE=..\..\..\source\triggers\tlevexit.h
|
||||||
# End Source File
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\triggers\tlook.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\source\triggers\tlook.h
|
||||||
|
# End Source File
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "utils"
|
# Begin Group "utils"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue