- lots of boilerplate sections to get a pXSector pointer replaced.

Looks like this was originally an inline function, judging from how this was repeated all over again.
This commit is contained in:
Christoph Oelckers 2021-11-19 18:35:55 +01:00
parent 2e8e5544c5
commit adaa132515
3 changed files with 27 additions and 117 deletions

View file

@ -185,12 +185,9 @@ static void beastThinkGoto(DBloodActor* actor)
auto pSprite = &actor->s(); auto pSprite = &actor->s();
assert(pSprite->type >= kDudeBase && pSprite->type < kDudeMax); assert(pSprite->type >= kDudeBase && pSprite->type < kDudeMax);
DUDEINFO* pDudeInfo = getDudeInfo(pSprite->type); DUDEINFO* pDudeInfo = getDudeInfo(pSprite->type);
XSECTOR* pXSector; auto pSector = pSprite->sector();
int nXSector = sector[pSprite->sectnum].extra; auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int dx = pXSprite->targetX - pSprite->x; int dx = pXSprite->targetX - pSprite->x;
int dy = pXSprite->targetY - pSprite->y; int dy = pXSprite->targetY - pSprite->y;
int nAngle = getangle(dx, dy); int nAngle = getangle(dx, dy);
@ -208,15 +205,12 @@ static void beastThinkGoto(DBloodActor* actor)
static void beastThinkChase(DBloodActor* actor) static void beastThinkChase(DBloodActor* actor)
{ {
auto pSprite = &actor->s(); auto const pSprite = &actor->s();
if (actor->GetTarget() == nullptr) if (actor->GetTarget() == nullptr)
{ {
XSECTOR* pXSector; auto pSector = pSprite->sector();
int nXSector = sector[pSprite->sectnum].extra; auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &beastSwimSearch); aiNewState(actor, &beastSwimSearch);
else else
@ -231,14 +225,12 @@ static void beastThinkChase(DBloodActor* actor)
int dx = pTarget->x - pSprite->x; int dx = pTarget->x - pSprite->x;
int dy = pTarget->y - pSprite->y; int dy = pTarget->y - pSprite->y;
aiChooseDirection(actor, getangle(dx, dy)); aiChooseDirection(actor, getangle(dx, dy));
auto pSector = pSprite->sector();
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
if (pXTarget->health == 0) if (pXTarget->health == 0)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &beastSwimSearch); aiNewState(actor, &beastSwimSearch);
else else
@ -247,12 +239,6 @@ static void beastThinkChase(DBloodActor* actor)
} }
if (IsPlayerSprite(pTarget) && powerupCheck(&gPlayer[pTarget->type - kDudePlayer1], kPwUpShadowCloak) > 0) if (IsPlayerSprite(pTarget) && powerupCheck(&gPlayer[pTarget->type - kDudePlayer1], kPwUpShadowCloak) > 0)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &beastSwimSearch); aiNewState(actor, &beastSwimSearch);
else else
@ -273,12 +259,6 @@ static void beastThinkChase(DBloodActor* actor)
if (nDist < 0x1400 && nDist > 0xa00 && abs(nDeltaAngle) < 85 && (pTarget->flags & 2) if (nDist < 0x1400 && nDist > 0xa00 && abs(nDeltaAngle) < 85 && (pTarget->flags & 2)
&& IsPlayerSprite(pTarget) && Chance(0x8000)) && IsPlayerSprite(pTarget) && Chance(0x8000))
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0); int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0);
if (pXTarget->health > (unsigned)gPlayerTemplate[0].startHealth / 2) if (pXTarget->health > (unsigned)gPlayerTemplate[0].startHealth / 2)
{ {
@ -311,12 +291,6 @@ static void beastThinkChase(DBloodActor* actor)
} }
if (nDist < 921 && abs(nDeltaAngle) < 28) if (nDist < 921 && abs(nDeltaAngle) < 28)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0); int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0);
switch (hit) switch (hit)
{ {
@ -355,12 +329,6 @@ static void beastThinkChase(DBloodActor* actor)
} }
} }
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &beastSwimGoto); aiNewState(actor, &beastSwimGoto);
else else

View file

