diff --git a/source/games/exhumed/src/aistuff.h b/source/games/exhumed/src/aistuff.h index 77146fe9e..33efc5c47 100644 --- a/source/games/exhumed/src/aistuff.h +++ b/source/games/exhumed/src/aistuff.h @@ -222,7 +222,7 @@ DExhumedActor* GrabBodyGunSprite(); void FuncCreatureChunk(int a, int, int nRun); DExhumedActor* FindPlayer(DExhumedActor* nSprite, int nDistance, bool dontengage = false); -DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial = false); +DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, FTextureID nPic, bool bSpecial = false); double PlotCourseToSprite(DExhumedActor* nSprite1, DExhumedActor* nSprite2); void CheckSectorFloor(sectortype* pSector, double z, DVector2& xy); void MoveSector(sectortype* pSector, DAngle nAngle, DVector2& vel); diff --git a/source/games/exhumed/src/anubis.cpp b/source/games/exhumed/src/anubis.cpp index e2a89d06e..d9cd1f56a 100644 --- a/source/games/exhumed/src/anubis.cpp +++ b/source/games/exhumed/src/anubis.cpp @@ -132,7 +132,7 @@ void AIAnubis::Tick(RunListEvent* ev) seqFrame.playSound(ap); - ap->spr.picnum = seqFrame.getFirstPicnum(); + ap->spr.setspritetexture(seqFrame.getFirstTexID()); ap->nFrame++; if (ap->nFrame >= anubisSeq.frames.Size()) diff --git a/source/games/exhumed/src/bullet.cpp b/source/games/exhumed/src/bullet.cpp index ac0b07cb0..a609ae4c7 100644 --- a/source/games/exhumed/src/bullet.cpp +++ b/source/games/exhumed/src/bullet.cpp @@ -658,13 +658,13 @@ DExhumedActor* BuildBullet(DExhumedActor* pActor, int nType, double fZOffset, DA { pBullet->field_12 = 0; pBullet->seqFile = pBulletInfo->initSeq; - pBulletActor->spr.picnum = getSequence(pBullet->seqFile).getFirstPicnum(); + pBulletActor->spr.setspritetexture(getSequence(pBullet->seqFile).getFirstTexID()); } else if (pBulletInfo->seqFile != NAME_None) { pBullet->field_12 = 1; pBullet->seqFile = pBulletInfo->seqFile; - pBulletActor->spr.picnum = getSequence(pBullet->seqFile).getFirstPicnum(); + pBulletActor->spr.setspritetexture(getSequence(pBullet->seqFile).getFirstTexID()); } else { diff --git a/source/games/exhumed/src/exhumed.cpp b/source/games/exhumed/src/exhumed.cpp index 03bf9dd66..c0d21d7ab 100644 --- a/source/games/exhumed/src/exhumed.cpp +++ b/source/games/exhumed/src/exhumed.cpp @@ -116,9 +116,8 @@ void MySetView(int x1, int y1, int x2, int y2); char sHollyStr[40]; -int nFontFirstChar; -int nBackgroundPic; -int nShadowPic; +FTextureID nBackgroundPic; +FTextureID nShadowPic; int nCreaturesKilled = 0, nCreaturesTotal = 0; diff --git a/source/games/exhumed/src/exhumed.h b/source/games/exhumed/src/exhumed.h index 8c8b283cf..d3f86b687 100644 --- a/source/games/exhumed/src/exhumed.h +++ b/source/games/exhumed/src/exhumed.h @@ -99,9 +99,8 @@ extern int nNetTime; extern int nTotalPlayers; -extern int nFontFirstChar; -extern int nBackgroundPic; -extern int nShadowPic; +extern FTextureID nBackgroundPic; +extern FTextureID nShadowPic; extern int nCreaturesTotal, nCreaturesKilled; diff --git a/source/games/exhumed/src/fish.cpp b/source/games/exhumed/src/fish.cpp index 5bc162b39..6b9b5c038 100644 --- a/source/games/exhumed/src/fish.cpp +++ b/source/games/exhumed/src/fish.cpp @@ -64,7 +64,7 @@ void BuildFishLimb(DExhumedActor* pActor, int anim) pChunkActor->spr.yoffset = 0; pChunkActor->vel.Z = ((-(RandomByte() + 512)) * 2) / 256.; - //getSequence(pChunkActor->nSeqFile, pChunkActor->nCount).getFirstPicnum(); + //getSequence(pChunkActor->nSeqFile, pChunkActor->nCount).getFirstTexID(); pChunkActor->spr.picnum = anim; pChunkActor->spr.lotag = runlist_HeadRun() + 1; @@ -90,7 +90,7 @@ void AIFishLimb::Tick(RunListEvent* ev) const auto& fishSeq = getSequence(pActor->nSeqFile, pActor->nCount); - pActor->spr.picnum = fishSeq.frames[pActor->nFrame].getFirstPicnum(); + pActor->spr.setspritetexture(fishSeq.frames[pActor->nFrame].getFirstTexID()); Gravity(pActor); @@ -176,7 +176,7 @@ void BuildFish(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, pActor->spr.xoffset = 0; pActor->spr.yoffset = 0; pActor->nSeqFile = "fish"; - pActor->spr.picnum = getSequence(pActor->nSeqFile, FishSeq[0].nSeqId).getFirstPicnum(); + pActor->spr.setspritetexture(getSequence(pActor->nSeqFile, FishSeq[0].nSeqId).getFirstTexID()); pActor->vel.X = 0; pActor->vel.Y = 0; pActor->vel.Z = 0; @@ -361,7 +361,7 @@ void AIFish::Tick(RunListEvent* ev) const auto& fishSeq = getSequence(pActor->nSeqFile, FishSeq[nAction].nSeqId); const auto& seqFrame = fishSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); diff --git a/source/games/exhumed/src/grenade.cpp b/source/games/exhumed/src/grenade.cpp index 5b06f9503..bbe1f5b94 100644 --- a/source/games/exhumed/src/grenade.cpp +++ b/source/games/exhumed/src/grenade.cpp @@ -262,7 +262,7 @@ void AIGrenade::Tick(RunListEvent* ev) const auto& seqFrame = grenadeSeq.frames[pActor->nHealth >> 8]; seqFrame.playSound(pActor); - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); pActor->nIndex2--; if (!pActor->nIndex2) diff --git a/source/games/exhumed/src/lavadude.cpp b/source/games/exhumed/src/lavadude.cpp index 03bad402a..4cc18ffad 100644 --- a/source/games/exhumed/src/lavadude.cpp +++ b/source/games/exhumed/src/lavadude.cpp @@ -123,7 +123,7 @@ void BuildLava(DExhumedActor* pActor, const DVector3& pos, sectortype* pSector, pActor->spr.xoffset = 0; pActor->spr.yoffset = 0; pActor->nSeqFile = "lavag"; - pActor->spr.picnum = getSequence(pActor->nSeqFile, LavadudeSeq[3].nSeqId).getFirstPicnum(); + pActor->spr.setspritetexture(getSequence(pActor->nSeqFile, LavadudeSeq[3].nSeqId).getFirstTexID()); pActor->vel.X = 0; pActor->vel.Y = 0; pActor->vel.Z = 0; @@ -218,7 +218,7 @@ void AILavaDude::Tick(RunListEvent* ev) const auto& lavadudeSeq = getSequence(pActor->nSeqFile, LavadudeSeq[nAction].nSeqId); const auto& seqFrame = lavadudeSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); int var_1C = 0; diff --git a/source/games/exhumed/src/lion.cpp b/source/games/exhumed/src/lion.cpp index 35bb9896e..c5b472ec0 100644 --- a/source/games/exhumed/src/lion.cpp +++ b/source/games/exhumed/src/lion.cpp @@ -203,7 +203,7 @@ void AILion::Tick(RunListEvent* ev) const auto& lionSeq = getSequence(pActor->nSeqFile, LionSeq[nAction].nSeqId); const auto& seqFrame = lionSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); diff --git a/source/games/exhumed/src/move.cpp b/source/games/exhumed/src/move.cpp index 7890bee08..30a158879 100644 --- a/source/games/exhumed/src/move.cpp +++ b/source/games/exhumed/src/move.cpp @@ -1159,7 +1159,7 @@ DExhumedActor* GrabChunkSprite() // //--------------------------------------------------------------------------- -DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial) +DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, FTextureID nPic, bool bSpecial) { auto pActor = GrabChunkSprite(); @@ -1188,7 +1188,7 @@ DExhumedActor* BuildCreatureChunk(DExhumedActor* pSrc, int nPic, bool bSpecial) pActor->spr.scale = DVector2(1, 1); pActor->spr.xoffset = 0; pActor->spr.yoffset = 0; - pActor->spr.picnum = nPic; + pActor->spr.setspritetexture(nPic); pActor->spr.lotag = runlist_HeadRun() + 1; pActor->clipdist = 10; diff --git a/source/games/exhumed/src/mummy.cpp b/source/games/exhumed/src/mummy.cpp index f74bce165..37281cf72 100644 --- a/source/games/exhumed/src/mummy.cpp +++ b/source/games/exhumed/src/mummy.cpp @@ -144,7 +144,7 @@ void AIMummy::Tick(RunListEvent* ev) const auto& mummySeq = getSequence(pActor->nSeqFile, MummySeq[nAction].nSeqId); const auto& seqFrame = mummySeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); diff --git a/source/games/exhumed/src/object.cpp b/source/games/exhumed/src/object.cpp index 03a3153e3..778147391 100644 --- a/source/games/exhumed/src/object.cpp +++ b/source/games/exhumed/src/object.cpp @@ -1962,7 +1962,7 @@ void AIObject::Tick(RunListEvent* ev) if (++pActor->nFrame >= nSeqFrames.Size()) pActor->nFrame = 0; - pActor->spr.picnum = nSeqFrames[pActor->nFrame].getFirstPicnum(); + pActor->spr.setspritetexture(nSeqFrames[pActor->nFrame].getFirstTexID()); } if (pActor->nHealth >= 0) { @@ -2007,7 +2007,7 @@ void AIObject::Tick(RunListEvent* ev) if (nStat == kStatExplodeTrigger) { for (int i = 4; i < 8; i++) { - BuildCreatureChunk(pActor, getSequence("firepot", (i >> 2) + 1).getFirstPicnum(), true); + BuildCreatureChunk(pActor, getSequence("firepot", (i >> 2) + 1).getFirstTexID(), true); } runlist_RadialDamageEnemy(pActor, 200, 20); @@ -2015,7 +2015,7 @@ void AIObject::Tick(RunListEvent* ev) else if (nStat == kStatExplodeTarget) { for (int i = 0; i < 8; i++) { - BuildCreatureChunk(pActor, getSequence("firepot", (i >> 1) + 3).getFirstPicnum(), true); + BuildCreatureChunk(pActor, getSequence("firepot", (i >> 1) + 3).getFirstTexID(), true); } } diff --git a/source/games/exhumed/src/player.cpp b/source/games/exhumed/src/player.cpp index 1e134e1fb..49a1b837d 100644 --- a/source/games/exhumed/src/player.cpp +++ b/source/games/exhumed/src/player.cpp @@ -218,7 +218,7 @@ void RestartPlayer(int nPlayer) pPlayerActor->nSeqFile = "joe"; pPlayerActor->nAction = 0; pPlayerActor->nFrame = 0; - pPlayerActor->spr.picnum = getSequence(pPlayerActor->nSeqFile, 18).getFirstPicnum(); + pPlayerActor->spr.setspritetexture(getSequence(pPlayerActor->nSeqFile, 18).getFirstTexID()); pPlayerActor->spr.hitag = 0; pPlayerActor->spr.extra = -1; pPlayerActor->spr.lotag = runlist_HeadRun() + 1; @@ -640,7 +640,7 @@ void AIPlayer::Damage(RunListEvent* ev) { for (int i = 122; i <= 131; i++) { - BuildCreatureChunk(pPlayerActor, getSequence("joe", i).getFirstPicnum()); + BuildCreatureChunk(pPlayerActor, getSequence("joe", i).getFirstTexID()); } StartDeathSeq(nPlayer, 1); @@ -1883,7 +1883,7 @@ static bool doPlayerDeathRestart(Player* const pPlayer) if (pPlayer->pActor->nAction != 20) { const auto pPlayerActor = pPlayer->pActor; - pPlayerActor->spr.picnum = getSequence("joe", 120).getFirstPicnum(); + pPlayerActor->spr.setspritetexture(getSequence("joe", 120).getFirstTexID()); pPlayerActor->spr.cstat = 0; pPlayerActor->spr.pos.Z = pPlayerActor->sector()->floorz; } @@ -2009,7 +2009,7 @@ void AIPlayer::Tick(RunListEvent* ev) const auto pPlayer = &PlayerList[nPlayer]; const auto pPlayerActor = pPlayer->pActor; - pPlayerActor->spr.picnum = getSequence(pPlayerActor->nSeqFile, PlayerSeq[nHeightTemplate[pPlayerActor->nAction]].nSeqId).getFirstPicnum(); + pPlayerActor->spr.setspritetexture(getSequence(pPlayerActor->nSeqFile, PlayerSeq[nHeightTemplate[pPlayerActor->nAction]].nSeqId).getFirstTexID()); pPlayer->pDoppleSprite->spr.picnum = pPlayerActor->spr.picnum; doPlayerCounters(pPlayer); diff --git a/source/games/exhumed/src/queen.cpp b/source/games/exhumed/src/queen.cpp index 308f709d5..605991e78 100644 --- a/source/games/exhumed/src/queen.cpp +++ b/source/games/exhumed/src/queen.cpp @@ -252,7 +252,7 @@ void BlowChunks(DExhumedActor* pActor) { for (int i = 0; i < 4; i++) { - BuildCreatureChunk(pActor, getSequence("spider", i + 41).getFirstPicnum()); + BuildCreatureChunk(pActor, getSequence("spider", i + 41).getFirstTexID()); } } @@ -275,7 +275,7 @@ void DestroyEgg(int nEgg) { for (int i = 0; i < 4; i++) { - BuildCreatureChunk(pActor, getSequence("queenegg", (i % 2) + 24).getFirstPicnum()); + BuildCreatureChunk(pActor, getSequence("queenegg", (i % 2) + 24).getFirstTexID()); } } @@ -546,7 +546,7 @@ void AIQueenEgg::Tick(RunListEvent* ev) const auto& eggSeq = getSequence(pActor->nSeqFile, EggSeq[nAction].nSeqId); const auto& seqFrame = eggSeq.frames[pEgg->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); if (nAction != 4) { @@ -807,7 +807,7 @@ void AIQueenHead::Tick(RunListEvent* ev) seqFrame.playSound(pActor); - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); QueenHead.nFrame++; if (QueenHead.nFrame >= queenSeq.frames.Size()) @@ -1238,7 +1238,7 @@ void AIQueen::Tick(RunListEvent* ev) const auto& queenSeq = getSequence(pActor->nSeqFile, QueenSeq[nAction].nSeqId); const auto& seqFrame = queenSeq.frames[QueenList[nQueen].nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); @@ -1435,7 +1435,7 @@ void AIQueen::Tick(RunListEvent* ev) if (QueenList[nQueen].nIndex <= 0) { pActor->spr.cstat = 0; - const auto queenPicnum = getSequence("queen", 57).getFirstPicnum(); + const auto queenPicnum = getSequence("queen", 57).getFirstTexID(); for (int i = 0; i < 20; i++) { diff --git a/source/games/exhumed/src/ra.cpp b/source/games/exhumed/src/ra.cpp index 390243c7b..48c71f2e0 100644 --- a/source/games/exhumed/src/ra.cpp +++ b/source/games/exhumed/src/ra.cpp @@ -219,7 +219,7 @@ void AIRa::Tick(RunListEvent* ev) bool bVal = false; Ra[nPlayer].pTarget = PlayerList[nPlayer].pTarget; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); if (Ra[nPlayer].nAction) { diff --git a/source/games/exhumed/src/rat.cpp b/source/games/exhumed/src/rat.cpp index f6858eda7..f526c811f 100644 --- a/source/games/exhumed/src/rat.cpp +++ b/source/games/exhumed/src/rat.cpp @@ -25,9 +25,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. BEGIN_PS_NS -int nMinChunk; -int nPlayerPic; -int nMaxChunk; +FTextureID nPlayerPic; static actionSeq RatSeq[] = { {0, 1}, @@ -47,9 +45,7 @@ void SerializeRat(FSerializer& arc) { if (arc.BeginObject("rat")) { - arc("minchunk", nMinChunk) - ("maxchunk", nMaxChunk) - ("playerpic", nPlayerPic) + arc("playerpic", nPlayerPic) .EndObject(); } } @@ -62,21 +58,7 @@ void SerializeRat(FSerializer& arc) void InitRats() { - nMinChunk = 9999; - nMaxChunk = -1; - - for (int i = 122; i <= 131; i++) - { - int nPic = getSequence("joe", i).getFirstPicnum(); - - if (nPic < nMinChunk) - nMinChunk = nPic; - - if (nPic > nMaxChunk) - nMaxChunk = nPic; - } - - nPlayerPic = getSequence("joe", 120).getFirstPicnum(); + nPlayerPic = getSequence("joe", 120).getFirstTexID(); } void SetRatVel(DExhumedActor* pActor) @@ -167,7 +149,7 @@ DExhumedActor* FindFood(DExhumedActor* pActor) DExhumedActor* pActor2 = nBodySprite[RandomSize(7) % nBodyTotal]; if (pActor2 != nullptr) { - if (nPlayerPic == pActor2->spr.picnum) + if (legacyTileNum(nPlayerPic) == pActor2->spr.picnum) { if (cansee(pActor->spr.pos, pSector, pActor2->spr.pos, pActor2->sector())) { return pActor2; @@ -249,7 +231,7 @@ void AIRat::Tick(RunListEvent* ev) const auto& ratSeq = getSequence(pActor->nSeqFile, RatSeq[nAction].nSeqId); const auto& seqFrame = ratSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); diff --git a/source/games/exhumed/src/rex.cpp b/source/games/exhumed/src/rex.cpp index 6311e549c..b6030cd46 100644 --- a/source/games/exhumed/src/rex.cpp +++ b/source/games/exhumed/src/rex.cpp @@ -195,7 +195,7 @@ void AIRex::Tick(RunListEvent* ev) const auto& rexSeq = getSequence(pActor->nSeqFile, RexSeq[nAction].nSeqId); const auto& seqFrame = rexSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); int ecx = 2; diff --git a/source/games/exhumed/src/roach.cpp b/source/games/exhumed/src/roach.cpp index 9fa4bbdd2..0ab81f47d 100644 --- a/source/games/exhumed/src/roach.cpp +++ b/source/games/exhumed/src/roach.cpp @@ -215,7 +215,7 @@ void AIRoach::Tick(RunListEvent* ev) const auto& roachSeq = getSequence(pActor->nSeqFile, RoachSeq[nAction].nSeqId); const auto& seqFrame = roachSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); pActor->nFrame++; diff --git a/source/games/exhumed/src/scorp.cpp b/source/games/exhumed/src/scorp.cpp index 648ef24ff..b8dd60d84 100644 --- a/source/games/exhumed/src/scorp.cpp +++ b/source/games/exhumed/src/scorp.cpp @@ -210,7 +210,7 @@ void AIScorp::Tick(RunListEvent* ev) const auto& scorpSeq = getSequence(pActor->nSeqFile, ScorpSeq[nAction].nSeqId); const auto& seqFrame = scorpSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); pActor->nFrame++; diff --git a/source/games/exhumed/src/sequence.cpp b/source/games/exhumed/src/sequence.cpp index 45d33b5d7..50187d1e7 100644 --- a/source/games/exhumed/src/sequence.cpp +++ b/source/games/exhumed/src/sequence.cpp @@ -290,8 +290,7 @@ int addSeq(const char *seqName) gSeqFrame.chunks.Push({ (int16_t)(nSeqFrameChunkPosX[nChunk] - CenterX), (int16_t)(nSeqFrameChunkPosY[nChunk] - CenterY), - nSeqFrameChunkPicnum[nChunk], - tileGetTexture(nSeqFrameChunkPicnum[nChunk])->GetID(), + tileGetTextureID(nSeqFrameChunkPicnum[nChunk]), nSeqFrameChunkFlags[nChunk], }); } @@ -317,18 +316,18 @@ void seq_LoadSequences() } } - nShadowPic = getSequence("shadow").getFirstPicnum(); - nShadowWidth = tileWidth(nShadowPic); + nShadowPic = getSequence("shadow").getFirstTexID(); + nShadowWidth = (int16_t)TexMan.GetGameTexture(nShadowPic)->GetDisplayWidth(); - nFlameHeight = tileHeight(getSequence("firepoof").getFirstPicnum()); + nFlameHeight = (int16_t)TexMan.GetGameTexture(getSequence("firepoof").getFirstTexID())->GetDisplayHeight(); - nBackgroundPic = getSequence("backgrnd").getFirstPicnum(); + nBackgroundPic = getSequence("backgrnd").getFirstTexID(); nPilotLightCount = getSequence("flamer", 3).frames.Size(); nPilotLightFrame = 0; const auto& fontSeq = getSequence("font2"); - nFontFirstChar = fontSeq.getFirstPicnum(); + const int nFontFirstChar = legacyTileNum(fontSeq.getFirstTexID()); for (unsigned i = 0; i < fontSeq.frames.Size(); i++) { @@ -358,7 +357,7 @@ void seq_DrawPilotLightSeq(double xOffset, double yOffset) const double x = frameChunk.xpos + (160 + xOffset); const double y = frameChunk.ypos + (100 + yOffset); - hud_drawsprite(x, y, 65536, PlayerList[nLocalPlayer].pActor->spr.Angles.Yaw.Normalized180().Degrees() * 2., frameChunk.picnum, 0, 0, 1); + hud_drawsprite(x, y, 65536, PlayerList[nLocalPlayer].pActor->spr.Angles.Yaw.Normalized180().Degrees() * 2., legacyTileNum(frameChunk.tex), 0, 0, 1); } } } @@ -397,7 +396,7 @@ void seq_DrawGunSequence(const Seq& weapSeq, int16_t frameIndex, double xOffs, d alpha = 0.3; } - hud_drawsprite(x + xOffs, y + yOffs, 65536, angle.Degrees(), frameChunk.picnum, nShade, nPal, stat, alpha); + hud_drawsprite(x + xOffs, y + yOffs, 65536, angle.Degrees(), legacyTileNum(frameChunk.tex), nShade, nPal, stat, alpha); } } @@ -441,7 +440,7 @@ void seq_PlotArrowSequence(const int nSprite, const FName seqFile, const int16_t } pTSprite->yoffset = -frameChunk.ypos; - pTSprite->picnum = frameChunk.picnum; + pTSprite->setspritetexture(frameChunk.tex); } //--------------------------------------------------------------------------- @@ -497,7 +496,7 @@ void seq_PlotSequence(const int nSprite, const FName seqFile, const int16_t seqI } tsp->yoffset = -seqFrameChunk.ypos; - tsp->picnum = seqFrameChunk.picnum; + tsp->setspritetexture(seqFrameChunk.tex); } if (!(pTSprite->cstat & CSTAT_SPRITE_BLOCK_ALL) || (pTSprite->ownerActor->spr.statnum == 100 && nNetPlayerCount)) @@ -515,10 +514,10 @@ void seq_PlotSequence(const int nSprite, const FName seqFile, const int16_t seqI } else { - pTSprite->picnum = nShadowPic; + pTSprite->setspritetexture(nShadowPic); - const auto nPict = drawFrame.getFirstPicnum(); - const auto nScale = max(((tileWidth(nPict) << 5) / nShadowWidth) - int16_t((nFloorZ - pTSprite->pos.Z) * 2.), 1) * REPEAT_SCALE; + const auto nTexWidth = (int)TexMan.GetGameTexture(drawFrame.getFirstTexID())->GetDisplayWidth(); + const auto nScale = max(((nTexWidth << 5) / nShadowWidth) - int16_t((nFloorZ - pTSprite->pos.Z) * 2.), 1) * REPEAT_SCALE; pTSprite->cstat = CSTAT_SPRITE_ALIGNMENT_FLOOR | CSTAT_SPRITE_TRANSLUCENT; pTSprite->pos.Z = pSector->floorz; diff --git a/source/games/exhumed/src/sequence.h b/source/games/exhumed/src/sequence.h index ba00a82e5..0f5a813b4 100644 --- a/source/games/exhumed/src/sequence.h +++ b/source/games/exhumed/src/sequence.h @@ -31,8 +31,7 @@ struct SeqFrameChunk { int16_t xpos; int16_t ypos; - int16_t picnum; - FTextureID tex; // FIXME (native wants picnum, statusbar wants texid) + FTextureID tex; int16_t flags; }; @@ -42,9 +41,9 @@ struct SeqFrame int16_t flags; TArray chunks; - const int getFirstPicnum() const + const FTextureID getFirstTexID() const { - return chunks[0].picnum; + return chunks[0].tex; } const void playSound(DExhumedActor* const pActor) const @@ -68,9 +67,9 @@ struct Seq int16_t flags; TArray frames; - const int getFirstPicnum() const + const FTextureID getFirstTexID() const { - return frames[0].getFirstPicnum(); + return frames[0].getFirstTexID(); } }; diff --git a/source/games/exhumed/src/set.cpp b/source/games/exhumed/src/set.cpp index d5c8e317b..11d95781f 100644 --- a/source/games/exhumed/src/set.cpp +++ b/source/games/exhumed/src/set.cpp @@ -116,7 +116,7 @@ void BuildSoul(DExhumedActor* pSet) pActor->spr.xoffset = 0; pActor->spr.yoffset = 0; pActor->nSeqFile = "set"; - pActor->spr.picnum = getSequence(pActor->nSeqFile, 75).getFirstPicnum(); + pActor->spr.setspritetexture(getSequence(pActor->nSeqFile, 75).getFirstTexID()); pActor->spr.Angles.Yaw = RandomAngle(); pActor->vel.X = 0; pActor->vel.Y = 0; @@ -274,7 +274,7 @@ void AISet::Tick(RunListEvent* ev) const auto& setSeq = getSequence(pActor->nSeqFile, SetSeq[nAction].nSeqId); const auto& seqFrame = setSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor); if (nAction == 3) @@ -609,7 +609,7 @@ void AISet::Tick(RunListEvent* ev) if (seqFrame.flags & 0x80) { pActor->spr.pos.Z -= GetActorHeight(pActor); - BuildCreatureChunk(pActor, getSequence("set", 76).getFirstPicnum()); + BuildCreatureChunk(pActor, getSequence("set", 76).getFirstTexID()); pActor->spr.pos.Z += GetActorHeight(pActor); } diff --git a/source/games/exhumed/src/snake.cpp b/source/games/exhumed/src/snake.cpp index 9b16527ac..04f0fab58 100644 --- a/source/games/exhumed/src/snake.cpp +++ b/source/games/exhumed/src/snake.cpp @@ -163,7 +163,7 @@ void BuildSnake(int nPlayer, double zVal) auto pPlayerActor = PlayerList[nPlayer].pActor; auto pViewSect = PlayerList[nPlayer].pPlayerViewSect; - int nPic = getSequence("snakbody", 0).getFirstPicnum(); + auto nPic = getSequence("snakbody", 0).getFirstTexID(); auto pos = pPlayerActor->spr.pos.plusZ(zVal - 10); @@ -207,7 +207,7 @@ void BuildSnake(int nPlayer, double zVal) pActor->pTarget = pPlayerActor; //pActor->spr.intowner = nPlayerSprite; - pActor->spr.picnum = nPic; + pActor->spr.setspritetexture(nPic); if (i == 0) { diff --git a/source/games/exhumed/src/spider.cpp b/source/games/exhumed/src/spider.cpp index 57d213677..5241e415f 100644 --- a/source/games/exhumed/src/spider.cpp +++ b/source/games/exhumed/src/spider.cpp @@ -122,7 +122,7 @@ void AISpider::Tick(RunListEvent* ev) const auto& spiderSeq = getSequence(spp->nSeqFile, SpiderSeq[nAction].nSeqId); const auto& seqFrame = spiderSeq.frames[spp->nFrame]; - spp->spr.picnum = spp->nFrame < 9 ? seqFrame.getFirstPicnum() : -1; + spp->spr.setspritetexture(spp->nFrame < 9 ? seqFrame.getFirstTexID() : FNullTextureID()); seqFrame.playSound(spp); @@ -421,7 +421,7 @@ void AISpider::Damage(RunListEvent* ev) for (int i = 0; i < 7; i++) { - BuildCreatureChunk(spp, getSequence("spider", i + 41).getFirstPicnum()); + BuildCreatureChunk(spp, getSequence("spider", i + 41).getFirstTexID()); } } } diff --git a/source/games/exhumed/src/status.cpp b/source/games/exhumed/src/status.cpp index 68f9b9601..e070b765a 100644 --- a/source/games/exhumed/src/status.cpp +++ b/source/games/exhumed/src/status.cpp @@ -47,7 +47,7 @@ BEGIN_PS_NS void UpdateFrame() { - auto tex = tileGetTexture(nBackgroundPic); + auto tex = TexMan.GetGameTexture(nBackgroundPic); twod->AddFlatFill(0, 0, twod->GetWidth(), viewport3d.Top() - 3, tex); twod->AddFlatFill(0, viewport3d.Bottom() + 3, twod->GetWidth(), twod->GetHeight(), tex); diff --git a/source/games/exhumed/src/wasp.cpp b/source/games/exhumed/src/wasp.cpp index e544ee0f1..8fefa51e1 100644 --- a/source/games/exhumed/src/wasp.cpp +++ b/source/games/exhumed/src/wasp.cpp @@ -218,7 +218,7 @@ void AIWasp::Tick(RunListEvent* ev) const auto& waspSeq = getSequence(pActor->nSeqFile, WaspSeq[nAction].nSeqId); const auto& seqFrame = waspSeq.frames[pActor->nFrame]; - pActor->spr.picnum = seqFrame.getFirstPicnum(); + pActor->spr.setspritetexture(seqFrame.getFirstTexID()); seqFrame.playSound(pActor);