From 24101f8e92dd365e7372e6aa57fe49f9114334d2 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@users.noreply.github.com>
Date: Mon, 31 Jan 2022 20:00:09 +0100
Subject: [PATCH] - Exhumed: second batch of refactoring writes to spr.pos.

---
 source/games/exhumed/src/grenade.cpp  | 12 +++---------
 source/games/exhumed/src/lavadude.cpp | 12 +++---------
 source/games/exhumed/src/lion.cpp     |  4 +---
 source/games/exhumed/src/mummy.cpp    |  6 ++----
 source/games/exhumed/src/ra.cpp       |  6 ++----
 source/games/exhumed/src/rex.cpp      |  4 +---
 source/games/exhumed/src/roach.cpp    |  4 +---
 source/games/exhumed/src/scorp.cpp    |  4 +---
 source/games/exhumed/src/wasp.cpp     |  6 ++----
 9 files changed, 16 insertions(+), 42 deletions(-)

diff --git a/source/games/exhumed/src/grenade.cpp b/source/games/exhumed/src/grenade.cpp
index eef58b8af..382c684e4 100644
--- a/source/games/exhumed/src/grenade.cpp
+++ b/source/games/exhumed/src/grenade.cpp
@@ -59,9 +59,7 @@ void ThrowGrenade(int nPlayer, int, int, int ecx, int push1)
 
     ChangeActorSect(pActor, PlayerList[nPlayer].pPlayerViewSect);
 
-    pActor->spr.pos.X = pPlayerActor->spr.pos.X;
-    pActor->spr.pos.Y = pPlayerActor->spr.pos.Y;
-    pActor->spr.pos.Z = pPlayerActor->spr.pos.Z;
+    pActor->set_int_pos(pPlayerActor->spr.pos);
 
     if (nAngle < 0) {
         nAngle = pPlayerActor->spr.ang;
@@ -104,9 +102,7 @@ void BuildGrenade(int nPlayer)
 
 	auto pPlayerActor = PlayerList[nPlayer].pActor;
 
-    pActor->spr.pos.X = pPlayerActor->spr.pos.X;
-    pActor->spr.pos.Y = pPlayerActor->spr.pos.Y;
-    pActor->spr.pos.Z = pPlayerActor->spr.pos.Z - 3840;
+    pActor->set_int_pos({ pPlayerActor->spr.pos.X, pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z - 3840 });
     pActor->spr.shade = -64;
     pActor->spr.xrepeat = 20;
     pActor->spr.yrepeat = 20;
@@ -177,9 +173,7 @@ void ExplodeGrenade(DExhumedActor* pActor)
         auto pPlayerActor = PlayerList[nPlayer].pActor;
         int nAngle = pPlayerActor->spr.ang;
 
-        pActor->spr.pos.Z = pPlayerActor->spr.pos.Z;
-        pActor->spr.pos.X = bcos(nAngle, -5) + pPlayerActor->spr.pos.X;
-        pActor->spr.pos.Y = bsin(nAngle, -5) + pPlayerActor->spr.pos.Y;
+        pActor->set_int_pos({ bcos(nAngle, -5) + pPlayerActor->spr.pos.X, bsin(nAngle, -5) + pPlayerActor->spr.pos.Y, pPlayerActor->spr.pos.Z });
 
         ChangeActorSect(pActor, pPlayerActor->sector());
 
diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp
index c2889594b..5bbbaca27 100644
--- a/source/games/exhumed/src/lavadude.cpp
+++ b/source/games/exhumed/src/lavadude.cpp
@@ -41,9 +41,7 @@ DExhumedActor* BuildLavaLimb(DExhumedActor* pActor, int move, int ebx)
 {
     auto pLimbActor = insertActor(pActor->sector(), 118);
 
-    pLimbActor->spr.pos.X = pActor->spr.pos.X;
-    pLimbActor->spr.pos.Y = pActor->spr.pos.Y;
-    pLimbActor->spr.pos.Z = pActor->spr.pos.Z - RandomLong() % ebx;
+    pLimbActor->set_int_pos({ pActor->spr.pos.X, pActor->spr.pos.Y, pActor->spr.pos.Z - RandomLong() % ebx });
     pLimbActor->spr.cstat = 0;
     pLimbActor->spr.shade = -127;
     pLimbActor->spr.pal = 1;
@@ -115,9 +113,7 @@ void BuildLava(DExhumedActor* pActor, int x, int y, int, sectortype* pSector, in
         ChangeActorStat(pActor, 118);
     }
 
-    pActor->spr.pos.X = x;
-    pActor->spr.pos.Y = y;
-    pActor->spr.pos.Z = pSector->floorz;
+    pActor->set_int_pos({ x, y, pSector->floorz });
     pActor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
     pActor->spr.xrepeat = 200;
     pActor->spr.yrepeat = 200;
@@ -292,9 +288,7 @@ void AILavaDude::Tick(RunListEvent* ev)
         if (pSector != pActor->sector())
         {
             ChangeActorSect(pActor, pSector);
-            pActor->spr.pos.X = x;
-            pActor->spr.pos.Y = y;
-            pActor->spr.pos.Z = z;
+            pActor->set_int_pos({ x, y, z });
 
             pActor->spr.ang = (pActor->spr.ang + ((RandomWord() & 0x3FF) + 1024)) & kAngleMask;
             pActor->spr.xvel = bcos(pActor->spr.ang);
diff --git a/source/games/exhumed/src/lion.cpp b/source/games/exhumed/src/lion.cpp
index d786fb7e6..6ba48176f 100644
--- a/source/games/exhumed/src/lion.cpp
+++ b/source/games/exhumed/src/lion.cpp
@@ -56,9 +56,7 @@ void BuildLion(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
         nAngle = pActor->spr.ang;
     }
 
-    pActor->spr.pos.X = x;
-    pActor->spr.pos.Y = y;
-    pActor->spr.pos.Z = z;
+    pActor->set_int_pos({ x, y, z });
     pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
     pActor->spr.clipdist = 60;
     pActor->spr.shade = -12;
diff --git a/source/games/exhumed/src/mummy.cpp b/source/games/exhumed/src/mummy.cpp
index fa87f1f99..8826ad26a 100644
--- a/source/games/exhumed/src/mummy.cpp
+++ b/source/games/exhumed/src/mummy.cpp
@@ -53,9 +53,7 @@ void BuildMummy(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
         ChangeActorStat(pActor, 102);
     }
 
-    pActor->spr.pos.X = x;
-    pActor->spr.pos.Y = y;
-    pActor->spr.pos.Z = z;
+    pActor->set_int_pos({ x, y, z });
     pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
     pActor->spr.shade = -12;
     pActor->spr.clipdist = 32;
@@ -450,7 +448,7 @@ void AIMummy::Damage(RunListEvent* ev)
         pActor->spr.xvel = 0;
         pActor->spr.yvel = 0;
         pActor->spr.zvel = 0;
-        pActor->spr.pos.Z = pActor->sector()->floorz;
+        pActor->set_int_z(pActor->sector()->floorz);
     }
     else
     {
diff --git a/source/games/exhumed/src/ra.cpp b/source/games/exhumed/src/ra.cpp
index 0b91391e8..d97009f86 100644
--- a/source/games/exhumed/src/ra.cpp
+++ b/source/games/exhumed/src/ra.cpp
@@ -100,7 +100,7 @@ void BuildRa(int nPlayer)
     pActor->spr.pal = 1;
     pActor->spr.xrepeat = 64;
     pActor->spr.yrepeat = 64;
-    pActor->spr.pos = pPlayerActor->spr.pos;
+    pActor->set_int_pos(pPlayerActor->spr.pos);
 
 //	GrabTimeSlot(3);
 
@@ -163,9 +163,7 @@ void MoveRaToEnemy(int nPlayer)
         pTarget = PlayerList[nPlayer].pActor;
     }
 
-    pActor->spr.pos.X = pTarget->spr.pos.X;
-    pActor->spr.pos.Y = pTarget->spr.pos.Y;
-    pActor->spr.pos.Z = pTarget->spr.pos.Z - GetActorHeight(pTarget);
+    pActor->set_int_pos({ pTarget->spr.pos.X, pTarget->spr.pos.Y, pTarget->spr.pos.Z - GetActorHeight(pTarget) });
 
     if (pActor->sector() != pTarget->sector()) {
         ChangeActorSect(pActor, pTarget->sector());
diff --git a/source/games/exhumed/src/rex.cpp b/source/games/exhumed/src/rex.cpp
index c970b0288..5b1ea5a73 100644
--- a/source/games/exhumed/src/rex.cpp
+++ b/source/games/exhumed/src/rex.cpp
@@ -53,9 +53,7 @@ void BuildRex(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector, i
         ChangeActorStat(pActor, 119);
     }
 
-    pActor->spr.pos.X = x;
-    pActor->spr.pos.Y = y;
-    pActor->spr.pos.Z = z;
+    pActor->set_int_pos({ x, y, z });
     pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
     pActor->spr.clipdist = 80;
     pActor->spr.shade = -12;
diff --git a/source/games/exhumed/src/roach.cpp b/source/games/exhumed/src/roach.cpp
index 1411a0ada..c4acfeaa5 100644
--- a/source/games/exhumed/src/roach.cpp
+++ b/source/games/exhumed/src/roach.cpp
@@ -50,9 +50,7 @@ void BuildRoach(int nType, DExhumedActor* pActor, int x, int y, int z, sectortyp
         angle = pActor->spr.ang;
     }
 
-    pActor->spr.pos.X = x;
-    pActor->spr.pos.Y = y;
-    pActor->spr.pos.Z = z;
+    pActor->set_int_pos({ x, y, z });
     pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
     pActor->spr.shade = -12;
     pActor->spr.xoffset = 0;
diff --git a/source/games/exhumed/src/scorp.cpp b/source/games/exhumed/src/scorp.cpp
index 7a443f636..484105d11 100644
--- a/source/games/exhumed/src/scorp.cpp
+++ b/source/games/exhumed/src/scorp.cpp
@@ -54,9 +54,7 @@ void BuildScorp(DExhumedActor* pActor, int x, int y, int z, sectortype* pSector,
         nAngle = pActor->spr.ang;
     }
 
-	pActor->spr.pos.X = x;
-    pActor->spr.pos.Y = y;
-    pActor->spr.pos.Z = z;
+	pActor->set_int_pos({ x, y, z });
     pActor->spr.cstat = CSTAT_SPRITE_BLOCK_ALL;
     pActor->spr.clipdist = 70;
     pActor->spr.shade = -12;
diff --git a/source/games/exhumed/src/wasp.cpp b/source/games/exhumed/src/wasp.cpp
index bae50b4aa..11937c3c8 100644
--- a/source/games/exhumed/src/wasp.cpp
+++ b/source/games/exhumed/src/wasp.cpp
@@ -46,9 +46,7 @@ DExhumedActor* BuildWasp(DExhumedActor* pActor, int x, int y, int z, sectortype*
     {
         pActor = insertActor(pSector, 107);
 
-        pActor->spr.pos.X = x;
-        pActor->spr.pos.Y = y;
-        pActor->spr.pos.Z = z;
+        pActor->set_int_pos({ x, y, z });
     }
     else
     {
@@ -334,7 +332,7 @@ void AIWasp::Tick(RunListEvent* ev)
     {
         auto pSector =pActor->sector();
 
-        pActor->spr.pos.Z += pActor->spr.zvel;
+        pActor->add_int_z(pActor->spr.zvel);
 
         if (pActor->spr.pos.Z >= pSector->floorz)
         {