From b0f517736c5f6a69d8e87dda4bab15ffaeed5ae9 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Mon, 6 Jun 2022 10:51:57 +1000 Subject: [PATCH] - Duke: Fix `fistsign` smoothness. --- source/games/duke/src/hudweapon_d.cpp | 16 ++++------------ source/games/duke/src/player_d.cpp | 1 + source/games/duke/src/savegame.cpp | 1 + 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/source/games/duke/src/hudweapon_d.cpp b/source/games/duke/src/hudweapon_d.cpp index 4f46f4a40..62d396de9 100644 --- a/source/games/duke/src/hudweapon_d.cpp +++ b/source/games/duke/src/hudweapon_d.cpp @@ -300,18 +300,10 @@ void displayweapon_d(int snum, double smoothratio) if (p->GetActor()->spr.xrepeat < 40) { //shrunken.. - int fistsign = interpolatedvalue(p->ofistsign, p->fistsign, (int)smoothratio); - if (p->jetpack_on == 0) - { - i = p->GetActor()->spr.xvel; - looking_arc += 32 - (i >> 1); - } - double owo = weapon_xoffset; - weapon_xoffset += bsinf(fistsign, -10); - hud_draw(weapon_xoffset + 250 - look_anghalf, looking_arc + 258 - fabs(bsinf(fistsign, -8)), FIST, shade, o); - weapon_xoffset = owo; - weapon_xoffset -= bsinf(fistsign, -10); - hud_draw(weapon_xoffset + 40 - look_anghalf, looking_arc + 200 + fabs(bsinf(fistsign, -8)), FIST, shade, o | 4); + const double fistsign = bsinf(interpolatedvalue(p->ofistsign, p->fistsign, smoothratio), -10); + if (p->jetpack_on == 0) looking_arc += 32 - (p->GetActor()->spr.xvel >> 1); + hud_draw(weapon_xoffset + fistsign + 250 - look_anghalf, looking_arc + 258 - fabs(fistsign * 4), FIST, shade, o); + hud_draw(weapon_xoffset - fistsign + 40 - look_anghalf, looking_arc + 200 + fabs(fistsign * 4), FIST, shade, o | 4); } else { diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index 8f48a0202..1efed09ab 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -2824,6 +2824,7 @@ void processinput_d(int snum) if (p->GetActor()->spr.xrepeat < 40 && p->jetpack_on == 0) { + p->ofistsign = p->fistsign; p->fistsign += p->GetActor()->spr.xvel; } diff --git a/source/games/duke/src/savegame.cpp b/source/games/duke/src/savegame.cpp index 199140dc1..c720b606e 100644 --- a/source/games/duke/src/savegame.cpp +++ b/source/games/duke/src/savegame.cpp @@ -276,6 +276,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, player_struct& w, ("actions", w.sync.actions) .Array("frags", w.frags, MAXPLAYERS) ("uservars", w.uservars) + ("ofistsign", w.ofistsign) ("fistsign", w.fistsign) .EndObject();