mirror of
https://github.com/ZDoom/Raze.git
synced 2025-05-31 01:11:15 +00:00
- triggers.cpp subfunctions.
This commit is contained in:
parent
8f3c97dde4
commit
2967edf827
1 changed files with 30 additions and 33 deletions
|
@ -800,10 +800,9 @@ void DragPoint(walltype* pWall, int x, int y)
|
||||||
} while (prevWall != pWall && vsi > 0);
|
} while (prevWall != pWall && vsi > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TranslateSector(int nSector, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, char a12)
|
void TranslateSector(sectortype* pSector, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, char a12)
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
auto pSector = §or[nSector];
|
|
||||||
XSECTOR *pXSector = &pSector->xs();
|
XSECTOR *pXSector = &pSector->xs();
|
||||||
int v20 = interpolatedvalue(a6, a9, a2);
|
int v20 = interpolatedvalue(a6, a9, a2);
|
||||||
int vc = interpolatedvalue(a6, a9, a3);
|
int vc = interpolatedvalue(a6, a9, a3);
|
||||||
|
@ -864,7 +863,7 @@ void TranslateSector(int nSector, int a2, int a3, int a4, int a5, int a6, int a7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype *pSprite = &actor->s();
|
spritetype *pSprite = &actor->s();
|
||||||
|
@ -904,7 +903,7 @@ void TranslateSector(int nSector, int a2, int a3, int a4, int a5, int a6, int a7
|
||||||
{
|
{
|
||||||
int top, bottom;
|
int top, bottom;
|
||||||
GetSpriteExtents(pSprite, &top, &bottom);
|
GetSpriteExtents(pSprite, &top, &bottom);
|
||||||
int floorZ = getflorzofslope(nSector, pSprite->x, pSprite->y);
|
int floorZ = getflorzofslopeptr(pSector, pSprite->x, pSprite->y);
|
||||||
if (!(pSprite->cstat&48) && floorZ <= bottom)
|
if (!(pSprite->cstat&48) && floorZ <= bottom)
|
||||||
{
|
{
|
||||||
if (v14)
|
if (v14)
|
||||||
|
@ -918,9 +917,8 @@ void TranslateSector(int nSector, int a2, int a3, int a4, int a5, int a6, int a7
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZTranslateSector(int nSector, XSECTOR *pXSector, int a3, int a4)
|
void ZTranslateSector(sectortype* pSector, XSECTOR *pXSector, int a3, int a4)
|
||||||
{
|
{
|
||||||
sectortype *pSector = §or[nSector];
|
|
||||||
viewInterpolateSector(pSector);
|
viewInterpolateSector(pSector);
|
||||||
int dz = pXSector->onFloorZ-pXSector->offFloorZ;
|
int dz = pXSector->onFloorZ-pXSector->offFloorZ;
|
||||||
if (dz != 0)
|
if (dz != 0)
|
||||||
|
@ -929,7 +927,7 @@ void ZTranslateSector(int nSector, XSECTOR *pXSector, int a3, int a4)
|
||||||
pSector->baseFloor = pSector->floorz = pXSector->offFloorZ + MulScale(dz, GetWaveValue(a3, a4), 16);
|
pSector->baseFloor = pSector->floorz = pXSector->offFloorZ + MulScale(dz, GetWaveValue(a3, a4), 16);
|
||||||
pSector->velFloor += (pSector->floorz-oldZ)<<8;
|
pSector->velFloor += (pSector->floorz-oldZ)<<8;
|
||||||
|
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype* pSprite = &actor->s();
|
spritetype* pSprite = &actor->s();
|
||||||
|
@ -958,7 +956,7 @@ void ZTranslateSector(int nSector, XSECTOR *pXSector, int a3, int a4)
|
||||||
pSector->baseCeil = pSector->ceilingz = pXSector->offCeilZ + MulScale(dz, GetWaveValue(a3, a4), 16);
|
pSector->baseCeil = pSector->ceilingz = pXSector->offCeilZ + MulScale(dz, GetWaveValue(a3, a4), 16);
|
||||||
pSector->velCeil += (pSector->ceilingz-oldZ)<<8;
|
pSector->velCeil += (pSector->ceilingz-oldZ)<<8;
|
||||||
|
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype* pSprite = &actor->s();
|
spritetype* pSprite = &actor->s();
|
||||||
|
@ -973,12 +971,12 @@ void ZTranslateSector(int nSector, XSECTOR *pXSector, int a3, int a4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DBloodActor* GetHighestSprite(int nSector, int nStatus, int *z)
|
DBloodActor* GetHighestSprite(sectortype* pSector, int nStatus, int *z)
|
||||||
{
|
{
|
||||||
*z = sector[nSector].floorz;
|
*z = pSector->floorz;
|
||||||
DBloodActor* found = nullptr;
|
DBloodActor* found = nullptr;
|
||||||
|
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype* pSprite = &actor->s();
|
spritetype* pSprite = &actor->s();
|
||||||
|
@ -996,15 +994,14 @@ DBloodActor* GetHighestSprite(int nSector, int nStatus, int *z)
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBloodActor* GetCrushedSpriteExtents(unsigned int nSector, int *pzTop, int *pzBot)
|
DBloodActor* GetCrushedSpriteExtents(sectortype* pSector, int *pzTop, int *pzBot)
|
||||||
{
|
{
|
||||||
assert(pzTop != NULL && pzBot != NULL);
|
assert(pzTop != NULL && pzBot != NULL);
|
||||||
assert(nSector < (unsigned int)numsectors);
|
assert(pSector);
|
||||||
DBloodActor* found = nullptr;
|
DBloodActor* found = nullptr;
|
||||||
sectortype *pSector = §or[nSector];
|
|
||||||
int foundz = pSector->ceilingz;
|
int foundz = pSector->ceilingz;
|
||||||
|
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype* pSprite = &actor->s();
|
spritetype* pSprite = &actor->s();
|
||||||
|
@ -1042,7 +1039,7 @@ int VCrushBusy(sectortype *pSector, unsigned int a2)
|
||||||
if (dz2 != 0)
|
if (dz2 != 0)
|
||||||
v10 += MulScale(dz2, GetWaveValue(a2, nWave), 16);
|
v10 += MulScale(dz2, GetWaveValue(a2, nWave), 16);
|
||||||
int v18;
|
int v18;
|
||||||
if (GetHighestSprite(sectnum(pSector), 6, &v18) && vc >= v18)
|
if (GetHighestSprite(pSector, 6, &v18) && vc >= v18)
|
||||||
return 1;
|
return 1;
|
||||||
viewInterpolateSector(pSector);
|
viewInterpolateSector(pSector);
|
||||||
if (dz1 != 0)
|
if (dz1 != 0)
|
||||||
|
@ -1120,7 +1117,7 @@ int VDoorBusy(sectortype* pSector, unsigned int a2)
|
||||||
else
|
else
|
||||||
vbp = -65536/ClipLow((120*pXSector->busyTimeB)/10, 1);
|
vbp = -65536/ClipLow((120*pXSector->busyTimeB)/10, 1);
|
||||||
int top, bottom;
|
int top, bottom;
|
||||||
auto actor = GetCrushedSpriteExtents(sectnum(pSector),&top,&bottom);
|
auto actor = GetCrushedSpriteExtents(pSector, &top, &bottom);
|
||||||
if (actor && a2 > pXSector->busy)
|
if (actor && a2 > pXSector->busy)
|
||||||
{
|
{
|
||||||
assert(actor->hasX());
|
assert(actor->hasX());
|
||||||
|
@ -1192,7 +1189,7 @@ int VDoorBusy(sectortype* pSector, unsigned int a2)
|
||||||
nWave = pXSector->busyWaveA;
|
nWave = pXSector->busyWaveA;
|
||||||
else
|
else
|
||||||
nWave = pXSector->busyWaveB;
|
nWave = pXSector->busyWaveB;
|
||||||
ZTranslateSector(sectnum(pSector), pXSector, a2, nWave);
|
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||||
pXSector->busy = a2;
|
pXSector->busy = a2;
|
||||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||||
evSendSector(pSector,pXSector->txID, kCmdLink);
|
evSendSector(pSector,pXSector->txID, kCmdLink);
|
||||||
|
@ -1217,8 +1214,8 @@ int HDoorBusy(sectortype* pSector, unsigned int a2)
|
||||||
if (!pXSector->marker0 || !pXSector->marker1) return 0;
|
if (!pXSector->marker0 || !pXSector->marker1) return 0;
|
||||||
spritetype *pSprite1 = &pXSector->marker0->s();
|
spritetype *pSprite1 = &pXSector->marker0->s();
|
||||||
spritetype *pSprite2 = &pXSector->marker1->s();
|
spritetype *pSprite2 = &pXSector->marker1->s();
|
||||||
TranslateSector(sectnum(pSector), GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, pSector->type == kSectorSlide);
|
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, pSector->type == kSectorSlide);
|
||||||
ZTranslateSector(sectnum(pSector), pXSector, a2, nWave);
|
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||||
pXSector->busy = a2;
|
pXSector->busy = a2;
|
||||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||||
evSendSector(pSector, pXSector->txID, kCmdLink);
|
evSendSector(pSector, pXSector->txID, kCmdLink);
|
||||||
|
@ -1242,8 +1239,8 @@ int RDoorBusy(sectortype* pSector, unsigned int a2)
|
||||||
nWave = pXSector->busyWaveB;
|
nWave = pXSector->busyWaveB;
|
||||||
if (!pXSector->marker0) return 0;
|
if (!pXSector->marker0) return 0;
|
||||||
spritetype* pSprite = &pXSector->marker0->s();
|
spritetype* pSprite = &pXSector->marker0->s();
|
||||||
TranslateSector(sectnum(pSector), GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite->x, pSprite->y, 0, pSprite->x, pSprite->y, pSprite->ang, pSector->type == kSectorRotate);
|
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite->x, pSprite->y, 0, pSprite->x, pSprite->y, pSprite->ang, pSector->type == kSectorRotate);
|
||||||
ZTranslateSector(sectnum(pSector), pXSector, a2, nWave);
|
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||||
pXSector->busy = a2;
|
pXSector->busy = a2;
|
||||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||||
evSendSector(pSector, pXSector->txID, kCmdLink);
|
evSendSector(pSector, pXSector->txID, kCmdLink);
|
||||||
|
@ -1267,13 +1264,13 @@ int StepRotateBusy(sectortype* pSector, unsigned int a2)
|
||||||
{
|
{
|
||||||
vbp = pXSector->data+pSprite->ang;
|
vbp = pXSector->data+pSprite->ang;
|
||||||
int nWave = pXSector->busyWaveA;
|
int nWave = pXSector->busyWaveA;
|
||||||
TranslateSector(sectnum(pSector), GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite->x, pSprite->y, pXSector->data, pSprite->x, pSprite->y, vbp, 1);
|
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite->x, pSprite->y, pXSector->data, pSprite->x, pSprite->y, vbp, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
vbp = pXSector->data-pSprite->ang;
|
vbp = pXSector->data-pSprite->ang;
|
||||||
int nWave = pXSector->busyWaveB;
|
int nWave = pXSector->busyWaveB;
|
||||||
TranslateSector(sectnum(pSector), GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite->x, pSprite->y, vbp, pSprite->x, pSprite->y, pXSector->data, 1);
|
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite->x, pSprite->y, vbp, pSprite->x, pSprite->y, pXSector->data, 1);
|
||||||
}
|
}
|
||||||
pXSector->busy = a2;
|
pXSector->busy = a2;
|
||||||
if (pXSector->command == kCmdLink && pXSector->txID)
|
if (pXSector->command == kCmdLink && pXSector->txID)
|
||||||
|
@ -1317,8 +1314,8 @@ int PathBusy(sectortype* pSector, unsigned int a2)
|
||||||
XSPRITE *pXSprite2 = &pXSector->marker1->x();
|
XSPRITE *pXSprite2 = &pXSector->marker1->x();
|
||||||
|
|
||||||
int nWave = pXSprite1->wave;
|
int nWave = pXSprite1->wave;
|
||||||
TranslateSector(sectnum(pSector), GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, 1);
|
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), pSprite->x, pSprite->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, 1);
|
||||||
ZTranslateSector(sectnum(pSector), pXSector, a2, nWave);
|
ZTranslateSector(pSector, pXSector, a2, nWave);
|
||||||
pXSector->busy = a2;
|
pXSector->busy = a2;
|
||||||
if ((a2&0xffff) == 0)
|
if ((a2&0xffff) == 0)
|
||||||
{
|
{
|
||||||
|
@ -2025,14 +2022,14 @@ void trInit(void)
|
||||||
break;
|
break;
|
||||||
case kSectorZMotion:
|
case kSectorZMotion:
|
||||||
case kSectorZMotionSprite:
|
case kSectorZMotionSprite:
|
||||||
ZTranslateSector(i, pXSector, pXSector->busy, 1);
|
ZTranslateSector(pSector, pXSector, pXSector->busy, 1);
|
||||||
break;
|
break;
|
||||||
case kSectorSlideMarked:
|
case kSectorSlideMarked:
|
||||||
case kSectorSlide:
|
case kSectorSlide:
|
||||||
{
|
{
|
||||||
spritetype* pSprite1 = &pXSector->marker0->s();
|
spritetype* pSprite1 = &pXSector->marker0->s();
|
||||||
spritetype* pSprite2 = &pXSector->marker1->s();
|
spritetype* pSprite2 = &pXSector->marker1->s();
|
||||||
TranslateSector(i, 0, -65536, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, pSector->type == kSectorSlide);
|
TranslateSector(pSector, 0, -65536, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, pSector->type == kSectorSlide);
|
||||||
for(auto& wal : wallsofsector(pSector))
|
for(auto& wal : wallsofsector(pSector))
|
||||||
{
|
{
|
||||||
wal.baseWall.x = wal.x;
|
wal.baseWall.x = wal.x;
|
||||||
|
@ -2043,15 +2040,15 @@ void trInit(void)
|
||||||
{
|
{
|
||||||
actor->basePoint = actor->s().pos;
|
actor->basePoint = actor->s().pos;
|
||||||
}
|
}
|
||||||
TranslateSector(i, 0, pXSector->busy, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, pSector->type == kSectorSlide);
|
TranslateSector(pSector, 0, pXSector->busy, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, pSprite1->ang, pSprite2->x, pSprite2->y, pSprite2->ang, pSector->type == kSectorSlide);
|
||||||
ZTranslateSector(i, pXSector, pXSector->busy, 1);
|
ZTranslateSector(pSector, pXSector, pXSector->busy, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kSectorRotateMarked:
|
case kSectorRotateMarked:
|
||||||
case kSectorRotate:
|
case kSectorRotate:
|
||||||
{
|
{
|
||||||
spritetype* pSprite1 = &pXSector->marker0->s();
|
spritetype* pSprite1 = &pXSector->marker0->s();
|
||||||
TranslateSector(i, 0, -65536, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, 0, pSprite1->x, pSprite1->y, pSprite1->ang, pSector->type == kSectorRotate);
|
TranslateSector(pSector, 0, -65536, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, 0, pSprite1->x, pSprite1->y, pSprite1->ang, pSector->type == kSectorRotate);
|
||||||
for (auto& wal : wallsofsector(pSector))
|
for (auto& wal : wallsofsector(pSector))
|
||||||
{
|
{
|
||||||
wal.baseWall.x = wal.x;
|
wal.baseWall.x = wal.x;
|
||||||
|
@ -2062,8 +2059,8 @@ void trInit(void)
|
||||||
{
|
{
|
||||||
actor->basePoint = actor->s().pos;
|
actor->basePoint = actor->s().pos;
|
||||||
}
|
}
|
||||||
TranslateSector(i, 0, pXSector->busy, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, 0, pSprite1->x, pSprite1->y, pSprite1->ang, pSector->type == kSectorRotate);
|
TranslateSector(pSector, 0, pXSector->busy, pSprite1->x, pSprite1->y, pSprite1->x, pSprite1->y, 0, pSprite1->x, pSprite1->y, pSprite1->ang, pSector->type == kSectorRotate);
|
||||||
ZTranslateSector(i, pXSector, pXSector->busy, 1);
|
ZTranslateSector(pSector, pXSector, pXSector->busy, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case kSectorPath:
|
case kSectorPath:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue