From f115f9427d58f738174b04e176e9320964246ffd Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@users.noreply.github.com>
Date: Mon, 2 Jan 2023 18:46:36 +0100
Subject: [PATCH] - got rid of a few more picnum references in Blood.

---
 source/games/blood/src/aiunicult.cpp     | 3 ++-
 source/games/blood/src/animatesprite.cpp | 4 ++--
 source/games/blood/src/db.cpp            | 2 +-
 source/games/blood/src/mapstructs.h      | 2 +-
 source/games/blood/src/mirrors.cpp       | 2 +-
 source/games/blood/src/nnexts.cpp        | 8 ++++----
 source/games/blood/src/nnexts.h          | 2 +-
 7 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/source/games/blood/src/aiunicult.cpp b/source/games/blood/src/aiunicult.cpp
index 5c1006936..809af3843 100644
--- a/source/games/blood/src/aiunicult.cpp
+++ b/source/games/blood/src/aiunicult.cpp
@@ -2287,7 +2287,8 @@ bool genDudePrepare(DBloodActor* actor, int propId)
 	case kGenDudePropertyMass: {
 		// to ensure mass gets updated, let's clear all cache
 		SPRITEMASS* pMass = &actor->spriteMass;
-		pMass->seqId = pMass->picnum = 0;
+		pMass->seqId = 0;
+		pMass->texid = FNullTextureID();
 		pMass->scale.Zero();
 		pMass->clipDist = 0;
 		pMass->mass = pMass->airVel = pMass->fraction = 0;
diff --git a/source/games/blood/src/animatesprite.cpp b/source/games/blood/src/animatesprite.cpp
index fc0fd2246..50a4ab04e 100644
--- a/source/games/blood/src/animatesprite.cpp
+++ b/source/games/blood/src/animatesprite.cpp
@@ -656,7 +656,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA,
 		}
 		while (nAnim > 0)
 		{
-			pTSprite->picnum += GetExtInfo(pTSprite->spritetexture()).picanm.num + 1;
+			pTSprite->setspritetexture(pTSprite->spritetexture() + GetExtInfo(pTSprite->spritetexture()).picanm.num + 1);
 			nAnim--;
 		}
 
@@ -940,7 +940,7 @@ void viewProcessSprites(tspriteArray& tsprites, const DVector3& cPos, DAngle cA,
 		}
 		while (nAnim > 0)
 		{
-			pTSprite->picnum += GetExtInfo(pTSprite->spritetexture()).picanm.num + 1;
+			pTSprite->setspritetexture(pTSprite->spritetexture() + GetExtInfo(pTSprite->spritetexture()).picanm.num + 1);
 			nAnim--;
 		}
 	}
diff --git a/source/games/blood/src/db.cpp b/source/games/blood/src/db.cpp
index 45b9ed279..050524c9d 100644
--- a/source/games/blood/src/db.cpp
+++ b/source/games/blood/src/db.cpp
@@ -482,7 +482,7 @@ void dbLoadMap(const char* pPath, DVector3& pos, short* pAngle, sectortype** cur
 		*pSprite = {};
 		pSprite->SetMapPos(LittleLong(load.x), LittleLong(load.y), LittleLong(load.z));
 		pSprite->cstat = ESpriteFlags::FromInt(LittleShort(load.cstat));
-		pSprite->picnum = LittleShort(load.picnum);
+		pSprite->picnum = LittleShort(load.pic);
 		int secno = LittleShort(load.sectnum);
 		pSprite->statnum = LittleShort(load.statnum);
 		pSprite->Angles.Yaw = mapangle(LittleShort(load.ang));
diff --git a/source/games/blood/src/mapstructs.h b/source/games/blood/src/mapstructs.h
index 3b8a088fe..3c80c74b6 100644
--- a/source/games/blood/src/mapstructs.h
+++ b/source/games/blood/src/mapstructs.h
@@ -9,7 +9,7 @@ struct spritetypedisk
 {
 	int32_t x, y, z;
 	uint16_t cstat;
-	int16_t picnum;
+	int16_t pic;
 	int8_t shade;
 	uint8_t pal, clipdist, detail;
 	uint8_t xrepeat, yrepeat;
diff --git a/source/games/blood/src/mirrors.cpp b/source/games/blood/src/mirrors.cpp
index 2fd320dd6..87ab3f547 100644
--- a/source/games/blood/src/mirrors.cpp
+++ b/source/games/blood/src/mirrors.cpp
@@ -117,7 +117,7 @@ void InitMirrors(void)
 			auto sectj = link2->sector();
 			int j = sectindex(sectj);
 			if (sectj->ceilingtexture != mirrortile)
-				I_Error("Lower link sector %d doesn't have mirror picnum\n", j);
+				I_Error("Lower link sector %d doesn't have mirror pic\n", j);
 			mirror[mirrorcnt].type = 2;
 			mirror[mirrorcnt].diff = link2->spr.pos - link->spr.pos;
 			mirror[mirrorcnt].mynum = i;
diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp
index f43f2f93e..3bc33fc15 100644
--- a/source/games/blood/src/nnexts.cpp
+++ b/source/games/blood/src/nnexts.cpp
@@ -1416,7 +1416,7 @@ int getSpriteMassBySize(DBloodActor* actor)
 	}
 
 	SPRITEMASS* cached = &actor->spriteMass;
-	if (((seqId >= 0 && seqId == cached->seqId) || actor->spr.picnum == cached->picnum) && actor->spr.scale.X == cached->scale.X &&
+	if (((seqId >= 0 && seqId == cached->seqId) || actor->spr.spritetexture() == cached->texid) && actor->spr.scale.X == cached->scale.X &&
 		actor->spr.scale.Y == cached->scale.Y && clipDist == cached->clipDist)
 	{
 		return cached->mass;
@@ -1499,7 +1499,7 @@ int getSpriteMassBySize(DBloodActor* actor)
 
 	cached->scale.X = actor->spr.scale.X;
 	cached->scale.Y = actor->spr.scale.Y;
-	cached->picnum = actor->spr.picnum;
+	cached->texid = actor->spr.spritetexture();
 	cached->seqId = seqId;
 	cached->clipDist = actor->clipdist;
 
@@ -9178,7 +9178,7 @@ void callbackUniMissileBurst(DBloodActor* actor, sectortype*) // 22
 
 		burstactor->spr.type = actor->spr.type;
 		burstactor->spr.shade = actor->spr.shade;
-		burstactor->spr.picnum = actor->spr.picnum;
+		burstactor->spr.setspritetexture(actor->spr.spritetexture());
 
 
 		burstactor->spr.cstat = actor->spr.cstat;
@@ -9413,7 +9413,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, SPRITEMASS& w, SPR
 	if (arc.BeginObject(keyname))
 	{
 		arc("seq", w.seqId, &nul.seqId)
-			("picnum", w.picnum, &nul.picnum)
+			("texid", w.texid, &nul.texid)
 			("scale", w.scale, &nul.scale)
 			("clipdist", w.clipDist)
 			("mass", w.mass)
diff --git a/source/games/blood/src/nnexts.h b/source/games/blood/src/nnexts.h
index ae551a526..05c1f0ff9 100644
--- a/source/games/blood/src/nnexts.h
+++ b/source/games/blood/src/nnexts.h
@@ -194,7 +194,7 @@ enum {
 // - STRUCTS ------------------------------------------------------------------
 struct SPRITEMASS { // sprite mass info for getSpriteMassBySize();
 	int seqId;
-	int16_t picnum; // mainly needs for moving debris
+	FTextureID texid; // mainly needs for moving debris
 	DVector2 scale;
 	int16_t airVel; // mainly needs for moving debris
 	double clipDist; // mass multiplier