- floatified VDoorBusy

This commit is contained in:
Christoph Oelckers 2022-09-27 20:55:12 +02:00
parent 55dea1d348
commit 4eeeb00c1b

View file

@ -1151,19 +1151,19 @@ DBloodActor* GetHighestSprite(sectortype* pSector, int nStatus, double* z)
// //
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
DBloodActor* GetCrushedSpriteExtents(sectortype* pSector, int* pzTop, int* pzBot) DBloodActor* GetCrushedSpriteExtents(sectortype* pSector, double* pzTop, double* pzBot)
{ {
assert(pzTop != NULL && pzBot != NULL); assert(pzTop != NULL && pzBot != NULL);
assert(pSector); assert(pSector);
DBloodActor* found = nullptr; DBloodActor* found = nullptr;
int foundz = pSector->int_ceilingz(); double foundz = pSector->ceilingz;
BloodSectIterator it(pSector); BloodSectIterator it(pSector);
while (auto actor = it.Next()) while (auto actor = it.Next())
{ {
if (actor->spr.statnum == kStatDude || actor->spr.statnum == kStatThing) if (actor->spr.statnum == kStatDude || actor->spr.statnum == kStatThing)
{ {
int top, bottom; double top, bottom;
GetActorExtents(actor, &top, &bottom); GetActorExtents(actor, &top, &bottom);
if (foundz > top) if (foundz > top)
{ {
@ -1292,12 +1292,13 @@ int VDoorBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
vbp = 65536 / ClipLow((120 * pXSector->busyTimeA) / 10, 1); vbp = 65536 / ClipLow((120 * pXSector->busyTimeA) / 10, 1);
else else
vbp = -65536 / ClipLow((120 * pXSector->busyTimeB) / 10, 1); vbp = -65536 / ClipLow((120 * pXSector->busyTimeB) / 10, 1);
int top, bottom;
double top, bottom;
auto actor = GetCrushedSpriteExtents(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());
if (pXSector->int_onCeilZ() > pXSector->int_offCeilZ() || pXSector->int_onFloorZ() < pXSector->int_offFloorZ()) if (pXSector->onCeilZ > pXSector->offCeilZ || pXSector->onFloorZ < pXSector->offFloorZ)
{ {
if (pXSector->interruptable) if (pXSector->interruptable)
{ {
@ -1329,7 +1330,7 @@ int VDoorBusy(sectortype* pSector, unsigned int a2, DBloodActor* initiator)
else if (actor && a2 < pXSector->busy) else if (actor && a2 < pXSector->busy)
{ {
assert(actor->hasX()); assert(actor->hasX());
if (pXSector->int_offCeilZ() > pXSector->int_onCeilZ() || pXSector->int_offFloorZ() < pXSector->int_onFloorZ()) if (pXSector->offCeilZ > pXSector->onCeilZ || pXSector->offFloorZ < pXSector->onFloorZ)
{ {
if (pXSector->interruptable) if (pXSector->interruptable)
{ {