- several x()'s in nnexts.cpp.

This commit is contained in:
Christoph Oelckers 2021-12-23 14:03:31 +01:00
parent 812a4ccd7b
commit aa3b930a4d

View file

@ -785,9 +785,7 @@ void nnExtInitModernStuff(TArray<DBloodActor*>& actors)
BloodStatIterator it2(kStatModernCondition); BloodStatIterator it2(kStatModernCondition);
while (auto iactor = it2.Next()) while (auto iactor = it2.Next())
{ {
XSPRITE* pXSprite = &iactor->x(); if (iactor->xspr.busyTime <= 0 || iactor->xspr.isTriggered) continue;
if (pXSprite->busyTime <= 0 || pXSprite->isTriggered) continue;
else if (gTrackingCondsCount >= kMaxTrackingConditions) else if (gTrackingCondsCount >= kMaxTrackingConditions)
I_Error("\nMax (%d) tracking conditions reached!", kMaxTrackingConditions); I_Error("\nMax (%d) tracking conditions reached!", kMaxTrackingConditions);
@ -796,7 +794,7 @@ void nnExtInitModernStuff(TArray<DBloodActor*>& actors)
for (auto iactor2 : actors) for (auto iactor2 : actors)
{ {
if (!iactor->exists() || !iactor2->hasX() || iactor2->xspr.txID != pXSprite->rxID || iactor2 == iactor) if (!iactor->exists() || !iactor2->hasX() || iactor2->xspr.txID != iactor->xspr.rxID || iactor2 == iactor)
continue; continue;
XSPRITE* pXSpr = &iactor2->x(); XSPRITE* pXSpr = &iactor2->x();
@ -819,7 +817,7 @@ void nnExtInitModernStuff(TArray<DBloodActor*>& actors)
for (auto& sect: sector) for (auto& sect: sector)
{ {
if (!sect.hasX() || sect.xs().txID != pXSprite->rxID) continue; if (!sect.hasX() || sect.xs().txID != iactor->xspr.rxID) continue;
else if (count >= kMaxTracedObjects) else if (count >= kMaxTracedObjects)
condError(iactor, "Max(%d) objects to track reached for condition #%d, RXID: %d!"); condError(iactor, "Max(%d) objects to track reached for condition #%d, RXID: %d!");
@ -829,7 +827,7 @@ void nnExtInitModernStuff(TArray<DBloodActor*>& actors)
for(auto& wal : wall) for(auto& wal : wall)
{ {
if (!wal.hasX() || wal.xw().txID != pXSprite->rxID) if (!wal.hasX() || wal.xw().txID != iactor->xspr.rxID)
continue; continue;
switch (wal.type) { switch (wal.type) {
@ -845,8 +843,8 @@ void nnExtInitModernStuff(TArray<DBloodActor*>& actors)
pCond->obj[count++].cmd = wal.xw().command; pCond->obj[count++].cmd = wal.xw().command;
} }
if (pXSprite->data1 > kCondGameMax && count == 0) if (iactor->xspr.data1 > kCondGameMax && count == 0)
Printf(PRINT_HIGH, "No objects to track found for condition #%d, RXID: %d!", iactor->GetIndex(), pXSprite->rxID); Printf(PRINT_HIGH, "No objects to track found for condition #%d, RXID: %d!", iactor->GetIndex(), iactor->xspr.rxID);
pCond->length = count; pCond->length = count;
pCond->actor = iactor; pCond->actor = iactor;
@ -2566,7 +2564,6 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
break; break;
case OBJ_SPRITE: case OBJ_SPRITE:
{ {
XSPRITE* pXSprite = &targetactor->x();
bool thing2debris = false; bool thing2debris = false;
int old = -1; int old = -1;
@ -2600,7 +2597,7 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
break; break;
default: default:
// store physics attributes in xsprite to avoid setting hitag for modern types! // store physics attributes in xsprite to avoid setting hitag for modern types!
int flags = (pXSprite->physAttr != 0) ? pXSprite->physAttr : 0; int flags = (targetactor->xspr.physAttr != 0) ? targetactor->xspr.physAttr : 0;
int oldFlags = flags; int oldFlags = flags;
if (thing2debris) if (thing2debris)
@ -2614,7 +2611,7 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
targetactor->spr.flags &= ~(kPhysMove | kPhysGravity | kPhysFalling); targetactor->spr.flags &= ~(kPhysMove | kPhysGravity | kPhysFalling);
targetactor->xvel = targetactor->yvel = targetactor->zvel = 0; targetactor->xvel = targetactor->yvel = targetactor->zvel = 0;
pXSprite->restState = pXSprite->state; targetactor->xspr.restState = targetactor->xspr.state;
} }
else else
@ -2730,7 +2727,7 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
if (nIndex != -1) if (nIndex != -1)
{ {
pXSprite->physAttr = flags; // just update physics attributes targetactor->xspr.physAttr = flags; // just update physics attributes
} }
else if ((nIndex = debrisGetFreeIndex()) < 0) else if ((nIndex = debrisGetFreeIndex()) < 0)
{ {
@ -2738,16 +2735,16 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
} }
else else
{ {
pXSprite->physAttr = flags; // update physics attributes targetactor->xspr.physAttr = flags; // update physics attributes
// allow things to became debris, so they use different physics... // allow things to became debris, so they use different physics...
if (targetactor->spr.statnum == kStatThing) ChangeActorStat(targetactor, 0); if (targetactor->spr.statnum == kStatThing) ChangeActorStat(targetactor, 0);
// set random goal ang for swimming so they start turning // set random goal ang for swimming so they start turning
if ((flags & kPhysDebrisSwim) && !targetactor->xvel && !targetactor->yvel && !targetactor->zvel) if ((flags & kPhysDebrisSwim) && !targetactor->xvel && !targetactor->yvel && !targetactor->zvel)
pXSprite->goalAng = (targetactor->spr.ang + Random3(kAng45)) & 2047; targetactor->xspr.goalAng = (targetactor->spr.ang + Random3(kAng45)) & 2047;
if (pXSprite->physAttr & kPhysDebrisVector) if (targetactor->xspr.physAttr & kPhysDebrisVector)
targetactor->spr.cstat |= CSTAT_SPRITE_BLOCK_HITSCAN; targetactor->spr.cstat |= CSTAT_SPRITE_BLOCK_HITSCAN;
gPhysSpritesList[nIndex] = targetactor; gPhysSpritesList[nIndex] = targetactor;
@ -2761,7 +2758,7 @@ void usePropertiesChanger(DBloodActor* sourceactor, int objType, sectortype* pSe
else if (nIndex != -1) else if (nIndex != -1)
{ {
pXSprite->physAttr = flags; targetactor->xspr.physAttr = flags;
targetactor->xvel = targetactor->yvel = targetactor->zvel = 0; targetactor->xvel = targetactor->yvel = targetactor->zvel = 0;
if (targetactor->spr.lotag >= kThingBase && targetactor->spr.lotag < kThingMax) if (targetactor->spr.lotag >= kThingBase && targetactor->spr.lotag < kThingMax)
ChangeActorStat(targetactor, kStatThing); // if it was a thing - restore statnum ChangeActorStat(targetactor, kStatThing); // if it was a thing - restore statnum
@ -6967,12 +6964,11 @@ void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene)
auto initiator = pQavScene->initiator; auto initiator = pQavScene->initiator;
if (initiator->hasX()) if (initiator->hasX())
{ {
XSPRITE* pXSprite = &initiator->x(); if (initiator->xspr.waitTime > 0 && --initiator->xspr.sysData1 <= 0)
if (pXSprite->waitTime > 0 && --pXSprite->sysData1 <= 0)
{ {
if (pXSprite->txID >= kChannelUser) if (initiator->xspr.txID >= kChannelUser)
{ {
for (int i = bucketHead[pXSprite->txID]; i < bucketHead[pXSprite->txID + 1]; i++) for (int i = bucketHead[initiator->xspr.txID]; i < bucketHead[initiator->xspr.txID + 1]; i++)
{ {
if (rxBucket[i].isActor()) if (rxBucket[i].isActor())
{ {
@ -6982,13 +6978,13 @@ void playerQavSceneProcess(PLAYER* pPlayer, QAVSCENE* pQavScene)
auto pXSpr = &rxactor->x(); auto pXSpr = &rxactor->x();
if (rxactor->spr.type == kModernPlayerControl && pXSpr->command == 67) if (rxactor->spr.type == kModernPlayerControl && pXSpr->command == 67)
{ {
if (pXSpr->data2 == pXSprite->data2 || pXSpr->locked) continue; if (pXSpr->data2 == initiator->xspr.data2 || pXSpr->locked) continue;
else trPlayerCtrlStartScene(rxactor, pPlayer, true); else trPlayerCtrlStartScene(rxactor, pPlayer, true);
return; return;
} }
} }
nnExtTriggerObject(rxBucket[i], pXSprite->command); nnExtTriggerObject(rxBucket[i], initiator->xspr.command);
} }
} }
@ -7293,11 +7289,10 @@ bool setDataValueOfObject(int objType, sectortype* sect, walltype* wal, DBloodAc
{ {
case OBJ_SPRITE: case OBJ_SPRITE:
{ {
XSPRITE* pXSprite = &objActor->x();
int type = objActor->spr.type; int type = objActor->spr.type;
// exceptions // exceptions
if (objActor->IsDudeActor() && pXSprite->health <= 0) return true; if (objActor->IsDudeActor() && objActor->xspr.health <= 0) return true;
switch (type) switch (type)
{ {
case kThingBloodBits: case kThingBloodBits:
@ -7310,11 +7305,11 @@ bool setDataValueOfObject(int objType, sectortype* sect, walltype* wal, DBloodAc
switch (dataIndex) switch (dataIndex)
{ {
case 1: case 1:
pXSprite->data1 = value; objActor->xspr.data1 = value;
switch (type) switch (type)
{ {
case kSwitchCombo: case kSwitchCombo:
if (value == pXSprite->data2) SetSpriteState(objActor, 1); if (value == objActor->xspr.data2) SetSpriteState(objActor, 1);
else SetSpriteState(objActor, 0); else SetSpriteState(objActor, 0);
break; break;
case kDudeModernCustom: case kDudeModernCustom:
@ -7326,7 +7321,7 @@ bool setDataValueOfObject(int objType, sectortype* sect, walltype* wal, DBloodAc
} }
return true; return true;
case 2: case 2:
pXSprite->data2 = value; objActor->xspr.data2 = value;
switch (type) switch (type)
{ {
case kDudeModernCustom: case kDudeModernCustom:
@ -7341,17 +7336,17 @@ bool setDataValueOfObject(int objType, sectortype* sect, walltype* wal, DBloodAc
} }
return true; return true;
case 3: case 3:
pXSprite->data3 = value; objActor->xspr.data3 = value;
switch (type) switch (type)
{ {
case kDudeModernCustom: case kDudeModernCustom:
case kDudeModernCustomBurning: case kDudeModernCustomBurning:
pXSprite->sysData1 = value; objActor->xspr.sysData1 = value;
break; break;
} }
return true; return true;
case 4: case 4:
pXSprite->data4 = value; objActor->xspr.data4 = value;
return true; return true;
default: default:
return false; return false;
@ -8863,11 +8858,10 @@ void seqSpawnerOffSameTx(DBloodActor* actor)
while (auto iactor = it.Next()) while (auto iactor = it.Next())
{ {
if (iactor->spr.type != kModernSeqSpawner || !iactor->hasX() || iactor == actor) continue; if (iactor->spr.type != kModernSeqSpawner || !iactor->hasX() || iactor == actor) continue;
XSPRITE* pXSprite = &iactor->x(); if (iactor->xspr.txID == actor->xspr.txID && iactor->xspr.state == 1)
if (pXSprite->txID == actor->xspr.txID && pXSprite->state == 1)
{ {
evKillActor(iactor); evKillActor(iactor);
pXSprite->state = 0; iactor->xspr.state = 0;
} }
} }
} }