@ -94,12 +94,10 @@ static void calebThinkGoto(DBloodActor* actor)
auto pSprite = &actor->s(); auto pSprite = &actor->s();
assert(pSprite->type >= kDudeBase && pSprite->type < kDudeMax); assert(pSprite->type >= kDudeBase && pSprite->type < kDudeMax);
DUDEINFO* pDudeInfo = getDudeInfo(pSprite->type); DUDEINFO* pDudeInfo = getDudeInfo(pSprite->type);
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra; auto pSector = pSprite->sector();
if (nXSector > 0) auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int dx = pXSprite->targetX - pSprite->x; int dx = pXSprite->targetX - pSprite->x;
int dy = pXSprite->targetY - pSprite->y; int dy = pXSprite->targetY - pSprite->y;
int nAngle = getangle(dx, dy); int nAngle = getangle(dx, dy);
@ -117,15 +115,12 @@ static void calebThinkGoto(DBloodActor* actor)
static void calebThinkChase(DBloodActor* actor) static void calebThinkChase(DBloodActor* actor)
{ {
auto pSprite = &actor->s(); auto const pSprite = &actor->s();
auto pSector = pSprite->sector();
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
if (actor->GetTarget() == nullptr) if (actor->GetTarget() == nullptr)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &tinycalebSwimSearch); aiNewState(actor, &tinycalebSwimSearch);
else else
@ -141,12 +136,6 @@ static void calebThinkChase(DBloodActor* actor)
aiChooseDirection(actor, getangle(dx, dy)); aiChooseDirection(actor, getangle(dx, dy));
if (pXTarget->health == 0) if (pXTarget->health == 0)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &tinycalebSwimSearch); aiNewState(actor, &tinycalebSwimSearch);
else else
@ -158,12 +147,6 @@ static void calebThinkChase(DBloodActor* actor)
} }
if (IsPlayerSprite(pTarget) && powerupCheck(&gPlayer[pTarget->type - kDudePlayer1], kPwUpShadowCloak) > 0) if (IsPlayerSprite(pTarget) && powerupCheck(&gPlayer[pTarget->type - kDudePlayer1], kPwUpShadowCloak) > 0)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &tinycalebSwimSearch); aiNewState(actor, &tinycalebSwimSearch);
else else
@ -183,12 +166,6 @@ static void calebThinkChase(DBloodActor* actor)
actor->dudeSlope = nDist == 0 ? 0 : DivScale(pTarget->z-pSprite->z, nDist, 10); actor->dudeSlope = nDist == 0 ? 0 : DivScale(pTarget->z-pSprite->z, nDist, 10);
if (nDist < 0x599 && abs(nDeltaAngle) < 28) if (nDist < 0x599 && abs(nDeltaAngle) < 28)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0); int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0);
switch (hit) switch (hit)
{ {
@ -227,12 +204,6 @@ static void calebThinkChase(DBloodActor* actor)
} }
} }
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &tinycalebSwimGoto); aiNewState(actor, &tinycalebSwimGoto);
else else

View file

@ -85,12 +85,10 @@ static void gillThinkGoto(DBloodActor* actor)
auto pSprite = &actor->s(); auto pSprite = &actor->s();
assert(pSprite->type >= kDudeBase && pSprite->type < kDudeMax); assert(pSprite->type >= kDudeBase && pSprite->type < kDudeMax);
DUDEINFO* pDudeInfo = getDudeInfo(pSprite->type); DUDEINFO* pDudeInfo = getDudeInfo(pSprite->type);
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra; auto pSector = pSprite->sector();
if (nXSector > 0) auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int dx = pXSprite->targetX - pSprite->x; int dx = pXSprite->targetX - pSprite->x;
int dy = pXSprite->targetY - pSprite->y; int dy = pXSprite->targetY - pSprite->y;
int nAngle = getangle(dx, dy); int nAngle = getangle(dx, dy);
@ -108,15 +106,12 @@ static void gillThinkGoto(DBloodActor* actor)
static void gillThinkChase(DBloodActor* actor) static void gillThinkChase(DBloodActor* actor)
{ {
auto pSprite = &actor->s(); auto const pSprite = &actor->s();
auto pSector = pSprite->sector();
auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr;
if (actor->GetTarget() == nullptr) if (actor->GetTarget() == nullptr)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &gillBeastSwimSearch); aiNewState(actor, &gillBeastSwimSearch);
else else
@ -133,12 +128,6 @@ static void gillThinkChase(DBloodActor* actor)
aiChooseDirection(actor, getangle(dx, dy)); aiChooseDirection(actor, getangle(dx, dy));
if (pXTarget->health == 0) if (pXTarget->health == 0)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &gillBeastSwimSearch); aiNewState(actor, &gillBeastSwimSearch);
else else
@ -147,12 +136,6 @@ static void gillThinkChase(DBloodActor* actor)
} }
if (IsPlayerSprite(pTarget) && powerupCheck(&gPlayer[pTarget->type - kDudePlayer1], kPwUpShadowCloak) > 0) if (IsPlayerSprite(pTarget) && powerupCheck(&gPlayer[pTarget->type - kDudePlayer1], kPwUpShadowCloak) > 0)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &gillBeastSwimSearch); aiNewState(actor, &gillBeastSwimSearch);
else else
@ -172,12 +155,6 @@ static void gillThinkChase(DBloodActor* actor)
actor->dudeSlope = nDist == 0 ? 0 : DivScale(pTarget->z - pSprite->z, nDist, 10); actor->dudeSlope = nDist == 0 ? 0 : DivScale(pTarget->z - pSprite->z, nDist, 10);
if (nDist < 921 && abs(nDeltaAngle) < 28) if (nDist < 921 && abs(nDeltaAngle) < 28)
{ {
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0); int hit = HitScan(actor, pSprite->z, dx, dy, 0, CLIPMASK1, 0);
switch (hit) switch (hit)
{ {
@ -216,12 +193,6 @@ static void gillThinkChase(DBloodActor* actor)
} }
} }
XSECTOR* pXSector;
int nXSector = sector[pSprite->sectnum].extra;
if (nXSector > 0)
pXSector = &xsector[nXSector];
else
pXSector = NULL;
if (pXSector && pXSector->Underwater) if (pXSector && pXSector->Underwater)
aiNewState(actor, &gillBeastSwimGoto); aiNewState(actor, &gillBeastSwimGoto);
else else