mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 20:42:11 +00:00
- migrated Duke's entire HUD weapon code to texture names.
This commit is contained in:
parent
d5f1a82f21
commit
5d4f137623
7 changed files with 158 additions and 107 deletions
|
@ -11,7 +11,6 @@ void hud_drawsprite(double sx, double sy, double sz, double a, FTextureID texid,
|
|||
// orientation bits for hud_drawsprite.
|
||||
enum {
|
||||
RS_TRANS1 = 1,
|
||||
RS_YFLIP = 4,
|
||||
RS_TOPLEFT = 16,
|
||||
RS_TRANS2 = 32,
|
||||
RS_NOMASK = 64,
|
||||
|
@ -21,8 +20,8 @@ enum {
|
|||
RS_ALIGN_MASK = 768,
|
||||
RS_STRETCH = 1024,
|
||||
|
||||
RS_XFLIPHUD = RS_YFLIP,
|
||||
RS_YFLIPHUD = 16384, // this is for hud_drawsprite which uses RS_YFLIP for x-flipping but needs both flags
|
||||
RS_XFLIPHUD = 4,
|
||||
RS_YFLIPHUD = 16384,
|
||||
|
||||
RS_CENTER = (1 << 29), // proper center align.
|
||||
};
|
||||
|
|
|
@ -134,8 +134,9 @@ void DrawFrame(double x, double y, double z, double a, double alpha, int picnum,
|
|||
auto translation = TRANSLATION(Translation_Remap, palnum);
|
||||
bool topleft = !!(stat & RS_TOPLEFT);
|
||||
|
||||
|
||||
bool xflip = !!(stat & 0x100); // repurposed flag
|
||||
bool yflip = !!(stat & RS_YFLIP);
|
||||
bool yflip = !!(stat & 4);
|
||||
auto color = shadeToLight(shade);
|
||||
|
||||
DrawTexture(twod, tex, x, y, DTA_ScaleX, scale, DTA_ScaleY, scale, DTA_Rotate, a, DTA_LegacyRenderStyle, renderstyle, DTA_Alpha, alpha, DTA_Pin, pin, DTA_TranslationIndex, translation,
|
||||
|
@ -145,8 +146,8 @@ void DrawFrame(double x, double y, double z, double a, double alpha, int picnum,
|
|||
else
|
||||
{
|
||||
// there's some disagreements about flag values between QAV and the drawer. Shuffle these around.
|
||||
if (stat & RS_YFLIP) stat |= RS_YFLIPHUD;
|
||||
stat &= ~RS_YFLIP;
|
||||
if (stat & 4) stat |= RS_YFLIPHUD;
|
||||
stat &= ~4;
|
||||
if (stat & 0x100) stat |= RS_XFLIPHUD;
|
||||
stat &= ~0x100;
|
||||
if ((stat & kQavOrientationLeft)) stat |= RS_ALIGN_L;
|
||||
|
|
|
@ -193,7 +193,7 @@ 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 char* const frames[] = { "HANDHOLDINGLASER0", "HANDHOLDINGLASER1", "HANDHOLDINGLASER2" };
|
||||
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);
|
||||
|
||||
|
@ -207,6 +207,22 @@ static bool animateaccess(int gs, player_struct* p, double xoffset, double yoffs
|
|||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void animateshrunken(player_struct* p, double xoffset, double yoffset, int8_t shade, int o, double interpfrac)
|
||||
{
|
||||
const double fistsign = BobVal(interpolatedvalue<double>(p->ofistsign, p->fistsign, interpfrac)) * 16;
|
||||
int pal = ps[screenpeek].cursector->floorpal;
|
||||
if (p->jetpack_on == 0) yoffset += 32 - (p->GetActor()->vel.X * 8);
|
||||
hud_drawpal(250 + fistsign + xoffset, 258 - fabs(fistsign * 4) + yoffset, "FIST", shade, o, pal, nullAngle);
|
||||
hud_drawpal(40 - fistsign + xoffset, 200 + fabs(fistsign * 4) + yoffset, "FIST", shade, o | 4, pal, nullAngle);
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
@ -283,18 +299,18 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
{
|
||||
if (quick_kick < 5 || quick_kick > 9)
|
||||
{
|
||||
hud_drawpal(80 + offsets.X, 250 + offsets.Y, DTILE_KNEE, shade, o | 4, pal2, angle);
|
||||
hud_drawpal(80 + offsets.X, 250 + offsets.Y, "KNEE", shade, o | 4, pal2, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(160 - 16 + offsets.X, 214 + offsets.Y, DTILE_KNEE + 1, shade, o | 4, pal2, angle);
|
||||
hud_drawpal(160 - 16 + offsets.X, 214 + offsets.Y, "KNEE1", shade, o | 4, pal2, angle);
|
||||
}
|
||||
}
|
||||
|
||||
if (p->GetActor()->spr.scale.X < 0.625)
|
||||
{
|
||||
//shrunken..
|
||||
animateshrunken(p, offsets.X, offsets.Y + gun_pos, DTILE_FIST, shade, o, interpfrac);
|
||||
animateshrunken(p, offsets.X, offsets.Y + gun_pos, shade, o, interpfrac);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -335,17 +351,21 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displaytripbomb = [&]()
|
||||
{
|
||||
static const char* const frames[] = { "HANDHOLDINGLASER0", "HANDHOLDINGLASER1", "HANDHOLDINGLASER2", "HANDHOLDINGLASER3" };
|
||||
static const char* const frames[] = { "HANDHOLDINGLASER0", "HANDHOLDINGLASER1", "HANDHOLDINGLASER2" };
|
||||
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, "HANDHOLDINGLASER3", shade, o, pal, angle);
|
||||
hud_drawpal(142 + offsets.X, 234 + offsets.Y, "TRIPBOMB", shade, o, 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);
|
||||
int i = (*kb >> 2);
|
||||
if (i < 4)
|
||||
{
|
||||
hud_drawpal(130 + offsets.X, 249 + offsets.Y, frames[i], shade, o, pal, angle);
|
||||
hud_drawpal(152 + offsets.X, 249 + offsets.Y, frames[i], shade, o | 4, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -626,15 +646,15 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displaypistol = [&]()
|
||||
{
|
||||
static const char* const frames[] = { "FIRSTGUN0", "FIRSTGUN1", "FIRSTGUN2" };
|
||||
if (*kb < 5)
|
||||
{
|
||||
static constexpr uint8_t kb_frames[] = { 0,1,2,0,0 };
|
||||
hud_drawpal((195 - 12 - (*kb == 2) * 3) + offsets.X, 244 + offsets.Y, DTILE_FIRSTGUN + kb_frames[*kb], shade, 2, pal, angle);
|
||||
hud_drawpal((195 - 12 - (*kb == 2) * 3) + offsets.X, 244 + offsets.Y, frames[kb_frames[*kb]], shade, 2, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
const int pin = (isWW2GI() || (gs.displayflags & DUKE3D_NO_WIDESCREEN_PINNING)) ? 0 : RS_ALIGN_R;
|
||||
const int pic_5 = DTILE_FIRSTGUN+5;
|
||||
const int WEAPON2_RELOAD_TIME = 50;
|
||||
const int reload_time = isWW2GI() ? weapReload : WEAPON2_RELOAD_TIME;
|
||||
|
||||
|
@ -642,31 +662,31 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
if (*kb < 10)
|
||||
{
|
||||
hud_drawpal(194 + offsets.X, 230 + offsets.Y, DTILE_FIRSTGUN + 4, shade, o | pin, pal, angle);
|
||||
hud_drawpal(194 + offsets.X, 230 + offsets.Y, "FIRSTGUNRELOAD0", shade, o | pin, pal, angle);
|
||||
}
|
||||
else if (*kb < 15)
|
||||
{
|
||||
hud_drawpal(244 + offsets.X - (kickback_pic * 8.), 130 + offsets.Y + (kickback_pic * 16.), DTILE_FIRSTGUN + 6, shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 220 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||
hud_drawpal(244 + offsets.X - (kickback_pic * 8.), 130 + offsets.Y + (kickback_pic * 16.), "FIRSTGUNMAG0", shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 220 + offsets.Y, "FIRSTGUNRELOAD1", shade, o | pin, pal, angle);
|
||||
}
|
||||
else if (*kb < 20)
|
||||
{
|
||||
hud_drawpal(124 + offsets.X + (kickback_pic * 2.), 430 + offsets.Y - (kickback_pic * 8.), DTILE_FIRSTGUN + 6, shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 220 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||
hud_drawpal(124 + offsets.X + (kickback_pic * 2.), 430 + offsets.Y - (kickback_pic * 8.), "FIRSTGUNMAG0", shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 220 + offsets.Y, "FIRSTGUNRELOAD1", shade, o | pin, pal, angle);
|
||||
}
|
||||
else if (*kb < (isNamWW2GI()? (reload_time - 12) : 23))
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 235 + offsets.Y, DTILE_FIRSTGUN + 8, shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 210 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||
hud_drawpal(184 + offsets.X, 235 + offsets.Y, "FIRSTGUNHAND", shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 210 + offsets.Y, "FIRSTGUNRELOAD1", shade, o | pin, pal, angle);
|
||||
}
|
||||
else if (*kb < (isNamWW2GI()? (reload_time - 6) : 25))
|
||||
{
|
||||
hud_drawpal(164 + offsets.X, 245 + offsets.Y, DTILE_FIRSTGUN + 8, shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 220 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||
hud_drawpal(164 + offsets.X, 245 + offsets.Y, "FIRSTGUNHAND", shade, o | pin, pal, angle);
|
||||
hud_drawpal(224 + offsets.X, 220 + offsets.Y, "FIRSTGUNRELOAD1", shade, o | pin, pal, angle);
|
||||
}
|
||||
else if (*kb < (isNamWW2GI()? reload_time : 27))
|
||||
{
|
||||
hud_drawpal(194 + offsets.X, 235 + offsets.Y, pic_5, shade, o, pal, angle);
|
||||
hud_drawpal(194 + offsets.X, 235 + offsets.Y, "FIRSTGUNRELOAD1", shade, o, pal, angle);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -679,8 +699,9 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displayhandbomb = [&]()
|
||||
{
|
||||
int pic = DTILE_HANDTHROW;
|
||||
static const char* const frames[] = { "HANDTHROW0", "HANDTHROW1", "HANDTHROW2" };
|
||||
|
||||
int pic = 0;
|
||||
if (*kb)
|
||||
{
|
||||
static constexpr uint8_t throw_frames[] = { 0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2 };
|
||||
|
@ -716,11 +737,11 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
offsets.Y += 9 * (kickback_pic - 14); //D
|
||||
}
|
||||
|
||||
pic += throw_frames[*kb];
|
||||
pic = throw_frames[*kb];
|
||||
offsets.Y -= 10;
|
||||
}
|
||||
|
||||
hud_drawpal(190 + offsets.X, 260 + offsets.Y, pic, shade, o, pal, angle);
|
||||
hud_drawpal(190 + offsets.X, 260 + offsets.Y, frames[pic], shade, o, pal, angle);
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -731,8 +752,9 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displayhandremote = [&]()
|
||||
{
|
||||
static const char* const frames[] = { "HANDREMOTE0", "HANDREMOTE1", "HANDREMOTE2" };
|
||||
static constexpr uint8_t remote_frames[] = { 0,1,1,2,1,1,0,0,0,0,0 };
|
||||
hud_drawpal(102 + offsets.X, 258 + offsets.Y, DTILE_HANDREMOTE + (*kb ? remote_frames[*kb] : 0), shade, o, pal, angle);
|
||||
hud_drawpal(102 + offsets.X, 258 + offsets.Y, frames[(*kb ? remote_frames[*kb] : 0)], shade, o, pal, angle);
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
@ -743,6 +765,7 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displaydevastator_ww = [&]
|
||||
{
|
||||
const char* const frames[] = { "DEVISTATOR", "DEVISTATORFIRE" };
|
||||
if (*kb)
|
||||
{
|
||||
if (*kb < weapTotalTime)
|
||||
|
@ -751,13 +774,13 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
if (p->ammo_amount[p->curr_weapon] & 1)
|
||||
{
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR, shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR + i, -32, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, "DEVISTATOR", shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, frames[i], -32, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR + i, -32, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR, shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, frames[i], -32, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, "DEVISTATOR", shade, o, pal, angle);
|
||||
}
|
||||
}
|
||||
// else we are in 'reload time'
|
||||
|
@ -765,21 +788,21 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
{
|
||||
// down
|
||||
offsets.Y += 10 * (kickback_pic - weapTotalTime); //D
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR, shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR, shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, "DEVISTATOR", shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, "DEVISTATOR", shade, o | 4, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
// up and left
|
||||
offsets.Y += 10 * (weapReload - kickback_pic); //U
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR, shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR, shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, "DEVISTATOR", shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, "DEVISTATOR", shade, o | 4, pal, angle);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR, shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR, shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, "DEVISTATOR", shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, "DEVISTATOR", shade, o | 4, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -791,6 +814,7 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displaydevastator = [&]
|
||||
{
|
||||
const char* const frames[] = { "DEVISTATOR", "DEVISTATORFIRE" };
|
||||
if (*kb)
|
||||
{
|
||||
static constexpr uint8_t cycloidy[] = { 0,4,12,24,12,4,0 };
|
||||
|
@ -798,19 +822,19 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
if (p->hbomb_hold_delay)
|
||||
{
|
||||
hud_drawpal(268 + offsets.X + (cycloidy[*kb] >> 1), 238 + offsets.Y + cycloidy[*kb], DTILE_DEVISTATOR + i, -32, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR, shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X + (cycloidy[*kb] >> 1), 238 + offsets.Y + cycloidy[*kb], frames[i], -32, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, "DEVISTATOR", shade, o | 4, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(30 + offsets.X - (cycloidy[*kb] >> 1), 240 + offsets.Y + cycloidy[*kb], DTILE_DEVISTATOR + i, -32, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR, shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X - (cycloidy[*kb] >> 1), 240 + offsets.Y + cycloidy[*kb], frames[i], -32, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, "DEVISTATOR", shade, o, pal, angle);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, DTILE_DEVISTATOR, shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, DTILE_DEVISTATOR, shade, o | 4, pal, angle);
|
||||
hud_drawpal(268 + offsets.X, 238 + offsets.Y, "DEVISTATOR", shade, o, pal, angle);
|
||||
hud_drawpal(30 + offsets.X, 240 + offsets.Y, "DEVISTATOR", shade, o | 4, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -826,6 +850,7 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
if (*kb)
|
||||
{
|
||||
static const char* const cat[] = { "FREEZECAT0", "FREEZECAT1", "FREEZECAT2" };
|
||||
static constexpr uint8_t cat_frames[] = { 0,0,1,1,2,2 };
|
||||
|
||||
if (p->GetActor()->spr.pal != 1)
|
||||
|
@ -836,12 +861,12 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
offsets.Y += 16;
|
||||
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, DTILE_FREEZE + 2, -32, o | pin, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 235 + offsets.Y, DTILE_FREEZE + 3 + cat_frames[*kb % 6], -32, o | pin, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, "FREEZEFIRE", -32, o | pin, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 235 + offsets.Y, cat[cat_frames[*kb % 6]], -32, o | pin, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, DTILE_FREEZE, shade, o | pin, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, "FREEZE", shade, o | pin, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -850,6 +875,7 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
static const char* const coilfireframes[] = { "SHRINKERFIRE1", "SHRINKERFIRE2", "SHRINKERFIRE3", "SHRINKERFIRE4" };
|
||||
|
||||
auto displayshrinker_ww = [&]
|
||||
{
|
||||
|
@ -861,13 +887,13 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
// the 'at rest' display
|
||||
if (p->ammo_amount[cw] <= 0) //p->last_weapon >= 0)
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 3 + (*kb & 3), -32, o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 1, shade, o, pal, angle);
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, coilfireframes[(*kb & 3)], -32, o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "SHRINKERLITE", shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 2, 16 - int(BobVal(random_club_frame) * 16), o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER, shade, o, pal, angle);
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, "SHRINKERCOIL", 16 - int(BobVal(random_club_frame) * 16), o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "SHRINKER", shade, o, pal, angle);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -901,8 +927,8 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
}
|
||||
|
||||
// draw weapon
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 3 + (*kb & 3), -32, o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 1, shade, o, pal, angle);
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, coilfireframes[(*kb & 3)], -32, o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "SHRINKERLITE", shade, o, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -919,7 +945,7 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
if (*kb == 0)
|
||||
{
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER - 2, shade, o, pal, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "GROWER", shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -950,8 +976,8 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
}
|
||||
|
||||
// display weapon
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 3 + (*kb & 3), -32, o, 2, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER - 1, shade, o, pal, angle);
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, coilfireframes[(*kb & 3)], -32, o, 2, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "GROWERLITE", shade, o, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -963,22 +989,13 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
auto displayshrinker = [&]
|
||||
{
|
||||
auto shrinker = /*isWorldTour() ? DTILE_SHRINKERWIDE :*/ DTILE_SHRINKER;
|
||||
offsets.X += 28;
|
||||
offsets.Y += 18;
|
||||
|
||||
if (*kb == 0)
|
||||
{
|
||||
if (cw == GROW_WEAPON)
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 2, 16 - int(BobVal(random_club_frame) * 16), o, 2, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, shrinker - 2, shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 2, 16 - int(BobVal(random_club_frame) * 16), o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, shrinker, shade, o, pal, angle);
|
||||
}
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, "SHRINKERCOIL", 16 - int(BobVal(random_club_frame) * 16), o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "SHRINKER", shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -988,16 +1005,37 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
offsets.Y -= rand() & 3;
|
||||
}
|
||||
|
||||
if (cw == GROW_WEAPON)
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, coilfireframes[(*kb & 3)], -32, o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "SHRINKERLITE", shade, o, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
auto displaygrower = [&]
|
||||
{
|
||||
offsets.X += 28;
|
||||
offsets.Y += 18;
|
||||
|
||||
if (*kb == 0)
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, "SHRINKERCOIL", 16 - int(BobVal(random_club_frame) * 16), o, 2, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "GROWER", shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (p->GetActor()->spr.pal != 1)
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 3 + (*kb & 3), -32, o, 2, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, shrinker - 1, shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, DTILE_SHRINKER + 3 + (*kb & 3), -32, o, 0, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, shrinker + 1, shade, o, pal, angle);
|
||||
offsets.X += rand() & 3;
|
||||
offsets.Y -= rand() & 3;
|
||||
}
|
||||
|
||||
hud_drawpal(184 + offsets.X, 240 + offsets.Y, coilfireframes[(*kb & 3)], -32, o, 2, angle);
|
||||
hud_drawpal(188 + offsets.X, 240 + offsets.Y, "GROWERLITE", shade, o, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1011,11 +1049,12 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
{
|
||||
if (*kb < 1 || p->cursector->lotag == 2)
|
||||
{
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, DTILE_FLAMETHROWER, shade, o, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, DTILE_FLAMETHROWERPILOT, shade, o, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, "FLAMETHROWER", shade, o, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, "FLAMETHROWERPILOT", shade, o, pal, angle);
|
||||
}
|
||||
else
|
||||
{
|
||||
static const char* const cat[] = { "FLAMETHROWERCAT0", "FLAMETHROWERCAT1", "FLAMETHROWERCAT2" };
|
||||
static constexpr uint8_t cat_frames[] = { 0, 0, 1, 1, 2, 2 };
|
||||
|
||||
if (p->GetActor()->spr.pal != 1)
|
||||
|
@ -1026,8 +1065,8 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
offsets.Y += 16;
|
||||
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, DTILE_FLAMETHROWER + 1, -32, o, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 235 + offsets.Y, DTILE_FLAMETHROWER + 2 + cat_frames[*kb % 6], -32, o, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 261 + offsets.Y, "FLAMETHROWERLOW", -32, o, pal, angle);
|
||||
hud_drawpal(210 + offsets.X, 235 + offsets.Y, cat[cat_frames[*kb % 6]], -32, o, pal, angle);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1089,7 +1128,7 @@ void displayweapon_d(int snum, double interpfrac)
|
|||
|
||||
case GROW_WEAPON:
|
||||
if (isWW2GI()) displaygrower_ww();
|
||||
else displayshrinker();
|
||||
else displaygrower();
|
||||
break;
|
||||
|
||||
case FLAMETHROWER_WEAPON:
|
||||
|
|
|
@ -208,6 +208,7 @@ void DrawBoat(int const kb, DVector2 offsets, DAngle angle, int shade, int pal,
|
|||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
void animateshrunken(player_struct* p, double xoffset, double yoffset, int8_t shade, int o, double interpfrac);
|
||||
|
||||
void displayweapon_r(int snum, double interpfrac)
|
||||
{
|
||||
|
@ -269,7 +270,7 @@ void displayweapon_r(int snum, double interpfrac)
|
|||
|
||||
if (p->GetActor()->spr.scale.X < 0.125)
|
||||
{
|
||||
animateshrunken(p, offsets.X, offsets.Y + gun_pos, RTILE_FIST, shade, o, interpfrac);
|
||||
animateshrunken(p, offsets.X, offsets.Y + gun_pos, shade, o, interpfrac);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -180,20 +180,6 @@ inline void doslopetilting(player_struct* p)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
inline void hud_draw(double x, double y, int tilenum, int shade, int orientation)
|
||||
{
|
||||
int p = ps[screenpeek].cursector->floorpal;
|
||||
hud_drawsprite(x, y, 65536, 0, tilenum, shade, p, 2 | orientation);
|
||||
}
|
||||
|
||||
inline void animateshrunken(player_struct* p, double xoffset, double yoffset, int tilenum, int8_t shade, int o, double interpfrac)
|
||||
{
|
||||
const double fistsign = BobVal(interpolatedvalue<double>(p->ofistsign, p->fistsign, interpfrac)) * 16;
|
||||
if (p->jetpack_on == 0) yoffset += 32 - (p->GetActor()->vel.X * 8);
|
||||
hud_draw(250 + fistsign + xoffset, 258 - fabs(fistsign * 4) + yoffset, tilenum, shade, o);
|
||||
hud_draw(40 - fistsign + xoffset, 200 + fabs(fistsign * 4) + yoffset, tilenum, shade, o | 4);
|
||||
}
|
||||
|
||||
inline ESpriteFlags randomFlip()
|
||||
{
|
||||
int r = krand() & 12;
|
||||
|
|
|
@ -653,11 +653,18 @@ x(CREDITPAGE1, 2504)
|
|||
x(CREDITPAGE2, 2505)
|
||||
x(CREDITPAGE3, 2506)
|
||||
x(DEVISTATOR, 2510)
|
||||
x(DEVISTATORFIRE, 2511)
|
||||
x(KNEE, 2521)
|
||||
x(KNEE1, 2522)
|
||||
x(CROSSHAIR, 2523)
|
||||
x(FIRSTGUN, 2524)
|
||||
x(FIRSTGUNRELOAD, 2528)
|
||||
x(FIRSTGUN0, 2524)
|
||||
x(FIRSTGUN1, 2525)
|
||||
x(FIRSTGUN2, 2526)
|
||||
x(FIRSTGUNRELOAD0, 2528)
|
||||
x(FIRSTGUNRELOAD1, 2529)
|
||||
x(FIRSTGUNREMAG0, 2530)
|
||||
x(FIRSTGUNREMAG1, 2531)
|
||||
x(FIRSTGUNHAND, 2532)
|
||||
x(FALLINGCLIP, 2530)
|
||||
x(CLIPINHAND, 2531)
|
||||
x(HAND, 2532)
|
||||
|
@ -677,17 +684,31 @@ x(RPGMUZZLEFLASH1, 2545)
|
|||
x(RPGMUZZLEFLASH2, 2546)
|
||||
x(RPGMUZZLEFLASH3, 2547)
|
||||
x(FREEZE, 2548)
|
||||
x(CATLITE, 2552)
|
||||
x(FREEZEFIRE, 2550)
|
||||
x(FREEZECAT0, 2551)
|
||||
x(FREEZECAT1, 2552)
|
||||
x(FREEZECAT2, 2553)
|
||||
x(GROWER, 2554)
|
||||
x(GROWERLITE, 2555)
|
||||
x(SHRINKER, 2556)
|
||||
x(SHRINKERLITE, 2557)
|
||||
x(SHRINKERCOIL, 2558)
|
||||
x(SHRINKERFIRE1, 2559)
|
||||
x(SHRINKERFIRE2, 2560)
|
||||
x(SHRINKERFIRE3, 2561)
|
||||
x(SHRINKERFIRE4, 2562)
|
||||
x(HANDHOLDINGLASER0, 2563)
|
||||
x(HANDHOLDINGLASER1, 2563)
|
||||
x(HANDHOLDINGLASER2, 2563)
|
||||
x(HANDHOLDINGLASER3, 2563)
|
||||
x(HANDHOLDINGLASER1, 2564)
|
||||
x(HANDHOLDINGLASER2, 2565)
|
||||
x(TRIPBOMB, 2566)
|
||||
x(LASERLINE, 2567)
|
||||
x(HANDHOLDINGACCESS, 2568)
|
||||
x(HANDREMOTE, 2570)
|
||||
x(HANDTHROW, 2573)
|
||||
x(HANDREMOTE0, 2570)
|
||||
x(HANDREMOTE1, 2571)
|
||||
x(HANDREMOTE2, 2572)
|
||||
x(HANDTHROW0, 2573)
|
||||
x(HANDTHROW1, 2574)
|
||||
x(HANDTHROW2, 2575)
|
||||
x(TIP0, 2576)
|
||||
x(TIP1, 2576)
|
||||
x(GLAIR, 2578)
|
||||
|
@ -951,6 +972,10 @@ x(FLAMETHROWERSPRITE, 5134)
|
|||
x(FLAMETHROWERAMMO, 5135)
|
||||
x(FLAMETHROWERAMMO1, 5136)
|
||||
x(FLAMETHROWER, 5138)
|
||||
x(FLAMETHROWERLOW, 5139)
|
||||
x(FLAMETHROWERCAT0, 5140)
|
||||
x(FLAMETHROWERCAT1, 5141)
|
||||
x(FLAMETHROWERCAT2, 5142)
|
||||
x(ONFIRE, 5152)
|
||||
x(LAVAPOOL, 5304)
|
||||
x(LAVAPOOLBUBBLE, 5207)
|
||||
|
|
|
@ -188,7 +188,7 @@ static void cachegoodsprites(void)
|
|||
for( i = DTILE_CRACKKNUCKLES0; i <= DTILE_CRACKKNUCKLES3; i++)
|
||||
tloadtile(i);
|
||||
|
||||
for( i = DTILE_FIRSTGUN; i <= DTILE_FIRSTGUN+2 ; i++ )
|
||||
for( i = DTILE_FIRSTGUN0; i <= DTILE_FIRSTGUN2 ; i++ )
|
||||
tloadtile(i);
|
||||
|
||||
for( i = DTILE_EXPLOSION2; i < DTILE_EXPLOSION2+21 ; i++ )
|
||||
|
@ -196,7 +196,7 @@ static void cachegoodsprites(void)
|
|||
|
||||
tloadtile(DTILE_BULLETHOLE);
|
||||
|
||||
for( i = DTILE_FIRSTGUNRELOAD; i < DTILE_FIRSTGUNRELOAD+8 ; i++ )
|
||||
for( i = DTILE_FIRSTGUNRELOAD0; i <= DTILE_FIRSTGUNRELOAD0 + 7 ; i++ )
|
||||
tloadtile(i);
|
||||
|
||||
tloadtile(DTILE_FOOTPRINTS);
|
||||
|
|
Loading…
Reference in a new issue