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:
|
case COLLISION_TYPE_FLAG_MOVE_LEFT:
|
||||||
{
|
{
|
||||||
conveyorOverride = true;
|
conveyorOverride = true;
|
||||||
Pos.vx--;
|
Pos.vx -= 4;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ void CNpcGaryFriend::think( int _frames )
|
||||||
case COLLISION_TYPE_FLAG_MOVE_RIGHT:
|
case COLLISION_TYPE_FLAG_MOVE_RIGHT:
|
||||||
{
|
{
|
||||||
conveyorOverride = true;
|
conveyorOverride = true;
|
||||||
Pos.vx++;
|
Pos.vx += 4;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,7 @@ CAnimTex *ThisTex=new ("CAnimTex::AddAnimTex") CAnimTex;
|
||||||
ThisTex->Rect.w=W;
|
ThisTex->Rect.w=W;
|
||||||
ThisTex->Rect.h=H;
|
ThisTex->Rect.h=H;
|
||||||
ThisTex->TexData=0;
|
ThisTex->TexData=0;
|
||||||
ThisTex->Count=0; ThisTex->Speed=-1;
|
ThisTex->Count=0; ThisTex->Speed=-4;
|
||||||
ThisTex->TPage=Frame->TPage;
|
ThisTex->TPage=Frame->TPage;
|
||||||
ThisTex->TexName=Filename;
|
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;
|
CAnimTex *ThisTex;
|
||||||
|
|
||||||
ThisTex=AnimTexList;
|
ThisTex=AnimTexList;
|
||||||
|
|
||||||
while(ThisTex)
|
return(ThisTex->Speed);
|
||||||
{
|
|
||||||
if (ThisTex->TexName==TexName && ThisTex->FrameNo==Frm)
|
|
||||||
{
|
|
||||||
ThisTex->Speed=Speed;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
ThisTex=ThisTex->NextTex;
|
|
||||||
}
|
|
||||||
ASSERT(!"CAnimTex::SetSpeed - Frame not Found");
|
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
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 AnimateTex();
|
||||||
static void GetTexData();
|
static void GetTexData();
|
||||||
static void DumpThisTPage(FileEquate TexName);
|
static void DumpThisTPage(FileEquate TexName);
|
||||||
static void SetSpeed(FileEquate Filename,int Frm,int Speed);
|
static void SetSpeed(int Speed);
|
||||||
|
static int GetSpeed();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CAnimTex *NextTex;
|
CAnimTex *NextTex;
|
||||||
|
|
|
@ -27,6 +27,10 @@
|
||||||
#include "game\game.h"
|
#include "game\game.h"
|
||||||
#endif
|
#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=(CHazardTrigger*)CTrigger::Create(CTrigger::TRIGGER_HAZARD);
|
||||||
trigger->setPositionAndSize( ( newXPos << 4 ) + 8 - 50, ( newYPos << 4 ) + 16, 100, 0 );
|
trigger->setPositionAndSize( ( newXPos << 4 ) + 8 - 50, ( newYPos << 4 ) + 16, 100, 0 );
|
||||||
trigger->setHazard( this );
|
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;
|
m_reversed = !m_reversed;
|
||||||
|
|
||||||
CLevel &level = GameScene.GetLevel();
|
CLevel &level = GameScene.GetLevel();
|
||||||
level.reverseMapConveyor( m_conveyorPos );
|
level.reverseMapConveyor();
|
||||||
|
|
||||||
|
CAnimTex::SetSpeed( -CAnimTex::GetSpeed() );
|
||||||
}
|
}
|
|
@ -25,11 +25,11 @@ public:
|
||||||
void init();
|
void init();
|
||||||
void render();
|
void render();
|
||||||
void trigger();
|
void trigger();
|
||||||
|
CRECT const *getThinkBBox() {return( CThing::getThinkBBox() );}
|
||||||
protected:
|
protected:
|
||||||
void collidedWith(CThing *_thisThing) {}
|
void collidedWith(CThing *_thisThing) {}
|
||||||
|
|
||||||
u8 m_reversed;
|
u8 m_reversed;
|
||||||
DVECTOR m_conveyorPos;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#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;
|
DVECTOR size = getMapSize();
|
||||||
|
int ColT;
|
||||||
|
|
||||||
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 DP;
|
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);
|
u8 *ColElem=CollisionLayer->getMapPtr(DP.vx,DP.vy);
|
||||||
|
|
||||||
if (*ColElem>>COLLISION_TYPE_FLAG_SHIFT==ColT)
|
if ( (*ColElem)>>COLLISION_TYPE_FLAG_SHIFT == COLLISION_TYPE_MOVE_LEFT )
|
||||||
{
|
|
||||||
if ( ColT == COLLISION_TYPE_MOVE_LEFT )
|
|
||||||
{
|
{
|
||||||
*ColElem &= ~COLLISION_TYPE_FLAG_MOVE_LEFT;
|
*ColElem &= ~COLLISION_TYPE_FLAG_MOVE_LEFT;
|
||||||
*ColElem |= COLLISION_TYPE_FLAG_MOVE_RIGHT;
|
*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_RIGHT;
|
||||||
*ColElem |= COLLISION_TYPE_FLAG_MOVE_LEFT;
|
*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 destroyMapArea(DVECTOR const &Pos);
|
||||||
void destroyMapTile(DVECTOR const &Pos);
|
void destroyMapTile(DVECTOR const &Pos);
|
||||||
|
|
||||||
void reverseMapConveyor(DVECTOR const &Pos);
|
void reverseMapConveyor();
|
||||||
|
|
||||||
int getActorCount() {return ActorCount;}
|
int getActorCount() {return ActorCount;}
|
||||||
sThingActor **getActorList() {return ActorList;}
|
sThingActor **getActorList() {return ActorList;}
|
||||||
|
|
|
@ -145,13 +145,13 @@ void CNpcConveyorPlatform::processMovement( int _frames )
|
||||||
{
|
{
|
||||||
moveX = distX;
|
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
|
else
|
||||||
|
|
Loading…
Add table
Reference in a new issue