mirror of
https://github.com/DrBeef/Raze.git
synced 2025-01-19 07:31:03 +00:00
- some wall[] replaced.
This commit is contained in:
parent
378bf40143
commit
3f46507313
3 changed files with 28 additions and 24 deletions
|
@ -148,12 +148,12 @@ bool CheckProximityPoint(int nX1, int nY1, int nZ1, int nX2, int nY2, int nZ2, i
|
|||
return 1;
|
||||
}
|
||||
|
||||
bool CheckProximityWall(int nWall, int x, int y, int nDist)
|
||||
bool CheckProximityWall(walltype* pWall, int x, int y, int nDist)
|
||||
{
|
||||
int x1 = wall[nWall].x;
|
||||
int y1 = wall[nWall].y;
|
||||
int x2 = wall[wall[nWall].point2].x;
|
||||
int y2 = wall[wall[nWall].point2].y;
|
||||
int x1 = pWall->x;
|
||||
int y1 = pWall->y;
|
||||
int x2 = pWall->point2Wall()->x;
|
||||
int y2 = pWall->point2Wall()->y;
|
||||
nDist <<= 4;
|
||||
if (x1 < x2)
|
||||
{
|
||||
|
@ -742,7 +742,7 @@ BitArray GetClosestSpriteSectors(int nSector, int x, int y, int nDist, TArray<in
|
|||
{
|
||||
if (search.Check(nNextSector)) // if we've already checked this sector, skip. This is bad, therefore only in compat mode.
|
||||
continue;
|
||||
withinRange = CheckProximityWall(wal.point2, x, y, nDist);
|
||||
withinRange = CheckProximityWall(wal.point2Wall(), x, y, nDist);
|
||||
}
|
||||
else // new method using proper math and no bad shortcut.
|
||||
{
|
||||
|
|
|
@ -55,7 +55,7 @@ bool FindSector(int nX, int nY, int nZ, int *nSector);
|
|||
bool FindSector(int nX, int nY, int *nSector);
|
||||
bool CheckProximity(DBloodActor *pSprite, int nX, int nY, int nZ, int nSector, int nDist);
|
||||
bool CheckProximityPoint(int nX1, int nY1, int nZ1, int nX2, int nY2, int nZ2, int nDist);
|
||||
bool CheckProximityWall(int nWall, int x, int y, int nDist);
|
||||
bool CheckProximityWall(walltype* nWall, int x, int y, int nDist);
|
||||
int GetWallAngle(walltype* pWall);
|
||||
void GetWallNormal(walltype* pWall, int *pX, int *pY);
|
||||
bool IntersectRay(int wx, int wy, int wdx, int wdy, int x1, int y1, int z1, int x2, int y2, int z2, int *ix, int *iy, int *iz);
|
||||
|
|
|
@ -2554,17 +2554,18 @@ void useObjResizer(DBloodActor* sourceactor, int targType, int targIndex, DBlood
|
|||
break;
|
||||
}
|
||||
case OBJ_WALL:
|
||||
auto pWall = &wall[targIndex];
|
||||
if (valueIsBetween(pXSource->data1, -1, 32767))
|
||||
wall[targIndex].xrepeat = ClipRange(pXSource->data1, 0, 255);
|
||||
pWall->xrepeat = ClipRange(pXSource->data1, 0, 255);
|
||||
|
||||
if (valueIsBetween(pXSource->data2, -1, 32767))
|
||||
wall[targIndex].yrepeat = ClipRange(pXSource->data2, 0, 255);
|
||||
pWall->yrepeat = ClipRange(pXSource->data2, 0, 255);
|
||||
|
||||
if (valueIsBetween(pXSource->data3, -1, 32767))
|
||||
wall[targIndex].xpan_ = (float)ClipRange(pXSource->data3, 0, 255);
|
||||
pWall->xpan_ = (float)ClipRange(pXSource->data3, 0, 255);
|
||||
|
||||
if (valueIsBetween(pXSource->data4, -1, 65535))
|
||||
wall[targIndex].ypan_ = (float)ClipRange(pXSource->data4, 0, 255);
|
||||
pWall->ypan_ = (float)ClipRange(pXSource->data4, 0, 255);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3543,42 +3544,45 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, int index, DBloodAc
|
|||
return;
|
||||
|
||||
case OBJ_WALL:
|
||||
if (pXSource->data2 <= 0)
|
||||
{
|
||||
auto pWall = &wall[index];
|
||||
if (pXSource->data2 <= 0)
|
||||
{
|
||||
if (pXSource->data3 == 3 || pXSource->data3 == 1)
|
||||
seqKill(0, index);
|
||||
if ((pXSource->data3 == 3 || pXSource->data3 == 2) && (wall[index].cstat & CSTAT_WALL_MASKED))
|
||||
if ((pXSource->data3 == 3 || pXSource->data3 == 2) && (pWall->cstat & CSTAT_WALL_MASKED))
|
||||
seqKill(4, index);
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pXSource->data3 == 3 || pXSource->data3 == 1)
|
||||
seqSpawn(pXSource->data2, SS_WALL, index, -1);
|
||||
|
||||
if (pXSource->data3 == 3 || pXSource->data3 == 2) {
|
||||
|
||||
if (wall[index].nextwall < 0) {
|
||||
if (pWall->nextwall < 0) {
|
||||
if (pXSource->data3 == 3)
|
||||
seqSpawn(pXSource->data2, SS_WALL, index, -1);
|
||||
|
||||
} else {
|
||||
if (!(wall[index].cstat & CSTAT_WALL_MASKED))
|
||||
wall[index].cstat |= CSTAT_WALL_MASKED;
|
||||
}
|
||||
else {
|
||||
if (!(pWall->cstat & CSTAT_WALL_MASKED))
|
||||
pWall->cstat |= CSTAT_WALL_MASKED;
|
||||
|
||||
seqSpawn(pXSource->data2, SS_MASKED, index, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if (pXSource->data4 > 0)
|
||||
if (pXSource->data4 > 0)
|
||||
{
|
||||
int cx, cy, cz;
|
||||
cx = (wall[index].x + wall[wall[index].point2].x) >> 1;
|
||||
cy = (wall[index].y + wall[wall[index].point2].y) >> 1;
|
||||
cx = (pWall->x + pWall->point2Wall()->x) >> 1;
|
||||
cy = (pWall->y + pWall->point2Wall()->y) >> 1;
|
||||
int nSector = sectorofwall(index);
|
||||
int32_t ceilZ, floorZ;
|
||||
getzsofslope(nSector, cx, cy, &ceilZ, &floorZ);
|
||||
int32_t ceilZ2, floorZ2;
|
||||
getzsofslope(wall[index].nextsector, cx, cy, &ceilZ2, &floorZ2);
|
||||
getzsofslope(pWall->nextsector, cx, cy, &ceilZ2, &floorZ2);
|
||||
ceilZ = ClipLow(ceilZ, ceilZ2);
|
||||
floorZ = ClipHigh(floorZ, floorZ2);
|
||||
cz = (ceilZ + floorZ) >> 1;
|
||||
|
@ -3587,7 +3591,7 @@ void useSeqSpawnerGen(DBloodActor* sourceactor, int objType, int index, DBloodAc
|
|||
}
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
case OBJ_SPRITE:
|
||||
{
|
||||
auto pSprite = &iactor->s();
|
||||
|
|
Loading…
Reference in a new issue