diff --git a/Graphics/levels/Chapter01/Level02/Level02.MEX b/Graphics/levels/Chapter01/Level02/Level02.MEX index bf98867f3..7c651e7a8 100644 Binary files a/Graphics/levels/Chapter01/Level02/Level02.MEX and b/Graphics/levels/Chapter01/Level02/Level02.MEX differ diff --git a/Graphics/levels/Chapter01/Level02/level02.Mep b/Graphics/levels/Chapter01/Level02/level02.Mep index 9f6752dc8..508fc11fd 100644 Binary files a/Graphics/levels/Chapter01/Level02/level02.Mep and b/Graphics/levels/Chapter01/Level02/level02.Mep differ diff --git a/makefile.gaz b/makefile.gaz index 57c19122f..821d2a59b 100644 --- a/makefile.gaz +++ b/makefile.gaz @@ -235,7 +235,8 @@ system_src := main \ thing_src := thing -triggers_src := tlevexit \ +triggers_src := tcamlock \ + tlevexit \ tlook \ trestart \ tteleprt diff --git a/source/game/game.cpp b/source/game/game.cpp index b42519c1b..6ad389931 100644 --- a/source/game/game.cpp +++ b/source/game/game.cpp @@ -307,7 +307,7 @@ void CGameScene::initLevel() m_player->init(); m_player->setLayerCollision(Level.getCollisionLayer()); DVECTOR mapSize=Level.getMapSize(); - CPlayer::CameraBox camBox={0,0,mapSize.vx,mapSize.vy}; + CPlayer::CameraBox camBox={0,0,mapSize.vx<<4,mapSize.vy<<4}; m_player->setCameraBox(camBox); if(s_globalLevelSelectThing==1) { diff --git a/source/level/level.cpp b/source/level/level.cpp index 157f052a7..59e9e2244 100644 --- a/source/level/level.cpp +++ b/source/level/level.cpp @@ -31,6 +31,10 @@ #include "triggers\tteleprt.h" #endif +#ifndef __TRIGGERS_TCAMLOCK_H__ +#include "triggers\tcamlock.h" +#endif + #ifndef __PICKUPS_PICKUP_H__ #include "pickups\pickup.h" #endif @@ -293,6 +297,28 @@ void CLevel::initLayers() // Triggers // Yeah yeah - I'll put this crap into a seperate file when the numbers of trigger types get a bit bigger! (pkg) + if (LevelHdr->TriggerList) + { + sThingHdr *Hdr=(sThingHdr*)MakePtr(LevelHdr,LevelHdr->TriggerList); + TriggerCount=Hdr->Count; + TriggerList=(sThingTrigger*)MakePtr(Hdr,sizeof(sThingHdr)); + + for(int i=0;iType==3) + { + // Camera lock trigger + trigger=(CCameraLockTrigger*)new ("CameraLockTrigger") CCameraLockTrigger(); + trigger->init(); + trigger->setPositionAndSize(TriggerList->Pos.X<<4,TriggerList->Pos.Y<<4, + TriggerList->Width<<4,TriggerList->Height<<4); + trigger->setTargetBox(TriggerList->TargetPos.X<<4,TriggerList->TargetPos.Y<<4,TriggerList->TargetSize.X<<4,TriggerList->TargetSize.Y<<4); + } + TriggerList++; + } + } + if (LevelHdr->TriggerList) { sThingHdr *Hdr=(sThingHdr*)MakePtr(LevelHdr,LevelHdr->TriggerList); @@ -318,11 +344,19 @@ void CLevel::initLayers() case 2: trigger=(CTeleportTrigger*)new ("TeleportTrigger") CTeleportTrigger(); break; + + // Camera lock trigger + case 3: + trigger=NULL; + break; + } + if(trigger) + { + trigger->init(); + trigger->setPositionAndSize(TriggerList->Pos.X<<4,TriggerList->Pos.Y<<4, + TriggerList->Width<<4,TriggerList->Height<<4); + trigger->setTargetBox(TriggerList->TargetPos.X<<4,TriggerList->TargetPos.Y<<4,TriggerList->TargetSize.X<<4,TriggerList->TargetSize.Y<<4); } - trigger->init(); - trigger->setPositionAndSize(TriggerList->Pos.X<<4,TriggerList->Pos.Y<<4, - TriggerList->Width<<4,TriggerList->Height<<4); - trigger->setTargetPos(TriggerList->TargetPos.X<<4,TriggerList->TargetPos.Y<<4); TriggerList++; } } diff --git a/source/player/player.cpp b/source/player/player.cpp index 441a4e811..98b60623a 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -546,7 +546,7 @@ void CPlayer::think(int _frames) { int i; - if(m_healthType==HEALTH_TYPE__OUT_OF_WATER&&m_currentMode!=PLAYER_MODE_DEAD) + if(m_healthType==HEALTH_TYPE__OUT_OF_WATER&&m_currentMode!=PLAYER_MODE_DEAD&&m_currentMode!=PLAYER_MODE_FLY) { m_healthWaterLevel-=waterDrainSpeed*_frames; if(m_healthWaterLevel<=0) @@ -970,23 +970,15 @@ for(int i=0;igetThingType()==TYPE_PLAYER); -// ((CPlayer*)_thisThing)->teleportTo(TargetPos.vx+8,TargetPos.vy+16); + ((CPlayer*)_thisThing)->setCameraBox(camBox); + +PAUL_DBGMSG("HIT CAM BOX TRIGGER"); } /*=========================================================================== diff --git a/source/triggers/tteleprt.cpp b/source/triggers/tteleprt.cpp index 156b18f43..0d2b53065 100644 --- a/source/triggers/tteleprt.cpp +++ b/source/triggers/tteleprt.cpp @@ -55,7 +55,9 @@ void CTeleportTrigger::collidedWith(CThing *_thisThing) { ASSERT(_thisThing->getThingType()==TYPE_PLAYER); - ((CPlayer*)_thisThing)->teleportTo(TargetPos.vx+8,TargetPos.vy+16); + ((CPlayer*)_thisThing)->teleportTo(m_boxX1+8,m_boxY1+16); + +PAUL_DBGMSG("HIT TELEPORT TRIGGER"); } /*=========================================================================== diff --git a/users/paul/spongebob project/spongebob project.dsp b/users/paul/spongebob project/spongebob project.dsp index 850aa7f6f..7f60c616c 100644 --- a/users/paul/spongebob project/spongebob project.dsp +++ b/users/paul/spongebob project/spongebob project.dsp @@ -1605,6 +1605,14 @@ SOURCE=..\..\..\source\thing\thing.h # PROP Default_Filter "" # Begin Source File +SOURCE=..\..\..\source\triggers\tcamlock.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\source\triggers\tcamlock.h +# End Source File +# Begin Source File + SOURCE=..\..\..\source\triggers\tlevexit.cpp # End Source File # Begin Source File