mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-22 17:01:08 +00:00
- cleanup of Exhumed's 2D code.
This commit is contained in:
parent
4e4be4f3d0
commit
fd9a9232af
8 changed files with 55 additions and 58 deletions
|
@ -51,12 +51,12 @@ BEGIN_PS_NS
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void DrawAbs(int tile, double x, double y, int shade = 0)
|
||||
void DrawAbs(FGameTexture* tex, double x, double y, int shade = 0)
|
||||
{
|
||||
DrawTexture(twod, tileGetTexture(tile), x, y, DTA_FullscreenScale, FSMode_Fit320x200, DTA_TopLeft, true, DTA_Color, shadeToLight(shade), TAG_DONE);
|
||||
DrawTexture(twod, tex, x, y, DTA_FullscreenScale, FSMode_Fit320x200, DTA_TopLeft, true, DTA_Color, shadeToLight(shade), TAG_DONE);
|
||||
}
|
||||
|
||||
void DrawRel(FGameTexture* tex, double x, double y, int shade = 0)
|
||||
void DrawRel(FGameTexture* tex, double x, double y, int shade)
|
||||
{
|
||||
// This is slightly different than what the backend does here, but critical for some graphics.
|
||||
int offx = (int(tex->GetDisplayWidth()) >> 1) + int(tex->GetDisplayLeftOffset());
|
||||
|
@ -64,17 +64,24 @@ void DrawRel(FGameTexture* tex, double x, double y, int shade = 0)
|
|||
DrawTexture(twod, tex, x - offx, y - offy, DTA_FullscreenScale, FSMode_Fit320x200, DTA_TopLeft, true, DTA_Color, shadeToLight(shade), TAG_DONE);
|
||||
}
|
||||
|
||||
void DrawRel(int tile, double x, double y, int shade)
|
||||
{
|
||||
DrawRel(tileGetTexture(tile), x, y, shade);
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
kPlasmaWidth = 320,
|
||||
kPlasmaHeight = 80,
|
||||
};
|
||||
|
||||
void DrawLogo()
|
||||
{
|
||||
const auto pLogoTex = TexMan.GetGameTexture(GameLogo());
|
||||
DrawRel(pLogoTex, 160, 40);
|
||||
|
||||
// draw the fire urn/lamp thingies
|
||||
const int urnclock = (I_GetBuildTime() / 16) & 3;
|
||||
static int urnidx[] = { kTexUrn1, kTexUrn2, kTexUrn3, kTexUrn4, kTexUrn1, kTexUrn2 };
|
||||
DrawRel(TexMan.GetGameTexture(aTexIds[urnidx[urnclock]]), 50, 150);
|
||||
DrawRel(TexMan.GetGameTexture(aTexIds[urnidx[urnclock + 2]]), 270, 150);
|
||||
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
@ -84,7 +91,8 @@ enum
|
|||
void menu_DoPlasma()
|
||||
{
|
||||
static uint8_t* PlasmaBuffer;
|
||||
static int nPlasmaTile;
|
||||
static FGameTexture* nPlasmaTile;
|
||||
static FGameTexture* nPlasmaTileAlt;
|
||||
static int nSmokeBottom;
|
||||
static int nSmokeRight;
|
||||
static int nSmokeTop;
|
||||
|
@ -97,7 +105,8 @@ void menu_DoPlasma()
|
|||
|
||||
if (!nPlasmaTile)
|
||||
{
|
||||
nPlasmaTile = kTile4092;
|
||||
nPlasmaTile = TexMan.GetGameTexture(aTexIds[kTexPlasmaTile1]);
|
||||
nPlasmaTileAlt = TexMan.GetGameTexture(aTexIds[kTexPlasmaTile2]);
|
||||
plasma_A[5] = {};
|
||||
plasma_B[5] = {};
|
||||
plasma_C[5] = {};
|
||||
|
@ -107,7 +116,7 @@ void menu_DoPlasma()
|
|||
const auto pLogoTex = TexMan.GetGameTexture(nLogoTexid);
|
||||
const int logowidth = (int)pLogoTex->GetDisplayWidth();
|
||||
const int logoheight = (int)pLogoTex->GetDisplayHeight();
|
||||
const int ptile = nPlasmaTile;
|
||||
const auto ptile = nPlasmaTile;
|
||||
const int pclock = I_GetBuildTime();
|
||||
|
||||
while (pclock >= nextPlasmaTic || !PlasmaBuffer)
|
||||
|
@ -116,10 +125,10 @@ void menu_DoPlasma()
|
|||
|
||||
if (!PlasmaBuffer)
|
||||
{
|
||||
auto pixels = GetWritablePixels(tileGetTextureID(kTile4092));
|
||||
auto pixels = GetWritablePixels(tileGetTextureID(kPlasmaTile1));
|
||||
memset(pixels, 96, kPlasmaWidth * kPlasmaHeight);
|
||||
|
||||
PlasmaBuffer = GetWritablePixels(tileGetTextureID(kTile4093));
|
||||
PlasmaBuffer = GetWritablePixels(tileGetTextureID(kPlasmaTile2));
|
||||
memset(PlasmaBuffer, 96, kPlasmaWidth * kPlasmaHeight);
|
||||
|
||||
nSmokeLeft = 160 - logowidth / 2;
|
||||
|
@ -139,9 +148,9 @@ void menu_DoPlasma()
|
|||
}
|
||||
}
|
||||
|
||||
uint8_t* plasmapix = GetWritablePixels(tileGetTextureID(nPlasmaTile));
|
||||
uint8_t* plasmapix = GetWritablePixels(nPlasmaTile->GetID());
|
||||
uint8_t* r_ebx = plasmapix + 81;
|
||||
const uint8_t* r_edx = GetWritablePixels(tileGetTextureID(nPlasmaTile ^ 1)) + 81; // flip between value of 4092 and 4093 with xor
|
||||
const uint8_t* r_edx = GetWritablePixels(nPlasmaTileAlt->GetID()) + 81; // flip between two instances
|
||||
|
||||
for (int x = 0; x < kPlasmaWidth - 2; x++)
|
||||
{
|
||||
|
@ -270,24 +279,12 @@ void menu_DoPlasma()
|
|||
v28[nSmokeOffset] = 175;
|
||||
}
|
||||
|
||||
// flip between tile 4092 and 4093
|
||||
if (nPlasmaTile == kTile4092)
|
||||
{
|
||||
nPlasmaTile = kTile4093;
|
||||
}
|
||||
else if (nPlasmaTile == kTile4093)
|
||||
{
|
||||
nPlasmaTile = kTile4092;
|
||||
}
|
||||
// flip between both instances
|
||||
std::swap(nPlasmaTile, nPlasmaTileAlt);
|
||||
}
|
||||
|
||||
DrawAbs(ptile, 0, 0);
|
||||
DrawRel(pLogoTex, 160, 40);
|
||||
|
||||
// draw the fire urn/lamp thingies
|
||||
const int urnclock = (pclock / 16) & 3;
|
||||
DrawRel(kTile3512 + urnclock, 50, 150);
|
||||
DrawRel(kTile3512 + ((urnclock + 2) & 3), 270, 150);
|
||||
DrawLogo();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -222,7 +222,7 @@ void DrawClock()
|
|||
{
|
||||
int ebp = 49;
|
||||
|
||||
auto pixels = GetWritablePixels(tileGetTextureID(kTile3603));
|
||||
auto pixels = GetWritablePixels(tileGetTextureID(kClockTile));
|
||||
|
||||
memset(pixels, TRANSPARENT_INDEX, 4096);
|
||||
|
||||
|
@ -241,7 +241,7 @@ void DrawClock()
|
|||
auto tex = TexMan.GetGameTexture(texid);
|
||||
int yPos = 32 - tex->GetTexelHeight() / 2;
|
||||
|
||||
CopyTileToBitmap(texid, tileGetTextureID(kTile3603), ebp - tex->GetTexelWidth() / 2, yPos);
|
||||
CopyTileToBitmap(texid, tileGetTextureID(kClockTile), ebp - tex->GetTexelWidth() / 2, yPos);
|
||||
|
||||
ebp -= 15;
|
||||
|
||||
|
@ -390,16 +390,13 @@ static void SetTileNames(TilesetBuildInfo& info)
|
|||
void GameInterface::SetupSpecialTextures(TilesetBuildInfo& info)
|
||||
{
|
||||
SetTileNames(info);
|
||||
info.CreateWritable(kTile4092, kPlasmaWidth, kPlasmaHeight);
|
||||
info.CreateWritable(kTile4093, kPlasmaWidth, kPlasmaHeight);
|
||||
info.CreateWritable(kPlasmaTile1, kPlasmaWidth, kPlasmaHeight);
|
||||
info.CreateWritable(kPlasmaTile2, kPlasmaWidth, kPlasmaHeight);
|
||||
info.CreateWritable(kTileRamsesWorkTile, kSpiritY * 2, kSpiritX * 2);
|
||||
info.MakeWritable(kTileLoboLaptop);
|
||||
for(int i = kTile3603; i < kClockSymbol1 + 145; i++)
|
||||
info.MakeWritable(kTile3603);
|
||||
info.MakeWritable(kClockTile);
|
||||
info.MakeWritable(kEnergy1);
|
||||
info.MakeWritable(kEnergy2);
|
||||
for (int i = 0; i < 16; i++)
|
||||
info.MakeWritable(kClockSymbol1);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -576,7 +573,7 @@ void SerializeState(FSerializer& arc)
|
|||
("creatureskilled", nCreaturesKilled)
|
||||
("freeze", nFreeze)
|
||||
("snakecam", nSnakeCam)
|
||||
("clockval", nClockVal) // kTile3603
|
||||
("clockval", nClockVal)
|
||||
("redticks", nRedTicks)
|
||||
("alarmticks", nAlarmTicks)
|
||||
("buttoncolor", nButtonColor)
|
||||
|
|
|
@ -198,7 +198,7 @@ extern char g_modDir[BMAX_PATH];
|
|||
|
||||
void G_LoadGroupsInDir(const char* dirname);
|
||||
void G_DoAutoload(const char* dirname);
|
||||
void DrawRel(int tile, double x, double y, int shade = 0);
|
||||
void DrawRel(FGameTexture* tile, double x, double y, int shade = 0);
|
||||
void LevelFinished();
|
||||
|
||||
// savegame.
|
||||
|
|
|
@ -107,13 +107,9 @@ void GameInterface::DrawBackground()
|
|||
|
||||
twod->ClearScreen();
|
||||
|
||||
DrawRel(kSkullHead, 160, 100, 0);
|
||||
DrawRel(kSkullJaw, 161, 130, 0);
|
||||
DrawRel(TexMan.GetGameTexture(nLogoTile), 160, 40, 0);
|
||||
|
||||
// draw the fire urn/lamp thingies
|
||||
DrawRel(kTile3512 + dword_9AB5F, 50, 150, 0);
|
||||
DrawRel(kTile3512 + ((dword_9AB5F + 2) & 3), 270, 150, 0);
|
||||
DrawRel(TexMan.GetGameTexture(aTexIds[kTexSkullHead]), 160, 100, 0);
|
||||
DrawRel(TexMan.GetGameTexture(aTexIds[kTexSkullJaw]), 161, 130, 0);
|
||||
DrawLogo();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -164,3 +164,11 @@ x(Playermarker8, 3578)
|
|||
|
||||
x(WeaponSpriteSword, 57)
|
||||
x(WeaponSpriteMummy, 3455)
|
||||
|
||||
x(PlasmaTile1, 4092)
|
||||
x(PlasmaTile2, 4093)
|
||||
x(ClockTile, 3603)
|
||||
x(Urn1, 3512)
|
||||
x(Urn2, 3513)
|
||||
x(Urn3, 3514)
|
||||
x(Urn4, 3515)
|
||||
|
|
|
@ -18,16 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
|
||||
#pragma once
|
||||
|
||||
enum
|
||||
{
|
||||
kTile3000 = 3000,
|
||||
kTile3512 = 3512,
|
||||
kTile3593 = 3593,
|
||||
kTile3603 = 3603,
|
||||
kTile4092 = 4092,
|
||||
kTile4093 = 4093,
|
||||
};
|
||||
|
||||
BEGIN_PS_NS
|
||||
|
||||
#define x(a, b) k##a = b,
|
||||
|
|
|
@ -2590,7 +2590,7 @@ void PostProcess()
|
|||
}
|
||||
else // nMap == kMap20)
|
||||
{
|
||||
auto texid3603 = tileGetTextureID(kTile3603);
|
||||
auto texid3603 = tileGetTextureID(kClockTile);
|
||||
for(auto& sect: sector)
|
||||
{
|
||||
sect.pSoundSect = §
|
||||
|
|
|
@ -26,3 +26,12 @@ x(AmmoSpriteGrenade)
|
|||
x(WeaponSpriteCobra)
|
||||
x(ExhumedLogo)
|
||||
x(PowerslaveLogo)
|
||||
x(PlasmaTile1)
|
||||
x(PlasmaTile2)
|
||||
x(ClockTile)
|
||||
x(Urn1)
|
||||
x(Urn2)
|
||||
x(Urn3)
|
||||
x(Urn4)
|
||||
x(SkullHead)
|
||||
x(SkullJaw)
|
||||
|
|
Loading…
Reference in a new issue