This commit is contained in:
parent
c871631cc0
commit
40f3d3d6cc
10 changed files with 42 additions and 73 deletions
Binary file not shown.
Binary file not shown.
|
@ -161,7 +161,7 @@ void CNpcGaryFriend::think( int _frames )
|
|||
case COLLISION_TYPE_FLAG_MOVE_LEFT:
|
||||
{
|
||||
conveyorOverride = true;
|
||||
Pos.vx--;
|
||||
Pos.vx -= 4;
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -169,7 +169,7 @@ void CNpcGaryFriend::think( int _frames )
|
|||
case COLLISION_TYPE_FLAG_MOVE_RIGHT:
|
||||
{
|
||||
conveyorOverride = true;
|
||||
Pos.vx++;
|
||||
Pos.vx += 4;
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -76,7 +76,7 @@ CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
|||
ThisTex->Rect.w=W;
|
||||
ThisTex->Rect.h=H;
|
||||
ThisTex->TexData=0;
|
||||
ThisTex->Count=0; ThisTex->Speed=-1;
|
||||
ThisTex->Count=0; ThisTex->Speed=-4;
|
||||
ThisTex->TPage=Frame->TPage;
|
||||
ThisTex->TexName=Filename;
|
||||
|
||||
|
@ -152,23 +152,23 @@ int Time = GameState::getFramesSinceLast();
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CAnimTex::SetSpeed(FileEquate TexName,int Frm,int Speed)
|
||||
int CAnimTex::GetSpeed()
|
||||
{
|
||||
CAnimTex *ThisTex;
|
||||
|
||||
ThisTex=AnimTexList;
|
||||
|
||||
while(ThisTex)
|
||||
{
|
||||
if (ThisTex->TexName==TexName && ThisTex->FrameNo==Frm)
|
||||
{
|
||||
ThisTex->Speed=Speed;
|
||||
return;
|
||||
}
|
||||
ThisTex=ThisTex->NextTex;
|
||||
}
|
||||
ASSERT(!"CAnimTex::SetSpeed - Frame not Found");
|
||||
return(ThisTex->Speed);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
void CAnimTex::SetSpeed(int Speed)
|
||||
{
|
||||
CAnimTex *ThisTex;
|
||||
|
||||
ThisTex=AnimTexList;
|
||||
|
||||
ThisTex->Speed=Speed;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -19,7 +19,8 @@ static void AddAnimTex(sFrameHdr *Frame,int Frame,FileEquate Filename);
|
|||
static void AnimateTex();
|
||||
static void GetTexData();
|
||||
static void DumpThisTPage(FileEquate TexName);
|
||||
static void SetSpeed(FileEquate Filename,int Frm,int Speed);
|
||||
static void SetSpeed(int Speed);
|
||||
static int GetSpeed();
|
||||
|
||||
private:
|
||||
CAnimTex *NextTex;
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#include "game\game.h"
|
||||
#endif
|
||||
|
||||
#ifndef _ANIMTEX_HEADER_
|
||||
#include "gfx\animtex.h"
|
||||
#endif
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -98,23 +102,6 @@ void CNpcConveyorSwitchHazard::setWaypoints( sThingHazard *ThisHazard )
|
|||
trigger=(CHazardTrigger*)CTrigger::Create(CTrigger::TRIGGER_HAZARD);
|
||||
trigger->setPositionAndSize( ( newXPos << 4 ) + 8 - 50, ( newYPos << 4 ) + 16, 100, 0 );
|
||||
trigger->setHazard( this );
|
||||
|
||||
newXPos = (u16) *PntList;
|
||||
PntList++;
|
||||
newYPos = (u16) *PntList;
|
||||
PntList++;
|
||||
m_conveyorPos.vx = ( newXPos << 4 ) + 8;
|
||||
m_conveyorPos.vy = ( newYPos << 4 ) + 8;
|
||||
|
||||
s32 minX, maxX, minY, maxY;
|
||||
|
||||
m_npcPath.getPathXExtents( &minX, &maxX );
|
||||
m_npcPath.getPathYExtents( &minY, &maxY );
|
||||
|
||||
m_thinkArea.x1 = minX;
|
||||
m_thinkArea.x2 = maxX;
|
||||
m_thinkArea.y1 = minY;
|
||||
m_thinkArea.y2 = maxY;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -124,5 +111,7 @@ void CNpcConveyorSwitchHazard::trigger()
|
|||
m_reversed = !m_reversed;
|
||||
|
||||
CLevel &level = GameScene.GetLevel();
|
||||
level.reverseMapConveyor( m_conveyorPos );
|
||||
level.reverseMapConveyor();
|
||||
|
||||
CAnimTex::SetSpeed( -CAnimTex::GetSpeed() );
|
||||
}
|
|
@ -25,11 +25,11 @@ public:
|
|||
void init();
|
||||
void render();
|
||||
void trigger();
|
||||
CRECT const *getThinkBBox() {return( CThing::getThinkBBox() );}
|
||||
protected:
|
||||
void collidedWith(CThing *_thisThing) {}
|
||||
|
||||
u8 m_reversed;
|
||||
DVECTOR m_conveyorPos;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -739,51 +739,30 @@ sTileMapElem *MapElem=TileLayers[CLayerTile::LAYER_TILE_TYPE_ACTION]->getMapPtr(
|
|||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
void CLevel::reverseMapConveyor(DVECTOR const &Pos)
|
||||
void CLevel::reverseMapConveyor()
|
||||
{
|
||||
DVECTOR TL,BR;
|
||||
|
||||
|
||||
TL.vx=Pos.vx&-16;;
|
||||
TL.vy=Pos.vy&-16;;
|
||||
BR=TL;
|
||||
|
||||
int ColT=CollisionLayer->getCollisionBlock(TL.vx,TL.vy)>>COLLISION_TYPE_FLAG_SHIFT;
|
||||
|
||||
// if (CollisionLayer->getCollisionBlock(TL.vx,TL.vy)>>COLLISION_TYPE_FLAG_SHIFT==ColT)printf ("!!");
|
||||
|
||||
// Left
|
||||
while (CollisionLayer->getCollisionBlock(TL.vx-16,TL.vy)>>COLLISION_TYPE_FLAG_SHIFT==ColT) TL.vx-=16;
|
||||
// Top
|
||||
while (CollisionLayer->getCollisionBlock(TL.vx,TL.vy-16)>>COLLISION_TYPE_FLAG_SHIFT==ColT) TL.vy-=16;
|
||||
// Right
|
||||
while (CollisionLayer->getCollisionBlock(BR.vx+16,BR.vy)>>COLLISION_TYPE_FLAG_SHIFT==ColT) BR.vx+=16;
|
||||
// Bottom
|
||||
while (CollisionLayer->getCollisionBlock(BR.vx,BR.vy+16)>>COLLISION_TYPE_FLAG_SHIFT==ColT) BR.vy+=16;
|
||||
DVECTOR size = getMapSize();
|
||||
int ColT;
|
||||
|
||||
DVECTOR DP;
|
||||
|
||||
for (DP.vy=TL.vy; DP.vy<=BR.vy; DP.vy+=16)
|
||||
for (DP.vy=0; DP.vy<=(size.vy<<4); DP.vy+=16)
|
||||
{
|
||||
for (DP.vx=TL.vx; DP.vx<=BR.vx; DP.vx+=16)
|
||||
for (DP.vx=0; DP.vx<=(size.vx<<4); DP.vx+=16)
|
||||
{
|
||||
u8 *ColElem=CollisionLayer->getMapPtr(DP.vx,DP.vy);
|
||||
|
||||
if (*ColElem>>COLLISION_TYPE_FLAG_SHIFT==ColT)
|
||||
{
|
||||
if ( ColT == COLLISION_TYPE_MOVE_LEFT )
|
||||
if ( (*ColElem)>>COLLISION_TYPE_FLAG_SHIFT == COLLISION_TYPE_MOVE_LEFT )
|
||||
{
|
||||
*ColElem &= ~COLLISION_TYPE_FLAG_MOVE_LEFT;
|
||||
*ColElem |= COLLISION_TYPE_FLAG_MOVE_RIGHT;
|
||||
}
|
||||
else if ( ColT == COLLISION_TYPE_MOVE_RIGHT )
|
||||
else if ( (*ColElem)>>COLLISION_TYPE_FLAG_SHIFT == COLLISION_TYPE_MOVE_RIGHT )
|
||||
{
|
||||
*ColElem &= ~COLLISION_TYPE_FLAG_MOVE_RIGHT;
|
||||
*ColElem |= COLLISION_TYPE_FLAG_MOVE_LEFT;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ static CFmaScene::FMA_SCRIPT_NUMBER getFMAToFollow() {return LvlTable[s_glo
|
|||
void destroyMapArea(DVECTOR const &Pos);
|
||||
void destroyMapTile(DVECTOR const &Pos);
|
||||
|
||||
void reverseMapConveyor(DVECTOR const &Pos);
|
||||
void reverseMapConveyor();
|
||||
|
||||
int getActorCount() {return ActorCount;}
|
||||
sThingActor **getActorList() {return ActorList;}
|
||||
|
|
|
@ -145,13 +145,13 @@ void CNpcConveyorPlatform::processMovement( int _frames )
|
|||
{
|
||||
moveX = distX;
|
||||
|
||||
if ( moveX > 1 )
|
||||
if ( moveX > 4 )
|
||||
{
|
||||
moveX = 1;
|
||||
moveX = 4;
|
||||
}
|
||||
else if ( moveX < -1 )
|
||||
else if ( moveX < -4 )
|
||||
{
|
||||
moveX = -1;
|
||||
moveX = -4;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue