From bbf1352db1832eef04891ee8d49c8e9b7b9abe2c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 23 Nov 2020 00:18:07 +0100 Subject: [PATCH] - replaced approx 1/3 of all accesses to the tilesiz wrapper class. --- source/blood/src/actor.cpp | 2 +- source/blood/src/aiunicult.cpp | 2 +- source/blood/src/animatesprite.cpp | 8 +++--- source/blood/src/blood.cpp | 2 +- source/blood/src/callback.cpp | 8 +++--- source/blood/src/gameutil.cpp | 4 +-- source/blood/src/nnexts.cpp | 4 +-- source/blood/src/sbar.cpp | 17 ++++++------ source/blood/src/seq.cpp | 2 +- source/build/src/clip.cpp | 2 +- source/build/src/engine.cpp | 4 +-- source/build/src/polymost.cpp | 42 +++++++++++++++++------------- source/exhumed/src/2d.cpp | 23 ++++++++-------- 13 files changed, 64 insertions(+), 56 deletions(-) diff --git a/source/blood/src/actor.cpp b/source/blood/src/actor.cpp index e97f0cc92..df1628a3f 100644 --- a/source/blood/src/actor.cpp +++ b/source/blood/src/actor.cpp @@ -2612,7 +2612,7 @@ void ConcussSprite(int a1, spritetype *pSprite, int x, int y, int z, int a6) return; } - int size = (tilesiz[pSprite->picnum].x*pSprite->xrepeat*tilesiz[pSprite->picnum].y*pSprite->yrepeat)>>1; + int size = (tileWidth(pSprite->picnum)*pSprite->xrepeat*tileHeight(pSprite->picnum)*pSprite->yrepeat)>>1; assert(mass > 0); int t = scale(a6, size, mass); diff --git a/source/blood/src/aiunicult.cpp b/source/blood/src/aiunicult.cpp index 9e3307214..f981940b3 100644 --- a/source/blood/src/aiunicult.cpp +++ b/source/blood/src/aiunicult.cpp @@ -1495,7 +1495,7 @@ int getRangeAttackDist(spritetype* pSprite, int minDist, int maxDist) { } dist = ClipRange(dist, minDist, maxDist); - //viewSetSystemMessage("DIST: %d, SPRHEIGHT: %d: YREPEAT: %d PIC: %d", dist, tilesiz[pSprite->picnum].y, yrepeat, picnum); + //viewSetSystemMessage("DIST: %d, SPRHEIGHT: %d: YREPEAT: %d PIC: %d", dist, tileHeight(pSprite->picnum), yrepeat, picnum); return dist; } diff --git a/source/blood/src/animatesprite.cpp b/source/blood/src/animatesprite.cpp index 26a74657d..49a8d9bcf 100644 --- a/source/blood/src/animatesprite.cpp +++ b/source/blood/src/animatesprite.cpp @@ -261,7 +261,7 @@ static tspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect) pNSprite->z = pTSprite->z; pNSprite->picnum = 908; pNSprite->statnum = kStatDecoration; - pNSprite->xrepeat = pNSprite->yrepeat = (tilesiz[pTSprite->picnum].x*pTSprite->xrepeat)/64; + pNSprite->xrepeat = pNSprite->yrepeat = (tileWidth(pTSprite->picnum)*pTSprite->xrepeat)/64; break; } case VIEW_EFFECT_6: @@ -304,7 +304,7 @@ static tspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect) pNSprite->z = top; pNSprite->picnum = 2101; pNSprite->shade = -128; - pNSprite->xrepeat = pNSprite->yrepeat = (tilesiz[pTSprite->picnum].x*pTSprite->xrepeat)/32; + pNSprite->xrepeat = pNSprite->yrepeat = (tileWidth(pTSprite->picnum)*pTSprite->xrepeat)/32; break; } case VIEW_EFFECT_5: @@ -315,7 +315,7 @@ static tspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect) pNSprite->z = bottom; pNSprite->picnum = 2101; pNSprite->shade = -128; - pNSprite->xrepeat = pNSprite->yrepeat = (tilesiz[pTSprite->picnum].x*pTSprite->xrepeat)/32; + pNSprite->xrepeat = pNSprite->yrepeat = (tileWidth(pTSprite->picnum)*pTSprite->xrepeat)/32; break; } case VIEW_EFFECT_0: @@ -330,7 +330,7 @@ static tspritetype *viewAddEffect(int nTSprite, VIEW_EFFECT nViewEffect) pNSprite->yrepeat = pTSprite->yrepeat >> 2; pNSprite->picnum = pTSprite->picnum; pNSprite->pal = 5; - int height = tilesiz[pNSprite->picnum].y; + int height = tileHeight(pNSprite->picnum); int center = height / 2 + tileTopOffset(pNSprite->picnum); pNSprite->z -= (pNSprite->yrepeat << 2) * (height - center); } diff --git a/source/blood/src/blood.cpp b/source/blood/src/blood.cpp index df34d1d49..f91745f75 100644 --- a/source/blood/src/blood.cpp +++ b/source/blood/src/blood.cpp @@ -596,7 +596,7 @@ ReservedSpace GameInterface::GetReservedScreenSpace(int viewsize) int top = 0; if (gGameOptions.nGameType > 0 && gGameOptions.nGameType <= 3) { - top = (tilesiz[2229].y * ((gNetPlayers + 3) / 4)); + top = (tileHeight(2229) * ((gNetPlayers + 3) / 4)); } return { top, 25 }; } diff --git a/source/blood/src/callback.cpp b/source/blood/src/callback.cpp index 130e2ee0d..c3211304b 100644 --- a/source/blood/src/callback.cpp +++ b/source/blood/src/callback.cpp @@ -57,7 +57,7 @@ void fxFlameLick(int nSprite) // 0 GetSpriteExtents(pSprite, &top, &bottom); for (int i = 0; i < 3; i++) { - int nDist = (pSprite->xrepeat*(tilesiz[pSprite->picnum].x/2))>>3; + int nDist = (pSprite->xrepeat*(tileWidth(pSprite->picnum)/2))>>3; int nAngle = Random(2048); int dx = mulscale30(nDist, Cos(nAngle)); int dy = mulscale30(nDist, Sin(nAngle)); @@ -208,7 +208,7 @@ void fxDynPuff(int nSprite) // 8 spritetype *pSprite = &sprite[nSprite]; if (zvel[nSprite]) { - int nDist = (pSprite->xrepeat*(tilesiz[pSprite->picnum].x/2))>>2; + int nDist = (pSprite->xrepeat*(tileWidth(pSprite->picnum)/2))>>2; int x = pSprite->x + mulscale30(nDist, Cos(pSprite->ang-512)); int y = pSprite->y + mulscale30(nDist, Sin(pSprite->ang-512)); int z = pSprite->z; @@ -313,7 +313,7 @@ void PlayerBubble(int nSprite) // 10 GetSpriteExtents(pSprite, &top, &bottom); for (int i = 0; i < (pPlayer->bubbleTime>>6); i++) { - int nDist = (pSprite->xrepeat*(tilesiz[pSprite->picnum].x/2))>>2; + int nDist = (pSprite->xrepeat*(tileWidth(pSprite->picnum)/2))>>2; int nAngle = Random(2048); int x = pSprite->x + mulscale30(nDist, Cos(nAngle)); int y = pSprite->y + mulscale30(nDist, Sin(nAngle)); @@ -337,7 +337,7 @@ void EnemyBubble(int nSprite) // 11 GetSpriteExtents(pSprite, &top, &bottom); for (int i = 0; i < (klabs(zvel[nSprite])>>18); i++) { - int nDist = (pSprite->xrepeat*(tilesiz[pSprite->picnum].x/2))>>2; + int nDist = (pSprite->xrepeat*(tileWidth(pSprite->picnum)/2))>>2; int nAngle = Random(2048); int x = pSprite->x + mulscale30(nDist, Cos(nAngle)); int y = pSprite->y + mulscale30(nDist, Sin(nAngle)); diff --git a/source/blood/src/gameutil.cpp b/source/blood/src/gameutil.cpp index fee90ced7..c339bad5f 100644 --- a/source/blood/src/gameutil.cpp +++ b/source/blood/src/gameutil.cpp @@ -880,11 +880,11 @@ int GetClosestSpriteSectors(int nSector, int x, int y, int nDist, uint8_t *pSect } int picWidth(short nPic, short repeat) { - return ClipLow((tilesiz[nPic].x * repeat) << 2, 0); + return ClipLow((tileWidth(nPic) * repeat) << 2, 0); } int picHeight(short nPic, short repeat) { - return ClipLow((tilesiz[nPic].y * repeat) << 2, 0); + return ClipLow((tileHeight(nPic) * repeat) << 2, 0); } diff --git a/source/blood/src/nnexts.cpp b/source/blood/src/nnexts.cpp index 2e5630940..bbf26b039 100644 --- a/source/blood/src/nnexts.cpp +++ b/source/blood/src/nnexts.cpp @@ -1053,7 +1053,7 @@ void debrisConcuss(int nOwner, int listIndex, int x, int y, int z, int dmg) { int dx = pSprite->x - x; int dy = pSprite->y - y; int dz = (pSprite->z - z) >> 4; dmg = scale(0x40000, dmg, 0x40000 + dx * dx + dy * dy + dz * dz); - int size = (tilesiz[pSprite->picnum].x * pSprite->xrepeat * tilesiz[pSprite->picnum].y * pSprite->yrepeat) >> 1; + int size = (tileWidth(pSprite->picnum) * pSprite->xrepeat * tileHeight(pSprite->picnum) * pSprite->yrepeat) >> 1; if (xsprite[pSprite->extra].physAttr & kPhysDebrisExplode) { if (gSpriteMass[pSprite->extra].mass > 0) { int t = scale(dmg, size, gSpriteMass[pSprite->extra].mass); @@ -2165,7 +2165,7 @@ void useEffectGen(XSPRITE* pXSource, spritetype* pSprite) { pos = bottom; break; case 2: // middle - pos = pSprite->z + (tilesiz[pSprite->picnum].y / 2 + tileTopOffset(pSprite->picnum)); + pos = pSprite->z + (tileHeight(pSprite->picnum) / 2 + tileTopOffset(pSprite->picnum)); break; case 3: case 4: diff --git a/source/blood/src/sbar.cpp b/source/blood/src/sbar.cpp index 04ef835ea..a308bc41f 100644 --- a/source/blood/src/sbar.cpp +++ b/source/blood/src/sbar.cpp @@ -200,8 +200,9 @@ private: void TileHGauge(int nTile, double x, double y, int nMult, int nDiv, int nStat = 0, int nScale = 65536) { - int bx = scale(mulscale16(tilesiz[nTile].x, nScale), nMult, nDiv) + x; - double scale = double(bx - x) / tileWidth(nTile); + int w = tileWidth(nTile); + int bx = scale(mulscale16(w, nScale), nMult, nDiv) + x; + double scale = double(bx - x) / w; double sc = nScale / 65536.; DrawGraphic(tileGetTexture(nTile, true), x, y, DI_ITEM_LEFT_TOP, 1., -1, -1, scale*sc, sc, 0xffffffff, 0, 0); } @@ -346,7 +347,7 @@ private: if (pPlayer->packSlots[i].curAmount) { packs[nPacks++] = i; - width += tilesiz[gPackIcons[i]].x + 1; + width += tileWidth(gPackIcons[i]) + 1; } } width /= 2; @@ -365,7 +366,7 @@ private: else nShade = 24; DrawStatNumber("%3d", pPlayer->packSlots[nPack].curAmount, 2250, x - 4, y - 13, nShade, 0); - x += tilesiz[gPackIcons[nPack]].x + 1; + x += tileWidth(gPackIcons[nPack]) + 1; } } } @@ -577,7 +578,7 @@ private: void DrawStatusBar(int nPalette) { - BeginStatusBar(320, 200, tilesiz[2200].y); + BeginStatusBar(320, 200, tileHeight(2200)); PLAYER* pPlayer = gView; XSPRITE* pXSprite = pPlayer->pXSprite; @@ -640,7 +641,7 @@ private: { TileHGauge(2260, 124, 175.5, pPlayer->throwPower, 65536); } - drawInventory(pPlayer, 166, 200 - tilesiz[2200].y); + drawInventory(pPlayer, 166, 200 - tileHeight(2200)); // Depending on the scale we can lower the stats display. This needs some tweaking but this catches the important default case already. PrintLevelStats(pPlayer, (hud_statscale <= 0.501f || hud_scalefactor < 0.7) && double(xdim)/ydim > 1.6? 28 : 56); @@ -775,7 +776,7 @@ private: if (pPlayer->throwPower) TileHGauge(2260, 124, 175, pPlayer->throwPower, 65536); else - drawInventory(pPlayer, 166, 200-tilesiz[2201].y / 2 - 30); + drawInventory(pPlayer, 166, 200-tileHeight(2201) / 2 - 30); PrintLevelStats(pPlayer, 28); } @@ -810,7 +811,7 @@ private: if (pPlayer->throwPower) TileHGauge(2260, 124, 175, pPlayer->throwPower, 65536); else - drawInventory(pPlayer, 166, 200 - tilesiz[2201].y / 2); + drawInventory(pPlayer, 166, 200 - tileHeight(2201) / 2); } if (hud_size == Hud_Mini) { diff --git a/source/blood/src/seq.cpp b/source/blood/src/seq.cpp index f07d4911b..517ce73be 100644 --- a/source/blood/src/seq.cpp +++ b/source/blood/src/seq.cpp @@ -291,7 +291,7 @@ void UpdateSprite(int nXSprite, SEQFRAME* pFrame) assert(pSprite->extra == nXSprite); if (pSprite->flags & 2) { - if (tilesiz[pSprite->picnum].y != tilesiz[seqGetTile(pFrame)].y || tileTopOffset(pSprite->picnum) != tileTopOffset(seqGetTile(pFrame)) + if (tileHeight(pSprite->picnum) != tileHeight(seqGetTile(pFrame)) || tileTopOffset(pSprite->picnum) != tileTopOffset(seqGetTile(pFrame)) || (pFrame->yrepeat && pFrame->yrepeat != pSprite->yrepeat)) pSprite->flags |= 4; } diff --git a/source/build/src/clip.cpp b/source/build/src/clip.cpp index 15660e16d..f323609f4 100644 --- a/source/build/src/clip.cpp +++ b/source/build/src/clip.cpp @@ -1198,7 +1198,7 @@ int32_t try_facespr_intersect(uspriteptr_t const spr, vec3_t const in, vec2_t const off = { scale(vx, topu, bot), scale(vy, topu, bot) }; int32_t const dist = off.x * off.x + off.y * off.y; - siz = tilesiz[spr->picnum].x * spr->xrepeat; + siz = tileWidth(spr->picnum) * spr->xrepeat; if (dist > mulscale7(siz, siz)) return 0; diff --git a/source/build/src/engine.cpp b/source/build/src/engine.cpp index 1cedd9fcb..9323e0093 100644 --- a/source/build/src/engine.cpp +++ b/source/build/src/engine.cpp @@ -1707,7 +1707,7 @@ void renderDrawMapView(int32_t dax, int32_t day, int32_t zoome, int16_t ang) if ((unsigned)globalpicnum >= (unsigned)MAXTILES) globalpicnum = 0; tileUpdatePicnum(&globalpicnum, s); setgotpic(globalpicnum); - if ((tilesiz[globalpicnum].x <= 0) || (tilesiz[globalpicnum].y <= 0)) continue; + if ((tileWidth(globalpicnum) <= 0) || (tileHeight(globalpicnum) <= 0)) continue; globalshade = max(min(sec->floorshade, numshades - 1), 0); if ((globalorientation&64) == 0) @@ -1820,7 +1820,7 @@ void renderDrawMapView(int32_t dax, int32_t day, int32_t zoome, int16_t ang) if ((unsigned)globalpicnum >= (unsigned)MAXTILES) globalpicnum = 0; tileUpdatePicnum(&globalpicnum, s); setgotpic(globalpicnum); - if ((tilesiz[globalpicnum].x <= 0) || (tilesiz[globalpicnum].y <= 0)) continue; + if ((tileWidth(globalpicnum) <= 0) || (tileHeight(globalpicnum) <= 0)) continue; if ((sector[spr->sectnum].ceilingstat&1) > 0) globalshade = ((int32_t)sector[spr->sectnum].ceilingshade); diff --git a/source/build/src/polymost.cpp b/source/build/src/polymost.cpp index a7b504269..742c4ca3a 100644 --- a/source/build/src/polymost.cpp +++ b/source/build/src/polymost.cpp @@ -255,7 +255,13 @@ static void polymost_updaterotmat(void) renderSetVisibility(mulscale16(g_visibility, mulscale16(xdimenscale, viewingrangerecip)) * fviewingrange * (1.f / (65536.f * 65536.f)) / r_ambientlight); } -static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, int32_t method, const vec2_16_t& tilesiz); +const vec2_16_t tileSize(size_t index) +{ + vec2_16_t v = { (int16_t)tileWidth(index), (int16_t)tileHeight(index) }; + return v; +} + +static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, int32_t method, const vec2_16_t& tilesize); // Hack for Duke's camera until I can find out why this behaves erratically. int skiptile = -1; @@ -790,7 +796,7 @@ skip: ; int n = 4; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].cy[0] = n0.y; vsp[i].cy[1] = n1.y; @@ -804,7 +810,7 @@ skip: ; int n = 3; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].cy[0] = n0.y; vsp[i].ctag = gtag; @@ -817,7 +823,7 @@ skip: ; int n = 3; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].cy[1] = n1.y; vsp[i].ctag = gtag; @@ -831,7 +837,7 @@ skip: ; int n = 4; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].ctag = vsp[i].ftag = -1; } @@ -852,7 +858,7 @@ skip: ; int n = 4; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].fy[0] = n0.y; vsp[i].fy[1] = n1.y; @@ -866,7 +872,7 @@ skip: ; int n = 3; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].fy[0] = n0.y; vsp[i].ftag = gtag; @@ -879,7 +885,7 @@ skip: ; int n = 3; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].fy[1] = n1.y; vsp[i].ftag = gtag; @@ -891,7 +897,7 @@ skip: ; int n = 4; polymost_clipmost(dpxy, n, x0, x1, y0top, y0bot, y1top, y1bot); - polymost_drawpoly(dpxy, n, domostpolymethod, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, domostpolymethod, tileSize(globalpicnum)); vsp[i].ctag = vsp[i].ftag = -1; } @@ -1273,7 +1279,7 @@ static void fgetzsofslope(usectorptr_t sec, float dax, float day, float* ceilz, *florz += (sec->floorheinum*j)/i; } -static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, int32_t method, const vec2_16_t &tilesiz) +static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, int32_t method, const vec2_16_t &tilesize) { flatskyrender = 0; vec2f_t xys[8]; @@ -1302,8 +1308,8 @@ static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, i float vv[2]; float t = (float)((1<<(widthBits(globalpicnum)))<>1)+dapyoffs)) - vv[1]*ghoriz; - int ti = (1<<(heightBits(globalpicnum))); if (ti != tilesiz.y) ti += ti; + vv[0] = dd*((float)((tilesize.y>>1)+dapyoffs)) - vv[1]*ghoriz; + int ti = (1<<(heightBits(globalpicnum))); if (ti != tilesize.y) ti += ti; vec3f_t o; skyclamphack = 0; @@ -1455,7 +1461,7 @@ static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, i cxy[i].y = v.y * r + ghalfy; } - polymost_drawpoly(cxy, n3, method|DAMETH_WALL, tilesiz); + polymost_drawpoly(cxy, n3, method|DAMETH_WALL, tilesize); otex = otexbak, xtex = xtexbak, ytex = ytexbak; } @@ -2075,7 +2081,7 @@ static void polymost_drawalls(int32_t const bunch) int i = (!(wal->cstat&4)) ? sector[nextsectnum].ceilingz : sec->ceilingz; // over - calc_ypanning(i, ryp0, ryp1, x0, x1, wal->ypanning, wal->yrepeat, wal->cstat&4, tilesiz[globalpicnum]); + calc_ypanning(i, ryp0, ryp1, x0, x1, wal->ypanning, wal->yrepeat, wal->cstat&4, tileSize(globalpicnum)); if (wal->cstat&8) //xflip { @@ -2110,7 +2116,7 @@ static void polymost_drawalls(int32_t const bunch) int i = (!(nwal->cstat&4)) ? sector[nextsectnum].floorz : sec->ceilingz; // under - calc_ypanning(i, ryp0, ryp1, x0, x1, nwal->ypanning, wal->yrepeat, !(nwal->cstat&4), tilesiz[globalpicnum]); + calc_ypanning(i, ryp0, ryp1, x0, x1, nwal->ypanning, wal->yrepeat, !(nwal->cstat&4), tileSize(globalpicnum)); if (wal->cstat&8) //xflip { @@ -2155,7 +2161,7 @@ static void polymost_drawalls(int32_t const bunch) else { i = nwcs4 ? sec->ceilingz : sec->floorz; } // white / 1-way - calc_ypanning(i, ryp0, ryp1, x0, x1, wal->ypanning, wal->yrepeat, nwcs4 && !maskingOneWay, tilesiz[globalpicnum]); + calc_ypanning(i, ryp0, ryp1, x0, x1, wal->ypanning, wal->yrepeat, nwcs4 && !maskingOneWay, tileSize(globalpicnum)); if (wal->cstat&8) //xflip { @@ -2725,7 +2731,7 @@ static void polymost_drawmaskwallinternal(int32_t wallIndex) // mask calc_ypanning((!(wal->cstat & 4)) ? max(nsec->ceilingz, sec->ceilingz) : min(nsec->floorz, sec->floorz), ryp0, ryp1, - x0, x1, wal->ypanning, wal->yrepeat, 0, tilesiz[globalpicnum]); + x0, x1, wal->ypanning, wal->yrepeat, 0, tileSize(globalpicnum)); if (wal->cstat&8) //xflip { @@ -2831,7 +2837,7 @@ static void polymost_drawmaskwallinternal(int32_t wallIndex) pow2xsplit = 0; skyclamphack = 0; - polymost_drawpoly(dpxy, n, method, tilesiz[globalpicnum]); + polymost_drawpoly(dpxy, n, method, tileSize(globalpicnum)); } void polymost_drawmaskwall(int32_t damaskwallcnt) diff --git a/source/exhumed/src/2d.cpp b/source/exhumed/src/2d.cpp index 734d60d06..9c5f80041 100644 --- a/source/exhumed/src/2d.cpp +++ b/source/exhumed/src/2d.cpp @@ -136,7 +136,6 @@ void DrawRel(int tile, double x, double y, int shade) // this might be static within the DoPlasma function? static uint8_t* PlasmaBuffer; static int nPlasmaTile = kTile4092; -static int nLogoTile; static unsigned int nSmokeBottom; static unsigned int nSmokeRight; static unsigned int nSmokeTop; @@ -161,15 +160,16 @@ enum void menu_DoPlasma() { + auto nLogoTile = GameLogo(); + int lw = tileWidth(nLogoTile); + int lh = tileHeight(nLogoTile); + int ptile = nPlasmaTile; int pclock = I_GetBuildTime(); if (pclock >= nextPlasmaTic || !PlasmaBuffer) { nextPlasmaTic = pclock + 4; - if (!nLogoTile) - nLogoTile = GameLogo(); - if (!PlasmaBuffer) { auto pixels = TileFiles.tileCreate(kTile4092, kPlasmaWidth, kPlasmaHeight); @@ -178,15 +178,16 @@ void menu_DoPlasma() PlasmaBuffer = TileFiles.tileCreate(kTile4093, kPlasmaWidth, kPlasmaHeight); memset(PlasmaBuffer, 96, kPlasmaWidth * kPlasmaHeight); - nSmokeLeft = 160 - tilesiz[nLogoTile].x / 2; - nSmokeRight = nSmokeLeft + tilesiz[nLogoTile].x; - nSmokeTop = 40 - tilesiz[nLogoTile].y / 2; - nSmokeBottom = nSmokeTop + tilesiz[nLogoTile].y - 1; + nSmokeLeft = 160 - lw / 2; + nSmokeRight = nSmokeLeft + lw; + + nSmokeTop = 40 - lh / 2; + nSmokeBottom = nSmokeTop + lh - 1; for (int i = 0; i < 5; i++) { - int logoWidth = tilesiz[nLogoTile].x; + int logoWidth = lw; plasma_C[i] = IntToFixed(nSmokeLeft + rand() % logoWidth); plasma_B[i] = (rnd_plasma.GenRand32() % 327680) + 0x10000; @@ -297,7 +298,7 @@ void menu_DoPlasma() int pC = plasma_C[j]; int badOffset = FixedToInt(pC) < nSmokeLeft || FixedToInt(pC) >= nSmokeRight; - const uint8_t* ptr3 = (logopix + (FixedToInt(pC) - nSmokeLeft) * tilesiz[nLogoTile].y); + const uint8_t* ptr3 = (logopix + (FixedToInt(pC) - nSmokeLeft) * lh); plasma_C[j] += plasma_B[j]; @@ -332,7 +333,7 @@ void menu_DoPlasma() { nSmokeOffset = nSmokeBottom; - ptr3 += tilesiz[nLogoTile].y - 1; + ptr3 += lh - 1; while (nSmokeOffset > nSmokeTop) {