mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-12 06:50:59 +00:00
- Improved weapon drawing, based on the new crosshair drawing offset code, starting with Duke's pistol.
This commit is contained in:
parent
ef52694365
commit
a6cfdea480
2 changed files with 35 additions and 28 deletions
|
@ -150,6 +150,13 @@ struct PlayerAngle
|
||||||
return DVector2(159.72, 145.5 * renderrotscrn(interpfrac).Sin()) * -renderlookang(interpfrac).Tan() * (1. / tan(r_fov * pi::pi() / 360.));
|
return DVector2(159.72, 145.5 * renderrotscrn(interpfrac).Sin()) * -renderlookang(interpfrac).Tan() * (1. / tan(r_fov * pi::pi() / 360.));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Weapon x/y offsets based on the above.
|
||||||
|
DVector2 weaponoffsets(const double interpfrac)
|
||||||
|
{
|
||||||
|
auto offsets = crosshairoffsets(interpfrac); offsets.Y = abs(offsets.Y) * 4.;
|
||||||
|
return offsets;
|
||||||
|
}
|
||||||
|
|
||||||
// Ticrate playsim adjustment setters and processor.
|
// Ticrate playsim adjustment setters and processor.
|
||||||
void addadjustment(const DAngle value)
|
void addadjustment(const DAngle value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,9 +50,9 @@ inline static double getavel(int snum)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
inline static void hud_drawpal(double x, double y, int tilenum, int shade, int orientation, int p)
|
inline static void hud_drawpal(double x, double y, int tilenum, int shade, int orientation, int p, DAngle angle = nullAngle)
|
||||||
{
|
{
|
||||||
hud_drawsprite(x, y, 65536, 0, tilenum, shade, p, 2 | orientation);
|
hud_drawsprite(x, y, 65536, angle.Buildfang(), tilenum, shade, p, 2 | orientation);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -213,6 +213,10 @@ void displayweapon_d(int snum, double interpfrac)
|
||||||
|
|
||||||
o = 0;
|
o = 0;
|
||||||
|
|
||||||
|
auto horiz = !SyncInput() ? p->horizon.sum() : p->horizon.interpolatedsum(interpfrac);
|
||||||
|
auto offsets = p->angle.weaponoffsets(interpfrac);
|
||||||
|
auto angle = p->angle.renderrotscrn(interpfrac);
|
||||||
|
|
||||||
if (cl_hudinterpolation)
|
if (cl_hudinterpolation)
|
||||||
{
|
{
|
||||||
weapon_sway = interpolatedvalue<double>(p->oweapon_sway, p->weapon_sway, interpfrac);
|
weapon_sway = interpolatedvalue<double>(p->oweapon_sway, p->weapon_sway, interpfrac);
|
||||||
|
@ -231,7 +235,6 @@ void displayweapon_d(int snum, double interpfrac)
|
||||||
}
|
}
|
||||||
|
|
||||||
plravel = getavel(snum) * (1. / 16.);
|
plravel = getavel(snum) * (1. / 16.);
|
||||||
auto horiz = !SyncInput() ? p->horizon.sum() : p->horizon.interpolatedsum(interpfrac);
|
|
||||||
horiz16th = interpolatedvalue(0., 16., horiz / DAngle90);
|
horiz16th = interpolatedvalue(0., 16., horiz / DAngle90);
|
||||||
look_anghalf = p->angle.look_anghalf(interpfrac);
|
look_anghalf = p->angle.look_anghalf(interpfrac);
|
||||||
looking_arc = p->angle.looking_arc(interpfrac);
|
looking_arc = p->angle.looking_arc(interpfrac);
|
||||||
|
@ -666,53 +669,50 @@ void displayweapon_d(int snum, double interpfrac)
|
||||||
|
|
||||||
auto displaypistol = [&]()
|
auto displaypistol = [&]()
|
||||||
{
|
{
|
||||||
|
offsets.Y -= gun_pos;
|
||||||
|
|
||||||
if (*kb < 5)
|
if (*kb < 5)
|
||||||
{
|
{
|
||||||
static const uint8_t kb_frames[] = { 0,1,2,0,0 };
|
static constexpr uint8_t kb_frames[] = { 0,1,2,0,0 };
|
||||||
|
const double l = 195 - 12 + weapon_xoffset - (*kb == 2) * 3;
|
||||||
|
|
||||||
double l = 195 - 12 + weapon_xoffset;
|
hud_drawpal(l + offsets.X, 244 + offsets.Y, FIRSTGUN + kb_frames[*kb], shade, 2, pal, angle);
|
||||||
|
|
||||||
if (*kb == 2)
|
|
||||||
l -= 3;
|
|
||||||
{
|
|
||||||
hud_drawpal(
|
|
||||||
(l - look_anghalf),
|
|
||||||
(looking_arc + 244 - gun_pos),
|
|
||||||
FIRSTGUN + kb_frames[*kb],
|
|
||||||
shade, 2, pal);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pin = (isWW2GI() || (gs.displayflags & DUKE3D_NO_WIDESCREEN_PINNING)) ? 0 : RS_ALIGN_R;
|
pin = (isWW2GI() || (gs.displayflags & DUKE3D_NO_WIDESCREEN_PINNING)) ? 0 : RS_ALIGN_R;
|
||||||
auto pic_5 = FIRSTGUN+5;
|
const int pic_5 = FIRSTGUN+5;
|
||||||
|
|
||||||
const int WEAPON2_RELOAD_TIME = 50;
|
const int WEAPON2_RELOAD_TIME = 50;
|
||||||
auto reload_time = isWW2GI() ? aplWeaponReload(PISTOL_WEAPON, snum) : WEAPON2_RELOAD_TIME;
|
const int reload_time = isWW2GI() ? aplWeaponReload(PISTOL_WEAPON, snum) : WEAPON2_RELOAD_TIME;
|
||||||
|
|
||||||
if (*kb < 10)
|
if (*kb < 10)
|
||||||
hud_drawpal(194 - look_anghalf, looking_arc + 230 - gun_pos, FIRSTGUN + 4, shade, o|pin, pal);
|
{
|
||||||
|
hud_drawpal(194 + offsets.X, 230 + offsets.Y, FIRSTGUN + 4, shade, o | pin, pal, angle);
|
||||||
|
}
|
||||||
else if (*kb < 15)
|
else if (*kb < 15)
|
||||||
{
|
{
|
||||||
hud_drawpal(244 - (kickback_pic * 8.) - look_anghalf, looking_arc + 130 - gun_pos + (kickback_pic * 16.), FIRSTGUN + 6, shade, o | pin, pal);
|
hud_drawpal(244 + offsets.X - (kickback_pic * 8.), 130 + offsets.Y + (kickback_pic * 16.), FIRSTGUN + 6, shade, o | pin, pal, angle);
|
||||||
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, shade, o | pin, pal);
|
hud_drawpal(224 + offsets.X, 220 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||||
}
|
}
|
||||||
else if (*kb < 20)
|
else if (*kb < 20)
|
||||||
{
|
{
|
||||||
hud_drawpal(124 + (kickback_pic * 2.) - look_anghalf, looking_arc + 430 - gun_pos - (kickback_pic * 8.), FIRSTGUN + 6, shade, o | pin, pal);
|
hud_drawpal(124 + offsets.X + (kickback_pic * 2.), 430 + offsets.Y - (kickback_pic * 8.), FIRSTGUN + 6, shade, o | pin, pal, angle);
|
||||||
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, shade, o | pin, pal);
|
hud_drawpal(224 + offsets.X, 220 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||||
}
|
}
|
||||||
else if (*kb < (isNamWW2GI()? (reload_time - 12) : 23))
|
else if (*kb < (isNamWW2GI()? (reload_time - 12) : 23))
|
||||||
{
|
{
|
||||||
hud_drawpal(184 - look_anghalf, looking_arc + 235 - gun_pos, FIRSTGUN + 8, shade, o | pin, pal);
|
hud_drawpal(184 + offsets.X, 235 + offsets.Y, FIRSTGUN + 8, shade, o | pin, pal, angle);
|
||||||
hud_drawpal(224 - look_anghalf, looking_arc + 210 - gun_pos, pic_5, shade, o | pin, pal);
|
hud_drawpal(224 + offsets.X, 210 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||||
}
|
}
|
||||||
else if (*kb < (isNamWW2GI()? (reload_time - 6) : 25))
|
else if (*kb < (isNamWW2GI()? (reload_time - 6) : 25))
|
||||||
{
|
{
|
||||||
hud_drawpal(164 - look_anghalf, looking_arc + 245 - gun_pos, FIRSTGUN + 8, shade, o | pin, pal);
|
hud_drawpal(164 + offsets.X, 245 + offsets.Y, FIRSTGUN + 8, shade, o | pin, pal, angle);
|
||||||
hud_drawpal(224 - look_anghalf, looking_arc + 220 - gun_pos, pic_5, shade, o | pin, pal);
|
hud_drawpal(224 + offsets.X, 220 + offsets.Y, pic_5, shade, o | pin, pal, angle);
|
||||||
}
|
}
|
||||||
else if (*kb < (isNamWW2GI()? reload_time : 27))
|
else if (*kb < (isNamWW2GI()? reload_time : 27))
|
||||||
hud_drawpal(194 - look_anghalf, looking_arc + 235 - gun_pos, pic_5, shade, o, pal);
|
{
|
||||||
|
hud_drawpal(194 + offsets.X, 235 + offsets.Y, pic_5, shade, o, pal, angle);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue