- eliminated all remaining uses of picnum in Exhumed.

This commit is contained in:
Christoph Oelckers 2023-01-02 21:50:52 +01:00
parent 44e9a66319
commit 01b6d9f27f
11 changed files with 98 additions and 22 deletions

View file

@ -76,7 +76,7 @@ bool GameInterface::DrawAutomapPlayer(const DVector2& mxy, const DVector2& cpos,
auto pPlayerActor = PlayerList[i].pActor;
auto vect = OutAutomapVector(mxy - cpos, cangvect, czoom, xydim);
DrawTexture(twod, tileGetTexture(pPlayerActor->spr.picnum /*+ ((PlayClock >> 4) & 3)*/, true), vect.X, vect.Y, DTA_ClipLeft, viewport3d.Left(), DTA_ClipTop, viewport3d.Top(), DTA_ScaleX, czoom * (2. / 3.), DTA_ScaleY, czoom * (2. / 3.), DTA_CenterOffset, true,
DrawTexture(twod, pPlayerActor->spr.spritetexture(), true, vect.X, vect.Y, DTA_ClipLeft, viewport3d.Left(), DTA_ClipTop, viewport3d.Top(), DTA_ScaleX, czoom * (2. / 3.), DTA_ScaleY, czoom * (2. / 3.), DTA_CenterOffset, true,
DTA_ClipRight, viewport3d.Right(), DTA_ClipBottom, viewport3d.Bottom(), DTA_Alpha, (pPlayerActor->spr.cstat & CSTAT_SPRITE_TRANSLUCENT ? 0.5 : 1.), TAG_DONE);
break;
}

View file

@ -146,3 +146,21 @@ x(TileCinema11, 3454)
x(TileCinema15, 3446)
x(TileCinemaLose, 3445)
x(TileCinema20, 3448)
x(QueenChunk, 3117)
x(QueenChunk2, 3118)
x(QueenChunk3, 3119)
x(AltQueenChunk, 3126)
x(Spark1, 985)
x(Spark2, 986)
x(Playermarker1, 3571)
x(Playermarker2, 3572)
x(Playermarker3, 3573)
x(Playermarker4, 3574)
x(Playermarker5, 3575)
x(Playermarker6, 3576)
x(Playermarker7, 3577)
x(Playermarker8, 3578)
x(WeaponSpriteSword, 57)
x(WeaponSpriteMummy, 3455)

View file

@ -20,13 +20,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
enum
{
kTile985 = 985,
kTile986 = 986,
kTile3000 = 3000,
kQueenChunk = 3117,
kTile3126 = 3126,
kTile3512 = 3512,
kTile3571 = 3571,
kTile3593 = 3593,
kTile3603 = 3603,
kTile4092 = 4092,

View file

@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "player.h"
#include "interpolate.h"
#include "mapinfo.h"
#include "texids.h"
#include <string.h>
#include <assert.h>
@ -1398,7 +1399,7 @@ DExhumedActor* BuildSpark(DExhumedActor* pActor, int nVal)
if (nVal >= 2)
{
pSpark->spr.picnum = kEnergy2;
pSpark->spr.setspritetexture(aTexIds[kTexENERGY2]);
nSmokeSparks++;
if (nVal == 3)
@ -1424,7 +1425,7 @@ DExhumedActor* BuildSpark(DExhumedActor* pActor, int nVal)
}
pSpark->vel.Z = -RandomSize(4) * 0.5;
pSpark->spr.picnum = kTile985 + nVal;
pSpark->spr.setspritetexture(aTexIds[kTexSpark1 + nVal]);
}
pSpark->spr.pos.Z = pActor->spr.pos.Z;
@ -1461,12 +1462,12 @@ void AISpark::Tick(RunListEvent* ev)
pActor->spr.scale.Y += (-0.03125);
// calling BuildSpark() with 2nd parameter as '1' will set kTile986
if (pActor->spr.picnum == kTile986 && int((pActor->spr.scale.X * INV_REPEAT_SCALE)) & 2) // hack alert
if (pActor->spr.spritetexture() == aTexIds[kTexSpark2] && int((pActor->spr.scale.X * INV_REPEAT_SCALE)) & 2) // hack alert
{
BuildSpark(pActor, 2);
}
if (pActor->spr.picnum >= kTile3000) {
if (pActor->spr.spritetexture() == aTexIds[kTexENERGY2]) {
return;
}
@ -1486,7 +1487,7 @@ void AISpark::Tick(RunListEvent* ev)
pActor->vel.Y = 0;
pActor->vel.Z = 0;
if (pActor->spr.picnum > kTile3000) {
if (pActor->spr.spritetexture() == aTexIds[kTexENERGY2]) {
nSmokeSparks--;
}

View file

@ -58,8 +58,8 @@ static constexpr double nActionEyeLevel[] = {
-55.0, -55.0, -55.0, -55.0, -55.0, -55.0, -55.0
};
static constexpr uint16_t nGunLotag[] = { 52, 53, 54, 55, 56, 57 };
static constexpr uint16_t nGunPicnum[] = { 57, 488, 490, 491, 878, 899, 3455 };
static const uint16_t nGunLotag[] = { 52, 53, 54, 55, 56, 57 };
static const uint16_t nGunPicnum[] = { kTexWeaponSpriteSword, kTexWeaponSpriteMagnum, kTexWeaponSpriteM60, kTexWeaponSpriteFlamethrower, kTexAmmoSpriteGrenade, kTexWeaponSpriteCobra, kTexWeaponSpriteMummy };
static constexpr int16_t nItemText[] = {
-1, -1, -1, -1, -1, -1, 18, 20, 19, 13, -1, 10, 1, 0, 2, -1, 3,
@ -162,8 +162,12 @@ void InitPlayerInventory(int nPlayer)
if (nPlayer == nLocalPlayer)
automapMode = am_off;
const auto pixels = GetRawPixels(tileGetTextureID(kTile3571 + nPlayer));
PlayerList[nPlayer].nPlayerColor = pixels[tileWidth(nPlayer + kTile3571) * tileHeight(nPlayer + kTile3571) / 2];
auto tex = aTexIds[kTexPlayermarker1 + nPlayer];
auto texp = TexMan.GetGameTexture(tex);
auto pixels = GetRawPixels(tex);
PlayerList[nPlayer].nPlayerColor = pixels[texp->GetTexelWidth() * texp->GetTexelHeight() / 2];
}
//---------------------------------------------------------------------------
@ -250,7 +254,8 @@ void RestartPlayer(int nPlayer)
pFloorSprite->spr.pos = pPlayerActor->spr.pos;
pFloorSprite->spr.scale = DVector2(1, 1);
pFloorSprite->spr.cstat = CSTAT_SPRITE_ALIGNMENT_FLOOR;
pFloorSprite->spr.picnum = nPlayer + kTile3571;
pFloorSprite->spr.setspritetexture(aTexIds[kTexPlayermarker1 + nPlayer]);
}
else
{
@ -388,7 +393,7 @@ void StartDeathSeq(int nPlayer, int nVal)
ChangeActorSect(pGunActor, pSector);
ChangeActorStat(pGunActor, nGunLotag[nWeapon] + 900);
pGunActor->spr.pos = DVector3(pPlayerActor->spr.pos.XY(), pSector->floorz - 2);
pGunActor->spr.picnum = nGunPicnum[nWeapon];
pGunActor->spr.setspritetexture(aTexIds[nGunPicnum[nWeapon]]);
BuildItemAnim(pGunActor);
}
}

View file

@ -1450,13 +1450,13 @@ void AIQueen::Tick(RunListEvent* ev)
{
auto pChunkActor = BuildCreatureChunk(pActor, queenPicnum);
pChunkActor->spr.picnum = kQueenChunk + (i % 3);
pChunkActor->spr.setspritetexture(aTexIds[kTexQueenChunk + (i % 3)]);
pChunkActor->spr.scale = DVector2(1.5625, 1.5625);
}
auto pChunkActor = BuildCreatureChunk(pActor, queenPicnum);
pChunkActor->spr.picnum = kTile3126;
pChunkActor->spr.setspritetexture(aTexIds[kTexAltQueenChunk]);
pChunkActor->spr.scale = DVector2(1.5625, 1.5625);
PlayFXAtXYZ(

View file

@ -112,7 +112,7 @@ void InitSpiritHead()
pSpiritSpr->spr.scale = DVector2(2.1875, 2.1875);
pSpiritSpr->spr.picnum = kTileRamsesWorkTile;
pSpiritSpr->spr.setspritetexture(aTexIds[kTexTileRamsesWorkTile]);
nHeadStage = 0;

View file

@ -348,11 +348,11 @@ void seq_LoadSequences()
nPilotLightFrame = 0;
const auto fontSeq = getSequence("font2");
const int nFontFirstChar = legacyTileNum(fontSeq->getFirstFrameTexture());
const auto nFontFirstChar = fontSeq->getFirstFrameTexture();
for (unsigned i = 0; i < fontSeq->frames.Size(); i++)
{
auto tex = tileGetTexture(nFontFirstChar + i);
auto tex = TexMan.GetGameTexture(nFontFirstChar + i);
tex->SetOffsets(0, 0);
}
}

View file

View file

@ -0,0 +1,30 @@
#pragma once
#include "textureid.h"
#define x(a) kTex##a,
enum ETextureIDs
{
#include "texidsdef.h"
TEXID_COUNT
};
#undef x
inline FTextureID aTexIds[TEXID_COUNT];
#define x(a) #a,
inline const char* const texlistnames[] =
{
#include "texidsdef.h"
};
#undef x
inline void InitTextureIDs()
{
for(int i = 0; i < TEXID_COUNT; i++)
{
aTexIds[i] = TexMan.CheckForTexture(texlistnames[i], ETextureType::Any);
}
}

View file

@ -0,0 +1,27 @@
// list of textures that get referenced directly in game code.
x(ENERGY2)
x(Spark1)
x(Spark2)
x(Playermarker1)
x(Playermarker2)
x(Playermarker3)
x(Playermarker4)
x(Playermarker5)
x(Playermarker6)
x(Playermarker7)
x(Playermarker8)
x(QueenChunk)
x(QueenChunk2)
x(QueenChunk3)
x(AltQueenChunk)
x(TileRamsesWorkTile)
x(Torch1)
x(Torch2)
x(WeaponSpriteSword)
x(WeaponSpriteMummy)
x(WeaponSpriteMagnum)
x(WeaponSpriteM60)
x(WeaponSpriteFlamethrower)
x(AmmoSpriteGrenade)
x(WeaponSpriteCobra)