- more HUD refactoring

This commit is contained in:
Christoph Oelckers 2023-01-01 00:46:36 +01:00
parent 8f61abdf75
commit 1aa88bd201
6 changed files with 40 additions and 20 deletions

View file

@ -1016,7 +1016,7 @@ void AddSystemVars()
AddGameVar(aszBuf, WEAPON_FLAG_STANDSTILL, GAMEVAR_FLAG_PERPLAYER | GAMEVAR_FLAG_SYSTEM);
sprintf(aszBuf, "WEAPON%d_SHOOTS", TRIPBOMB_WEAPON);
AddGameVar(aszBuf, DTILE_HANDHOLDINGLASER, GAMEVAR_FLAG_PERPLAYER | GAMEVAR_FLAG_SYSTEM);
AddGameVar(aszBuf, DTILE_HANDHOLDINGLASER0, GAMEVAR_FLAG_PERPLAYER | GAMEVAR_FLAG_SYSTEM);
sprintf(aszBuf, "WEAPON%d_SPAWNTIME", TRIPBOMB_WEAPON);
AddGameVar(aszBuf, 0, GAMEVAR_FLAG_PERPLAYER | GAMEVAR_FLAG_SYSTEM);

View file

@ -62,6 +62,17 @@ inline static void hud_drawpal(double x, double y, int tilenum, int shade, int o
//
//---------------------------------------------------------------------------
inline static void hud_drawpal(double x, double y, const char* tilenum, int shade, int orientation, int p, DAngle angle)
{
hud_drawsprite(x, y, 1., angle.Degrees(), TexMan.CheckForTexture(tilenum, ETextureType::Any), shade, p, orientation);
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
static void displayloogie(player_struct* p, double const interpfrac)
{
if (p->loogcnt == 0) return;
@ -111,7 +122,7 @@ static bool animateknee(int gs, player_struct* p, double xoffset, double yoffset
static const int8_t knee_y[] = { 0,-8,-16,-32,-64,-84,-108,-108,-108,-72,-32,-8 };
const double kneei = interpolatedvalue<double>(knee_y[p->oknee_incs], knee_y[p->knee_incs], interpfrac);
hud_drawpal(105 + (kneei * 0.25) + xoffset, 280 + kneei + yoffset, DTILE_KNEE, gs, 4, pal, angle);
hud_drawpal(105 + (kneei * 0.25) + xoffset, 280 + kneei + yoffset, "KNEE", gs, 4, pal, angle);
return true;
}
@ -125,10 +136,10 @@ static bool animateknee(int gs, player_struct* p, double xoffset, double yoffset
static bool animateknuckles(int gs, player_struct* p, double xoffset, double yoffset, int pal, DAngle angle)
{
if (isWW2GI() || p->over_shoulder_on != 0 || p->knuckle_incs == 0 || p->GetActor()->spr.extra <= 0) return false;
static const char* const frames[] = { "CRACKKNUCKLES0", "CRACKKNUCKLES1", "CRACKKNUCKLES2", "CRACKKNUCKLES3" };
static const uint8_t knuckle_frames[] = { 0,1,2,2,3,3,3,2,2,1,0 };
hud_drawpal(160 + xoffset, 180 + yoffset, DTILE_CRACKKNUCKLES + knuckle_frames[p->knuckle_incs >> 1], gs, 4, pal, angle);
hud_drawpal(160 + xoffset, 180 + yoffset, frames[knuckle_frames[p->knuckle_incs >> 1]], gs, 4, pal, angle);
return true;
}
@ -163,10 +174,11 @@ static bool animatetip(int gs, player_struct* p, double xoffset, double yoffset,
{
if (p->tipincs == 0) return false;
static const char* frames[] = { "TIP0", "TIP1" };
static const int8_t tip_y[] = { 0,-8,-16,-32,-64,-84,-108,-108,-108,-108,-108,-108,-108,-108,-108,-108,-96,-72,-64,-32,-16 };
const double tipi = interpolatedvalue<double>(tip_y[p->otipincs], tip_y[p->tipincs], interpfrac) * 0.5;
hud_drawpal(170 + xoffset, 240 + tipi + yoffset, DTILE_TIP + ((26 - p->tipincs) >> 4), gs, 0, pal, angle);
hud_drawpal(170 + xoffset, 240 + tipi + yoffset, frames[((26 - p->tipincs) >> 4)], gs, 0, pal, angle);
return true;
}
@ -181,15 +193,16 @@ static bool animateaccess(int gs, player_struct* p, double xoffset, double yoffs
{
if (p->access_incs == 0 || p->GetActor()->spr.extra <= 0) return false;
static const char* const frames[] = { "HANDHOLDINGLASER0", "HANDHOLDINGLASER1", "HANDHOLDINGLASER2", "HANDHOLDINGLASER3" };
static const int8_t access_y[] = {0,-8,-16,-32,-64,-84,-108,-108,-108,-108,-108,-108,-108,-108,-108,-108,-96,-72,-64,-32,-16};
const double accessi = interpolatedvalue<double>(access_y[p->oaccess_incs], access_y[p->access_incs], interpfrac);
const int pal = p->access_spritenum != nullptr ? p->access_spritenum->spr.pal : 0;
if ((p->access_incs-3) > 0 && (p->access_incs-3)>>3)
hud_drawpal(170 + (accessi * 0.25) + xoffset, 266 + accessi + yoffset, DTILE_HANDHOLDINGLASER + (p->access_incs >> 3), gs, 0, pal, angle);
hud_drawpal(170 + (accessi * 0.25) + xoffset, 266 + accessi + yoffset, frames[(p->access_incs >> 3)], gs, 0, pal, angle);
else
hud_drawpal(170 + (accessi * 0.25) + xoffset, 266 + accessi + yoffset, DTILE_HANDHOLDINGACCESS, gs, 4, pal, angle);
hud_drawpal(170 + (accessi * 0.25) + xoffset, 266 + accessi + yoffset, "HANDHOLDINGACCESS", gs, 4, pal, angle);
return true;
}
@ -305,11 +318,11 @@ void displayweapon_d(int snum, double interpfrac)
{
if (*kb < 5 || *kb > 9)
{
hud_drawpal(220 + offsets.X, 250 + offsets.Y, DTILE_KNEE, shade, o, pal2, angle);
hud_drawpal(220 + offsets.X, 250 + offsets.Y, "KNEE", shade, o, pal2, angle);
}
else
{
hud_drawpal(160 + offsets.X, 214 + offsets.Y, DTILE_KNEE + 1, shade, o, pal2, angle);
hud_drawpal(160 + offsets.X, 214 + offsets.Y, "KNEE1", shade, o, pal2, angle);
}
}
};
@ -322,16 +335,17 @@ void displayweapon_d(int snum, double interpfrac)
auto displaytripbomb = [&]()
{
static const char* const frames[] = { "HANDHOLDINGLASER0", "HANDHOLDINGLASER1", "HANDHOLDINGLASER2", "HANDHOLDINGLASER3" };
offsets.X += 8;
offsets.Y -= 10;
if (*kb > 6)
offsets.Y += kickback_pic * 8.;
else if (*kb < 4)
hud_drawpal(142 + offsets.X, 234 + offsets.Y, DTILE_HANDHOLDINGLASER + 3, shade, o, pal, angle);
hud_drawpal(142 + offsets.X, 234 + offsets.Y, "HANDHOLDINGLASER3", shade, o, pal, angle);
hud_drawpal(130 + offsets.X, 249 + offsets.Y, DTILE_HANDHOLDINGLASER + (*kb >> 2), shade, o, pal, angle);
hud_drawpal(152 + offsets.X, 249 + offsets.Y, DTILE_HANDHOLDINGLASER + (*kb >> 2), shade, o | 4, pal, angle);
hud_drawpal(130 + offsets.X, 249 + offsets.Y, frames[(*kb >> 2)], shade, o, pal, angle);
hud_drawpal(152 + offsets.X, 249 + offsets.Y, frames[(*kb >> 2)], shade, o | 4, pal, angle);
};
//---------------------------------------------------------------------------

View file

@ -548,7 +548,10 @@ x(WALLBLOOD7, 2307)
x(WALLBLOOD8, 2308)
x(BURNING2, 2310)
x(FIRE2, 2311)
x(CRACKKNUCKLES, 2324)
x(CRACKKNUCKLES0, 2324)
x(CRACKKNUCKLES1, 2325)
x(CRACKKNUCKLES2, 2326)
x(CRACKKNUCKLES3, 2327)
x(SMALLSMOKE, 2329)
x(SMALLSMOKEMAKER, 2330)
x(FLOORFLAME, 2333)
@ -651,6 +654,7 @@ x(CREDITPAGE2, 2505)
x(CREDITPAGE3, 2506)
x(DEVISTATOR, 2510)
x(KNEE, 2521)
x(KNEE1, 2522)
x(CROSSHAIR, 2523)
x(FIRSTGUN, 2524)
x(FIRSTGUNRELOAD, 2528)
@ -666,13 +670,17 @@ x(RPGMUZZLEFLASH, 2545)
x(FREEZE, 2548)
x(CATLITE, 2552)
x(SHRINKER, 2556)
x(HANDHOLDINGLASER, 2563)
x(HANDHOLDINGLASER0, 2563)
x(HANDHOLDINGLASER1, 2563)
x(HANDHOLDINGLASER2, 2563)
x(HANDHOLDINGLASER3, 2563)
x(TRIPBOMB, 2566)
x(LASERLINE, 2567)
x(HANDHOLDINGACCESS, 2568)
x(HANDREMOTE, 2570)
x(HANDTHROW, 2573)
x(TIP, 2576)
x(TIP0, 2576)
x(TIP1, 2576)
x(GLAIR, 2578)
x(SCUBAMASK, 2581)
x(SPACEMASK, 2584)

View file

@ -615,8 +615,6 @@ x(SHELL1, 1703)
x(SHOTGUNSHELL, 1704)
x(RPGMUZZLEFLASH, 1714)
x(CATLITE, 1721)
x(HANDHOLDINGLASER, 1732)
x(HANDHOLDINGACCESS, 1737)
x(HANDREMOTE, 1739)
x(TIP, 1745)
x(GLAIR, 1747)

View file

@ -185,10 +185,10 @@ static void cachegoodsprites(void)
for( i = DTILE_BURNING2; i < DTILE_BURNING2+14; i++)
tloadtile(i);
for( i = DTILE_CRACKKNUCKLES; i < DTILE_CRACKKNUCKLES+4; i++)
for( i = DTILE_CRACKKNUCKLES0; i <= DTILE_CRACKKNUCKLES3; i++)
tloadtile(i);
for( i = DTILE_FIRSTGUN; i < DTILE_FIRSTGUN+3 ; i++ )
for( i = DTILE_FIRSTGUN; i <= DTILE_FIRSTGUN+2 ; i++ )
tloadtile(i);
for( i = DTILE_EXPLOSION2; i < DTILE_EXPLOSION2+21 ; i++ )

View file

@ -272,7 +272,7 @@ class DukeHandHoldingLaser : DukeActor
{
default
{
pic "HANDHOLDINGLASER";
pic "HANDHOLDINGLASER0";
}
override bool ShootThis(DukeActor shooter, DukePlayer p, Vector3 pos, double ang) const