diff --git a/source/games/blood/src/aibeast.cpp b/source/games/blood/src/aibeast.cpp index b1de27c84..0924ae0c4 100644 --- a/source/games/blood/src/aibeast.cpp +++ b/source/games/blood/src/aibeast.cpp @@ -174,10 +174,9 @@ static void beastThinkGoto(DBloodActor* actor) auto pSector = actor->sector(); auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { @@ -325,10 +324,9 @@ static void beastThinkSwimGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &beastSwimSearch); @@ -398,9 +396,8 @@ static void beastMoveForward(DBloodActor* actor) actor->set_int_ang((actor->int_ang() + ClipRange(nAng, -nTurnRange, nTurnRange)) & 2047); if (abs(nAng) > 341) return; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (nDist <= 0x400 && Random(64) < 32) return; actor->vel.X += MulScale(pDudeInfo->frontSpeed, Cos(actor->int_ang()), 30); @@ -419,9 +416,8 @@ static void sub_628A0(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Random(64) < 32 && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -455,10 +451,9 @@ static void sub_62AE0(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); int dz = z2 - z; - int nDist = approxDist(dx, dy); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -490,10 +485,9 @@ static void sub_62D7C(DBloodActor* actor) actor->spr.angle += DAngle90; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); int dz = (z2 - z) << 3; - int nDist = approxDist(dx, dy); if (Chance(0x4000) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aiboneel.cpp b/source/games/blood/src/aiboneel.cpp index eac9b1271..b801e0df5 100644 --- a/source/games/blood/src/aiboneel.cpp +++ b/source/games/blood/src/aiboneel.cpp @@ -152,10 +152,9 @@ static void eelThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &eelSearch); @@ -330,9 +329,8 @@ static void eelMoveForward(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (nDist <= 0x399) return; int nCos = Cos(actor->int_ang()); @@ -359,9 +357,8 @@ static void eelMoveSwoop(DBloodActor* actor) int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 26) / 120) / 120) << 2; if (abs(nAng) > 341) return; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x8000) && nDist <= 0x399) return; int nCos = Cos(actor->int_ang()); @@ -386,9 +383,8 @@ static void eelMoveAscend(DBloodActor* actor) int nAccel = (pDudeInfo->frontSpeed - (((4 - gGameOptions.nDifficulty) << 26) / 120) / 120) << 2; if (abs(nAng) > 341) return; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x4000) && nDist <= 0x399) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aiburn.cpp b/source/games/blood/src/aiburn.cpp index 1c788e22c..7eaed153a 100644 --- a/source/games/blood/src/aiburn.cpp +++ b/source/games/blood/src/aiburn.cpp @@ -84,10 +84,9 @@ static void burnThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { diff --git a/source/games/blood/src/aicaleb.cpp b/source/games/blood/src/aicaleb.cpp index e0fe0577c..95c52083e 100644 --- a/source/games/blood/src/aicaleb.cpp +++ b/source/games/blood/src/aicaleb.cpp @@ -94,10 +94,9 @@ static void calebThinkGoto(DBloodActor* actor) auto pSector = actor->sector(); auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { @@ -212,10 +211,9 @@ static void calebThinkSwimGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &tinycalebSwimSearch); @@ -284,9 +282,8 @@ static void sub_65D04(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Random(64) < 32 && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -321,10 +318,9 @@ static void sub_65F44(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); int dz = z2 - z; - int nDist = approxDist(dx, dy); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -357,10 +353,9 @@ static void sub_661E0(DBloodActor* actor) actor->spr.angle += DAngle90; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); int dz = (z2 - z) << 3; - int nDist = approxDist(dx, dy); if (Chance(0x4000) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aicerber.cpp b/source/games/blood/src/aicerber.cpp index 52c64dddf..e50730f54 100644 --- a/source/games/blood/src/aicerber.cpp +++ b/source/games/blood/src/aicerber.cpp @@ -298,10 +298,9 @@ static void cerberusThinkGoto(DBloodActor* actor) return; } DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { diff --git a/source/games/blood/src/aicult.cpp b/source/games/blood/src/aicult.cpp index 00da45ecc..e0daaa4ba 100644 --- a/source/games/blood/src/aicult.cpp +++ b/source/games/blood/src/aicult.cpp @@ -194,10 +194,9 @@ static void cultThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 5120 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { diff --git a/source/games/blood/src/aigarg.cpp b/source/games/blood/src/aigarg.cpp index d2efce9e2..c0bfcc72c 100644 --- a/source/games/blood/src/aigarg.cpp +++ b/source/games/blood/src/aigarg.cpp @@ -264,10 +264,9 @@ static void gargThinkGoto(DBloodActor* actor) return; } DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &gargoyleFSearch); @@ -533,9 +532,8 @@ static void gargMoveForward(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if ((unsigned int)Random(64) < 32 && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -568,9 +566,8 @@ static void gargMoveSlow(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -609,9 +606,8 @@ static void gargMoveSwoop(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -649,9 +645,8 @@ static void gargMoveFly(DBloodActor* actor) actor->spr.angle += DAngle90; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x4000) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aighost.cpp b/source/games/blood/src/aighost.cpp index 5f0adc55c..adc2ba4a6 100644 --- a/source/games/blood/src/aighost.cpp +++ b/source/games/blood/src/aighost.cpp @@ -243,10 +243,9 @@ static void ghostThinkGoto(DBloodActor* actor) return; } DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &ghostSearch); @@ -429,9 +428,8 @@ static void ghostMoveForward(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if ((unsigned int)Random(64) < 32 && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -464,9 +462,8 @@ static void ghostMoveSlow(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -502,9 +499,8 @@ static void ghostMoveSwoop(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -539,9 +535,8 @@ static void ghostMoveFly(DBloodActor* actor) actor->spr.angle += DAngle90; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Chance(0x4000) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aigilbst.cpp b/source/games/blood/src/aigilbst.cpp index f2f890cb9..7010cd482 100644 --- a/source/games/blood/src/aigilbst.cpp +++ b/source/games/blood/src/aigilbst.cpp @@ -85,10 +85,9 @@ static void gillThinkGoto(DBloodActor* actor) auto pSector = actor->sector(); auto pXSector = pSector->hasX() ? &pSector->xs() : nullptr; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { @@ -199,10 +198,9 @@ static void gillThinkSwimGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &gillBeastSwimSearch); @@ -274,9 +272,8 @@ static void sub_6CB00(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if (Random(64) < 32 && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -310,10 +307,9 @@ static void sub_6CD74(DBloodActor* actor) actor->xspr.goalAng = (actor->int_ang() + 512) & 2047; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); int dz = z2 - z; - int nDist = approxDist(dx, dy); if (Chance(0x600) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); @@ -345,10 +341,9 @@ static void sub_6D03C(DBloodActor* actor) actor->spr.angle += DAngle90; return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); int dz = (z2 - z) << 3; - int nDist = approxDist(dx, dy); if (Chance(0x4000) && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aihand.cpp b/source/games/blood/src/aihand.cpp index f0ee3891f..ab870dd95 100644 --- a/source/games/blood/src/aihand.cpp +++ b/source/games/blood/src/aihand.cpp @@ -66,10 +66,9 @@ static void handThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &handSearch); diff --git a/source/games/blood/src/aihound.cpp b/source/games/blood/src/aihound.cpp index d6534f943..dd2c307b6 100644 --- a/source/games/blood/src/aihound.cpp +++ b/source/games/blood/src/aihound.cpp @@ -81,10 +81,9 @@ static void houndThinkGoto(DBloodActor* actor) } DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &houndSearch); diff --git a/source/games/blood/src/aiinnoc.cpp b/source/games/blood/src/aiinnoc.cpp index 8e0be0bb2..0fe22b2d5 100644 --- a/source/games/blood/src/aiinnoc.cpp +++ b/source/games/blood/src/aiinnoc.cpp @@ -50,10 +50,9 @@ static void innocThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &innocentSearch); diff --git a/source/games/blood/src/aipod.cpp b/source/games/blood/src/aipod.cpp index 746f5b412..cf2e09f2c 100644 --- a/source/games/blood/src/aipod.cpp +++ b/source/games/blood/src/aipod.cpp @@ -139,10 +139,9 @@ static void aiPodMove(DBloodActor* actor) } DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) { switch (actor->spr.type) { diff --git a/source/games/blood/src/airat.cpp b/source/games/blood/src/airat.cpp index 44f511418..1837861b0 100644 --- a/source/games/blood/src/airat.cpp +++ b/source/games/blood/src/airat.cpp @@ -62,10 +62,9 @@ static void ratThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &ratSearch); diff --git a/source/games/blood/src/aispid.cpp b/source/games/blood/src/aispid.cpp index f18a84e8f..d5b5b402d 100644 --- a/source/games/blood/src/aispid.cpp +++ b/source/games/blood/src/aispid.cpp @@ -136,10 +136,9 @@ void SpidBirthSeqCallback(int, DBloodActor* actor) if (!actor->ValidateTarget(__FUNCTION__)) return; auto target = actor->GetTarget(); DUDEEXTRA_STATS* pDudeExtraE = &actor->dudeExtra.stats; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); DBloodActor* spawned = nullptr; if (target->IsPlayerActor() && pDudeExtraE->birthCounter < 10) @@ -171,10 +170,9 @@ static void spidThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &spidSearch); diff --git a/source/games/blood/src/aitchern.cpp b/source/games/blood/src/aitchern.cpp index 60ad3bf01..91e1b7a1d 100644 --- a/source/games/blood/src/aitchern.cpp +++ b/source/games/blood/src/aitchern.cpp @@ -265,10 +265,9 @@ static void sub_72850(DBloodActor* actor) return; } DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &tchernobogSearch); diff --git a/source/games/blood/src/aiunicult.cpp b/source/games/blood/src/aiunicult.cpp index 051f80f00..85b58ddd0 100644 --- a/source/games/blood/src/aiunicult.cpp +++ b/source/games/blood/src/aiunicult.cpp @@ -419,14 +419,14 @@ static void unicultThinkGoto(DBloodActor* actor) return; } - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); // if reached target, change to search mode - if (approxDist(dx, dy) < 5120 && abs(actor->int_ang() - nAngle) < getDudeInfo(actor->spr.type)->periphery) + if (nDist < 5120 && abs(actor->int_ang() - nAngle) < getDudeInfo(actor->spr.type)->periphery) { if (spriteIsUnderwater(actor, false)) aiGenDudeNewState(actor, &genDudeSearchW); else aiGenDudeNewState(actor, &genDudeSearchL); @@ -1122,9 +1122,8 @@ void aiGenDudeMoveForward(DBloodActor* actor) return; if (actor->GetTarget() == nullptr) actor->spr.angle += DAngle45; - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nDist = approxDist(dvec); if ((unsigned int)Random(64) < 32 && nDist <= 0x400) return; int nCos = Cos(actor->int_ang()); diff --git a/source/games/blood/src/aizomba.cpp b/source/games/blood/src/aizomba.cpp index e2132acce..f519ba5bc 100644 --- a/source/games/blood/src/aizomba.cpp +++ b/source/games/blood/src/aizomba.cpp @@ -91,10 +91,9 @@ static void zombaThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 921 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &zombieASearch); diff --git a/source/games/blood/src/aizombf.cpp b/source/games/blood/src/aizombf.cpp index 31d949afb..bfb79b4f3 100644 --- a/source/games/blood/src/aizombf.cpp +++ b/source/games/blood/src/aizombf.cpp @@ -90,10 +90,9 @@ static void zombfThinkGoto(DBloodActor* actor) { assert(actor->spr.type >= kDudeBase && actor->spr.type < kDudeMax); DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type); - int dx = actor->xspr.int_TargetPos().X - actor->int_pos().X; - int dy = actor->xspr.int_TargetPos().Y - actor->int_pos().Y; - int nAngle = getangle(dx, dy); - int nDist = approxDist(dx, dy); + auto dvec = actor->xspr.TargetPos.XY() - actor->spr.pos.XY(); + int nAngle = getangle(dvec); + int nDist = approxDist(dvec); aiChooseDirection(actor, nAngle); if (nDist < 512 && abs(actor->int_ang() - nAngle) < pDudeInfo->periphery) aiNewState(actor, &zombieFSearch);