From a5652655db32a1a7887914b8b394d8355b62f4a6 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 12 Sep 2022 00:08:42 +0200 Subject: [PATCH] - floatified gs.playerfriction --- source/games/duke/src/actors_d.cpp | 7 +++---- source/games/duke/src/actors_r.cpp | 7 +++---- source/games/duke/src/gamedef.cpp | 4 ++-- source/games/duke/src/player_d.cpp | 14 ++++---------- source/games/duke/src/player_r.cpp | 25 ++++++++----------------- source/games/duke/src/types.h | 6 +++++- 6 files changed, 25 insertions(+), 38 deletions(-) diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 8dcedfbc1..6734c1613 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -3637,13 +3637,12 @@ void move_d(DDukeActor *actor, int playernum, int xvel) if (xvel < 512) { - ps[playernum].__vel.X = 0; - ps[playernum].__vel.Y = 0; + ps[playernum].vel.X = 0; + ps[playernum].vel.Y = 0; } else { - ps[playernum].__vel.X = MulScaleF(ps[playernum].__vel.X, gs.playerfriction - 0x2000, 16); - ps[playernum].__vel.Y = MulScaleF(ps[playernum].__vel.Y, gs.playerfriction - 0x2000, 16); + ps[playernum].vel.XY() *= gs.playerfriction - 0.125; } } else if (actor->spr.picnum != DRONE && actor->spr.picnum != SHARK && actor->spr.picnum != COMMANDER) diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index 476106cd1..0a9bcf2d8 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -3669,13 +3669,12 @@ void move_r(DDukeActor *actor, int pnum, int xvel) if (xvel < 512) { - ps[pnum].__vel.X = 0; - ps[pnum].__vel.Y = 0; + ps[pnum].vel.X = 0; + ps[pnum].vel.Y = 0; } else { - ps[pnum].__vel.X = MulScaleF(ps[pnum].__vel.X, gs.playerfriction - 0x2000, 16); - ps[pnum].__vel.Y = MulScaleF(ps[pnum].__vel.Y, gs.playerfriction - 0x2000, 16); + ps[pnum].vel.XY() *= gs.playerfriction - 0.125; } } else if ((isRRRA() && actor->spr.picnum != DRONE && actor->spr.picnum != SHARK && actor->spr.picnum != UFO1_RRRA) || diff --git a/source/games/duke/src/gamedef.cpp b/source/games/duke/src/gamedef.cpp index 1c41fe24e..247ce7f1a 100644 --- a/source/games/duke/src/gamedef.cpp +++ b/source/games/duke/src/gamedef.cpp @@ -1939,7 +1939,7 @@ int ConCompiler::parsecommand() gs.max_armour_amount = parseone(); gs.respawnactortime = parseone(); gs.respawnitemtime = parseone(); - gs.playerfriction = parseone(); + gs.playerfriction = FixedToFloat(parseone()); if (isPlutoPak() || isRR()) gs.gravity = parseone(); gs.rpgblastradius = parseone(); gs.pipebombblastradius = parseone(); @@ -3181,7 +3181,7 @@ void loadcons() gs.morterblastradius = 2500; gs.numfreezebounces = 3; gs.pipebombblastradius = 2500; - gs.playerfriction = 0xCFD0; + gs.playerfriction = FixedToFloat(0xCFD0); gs.rpgblastradius = 1780; gs.seenineblastradius = 2048; gs.shrinkerblastradius = 650; diff --git a/source/games/duke/src/player_d.cpp b/source/games/duke/src/player_d.cpp index e2b20eeb0..b96fdcddb 100644 --- a/source/games/duke/src/player_d.cpp +++ b/source/games/duke/src/player_d.cpp @@ -2998,20 +2998,17 @@ void processinput_d(int snum) else check = ((aplWeaponWorksLike(p->curr_weapon, snum) == KNEE_WEAPON && p->kickback_pic > 10 && p->on_ground) || (p->on_ground && (actions & SB_CROUCH))); if (check) { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction - 0x2000, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction - 0x2000, 16); + p->vel.XY() *= gs.playerfriction - 0.125; } else { if (psectlotag == 2) { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction - 0x1400, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction - 0x1400, 16); + p->vel.XY() *= gs.playerfriction - FixedToFloat(0x1400); } else { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction, 16); + p->vel.XY() *= gs.playerfriction; } } @@ -3020,10 +3017,7 @@ void processinput_d(int snum) if (shrunk) { - p->__vel.X = - MulScaleF(p->__vel.X, gs.playerfriction * 0.75, 16); - p->__vel.Y = - MulScaleF(p->__vel.Y, gs.playerfriction * 0.75, 16); + p->__vel.XY() *= gs.playerfriction * 0.75; } } diff --git a/source/games/duke/src/player_r.cpp b/source/games/duke/src/player_r.cpp index 372db0d12..58ec8b3b0 100644 --- a/source/games/duke/src/player_r.cpp +++ b/source/games/duke/src/player_r.cpp @@ -3712,20 +3712,17 @@ void processinput_r(int snum) if (!isRRRA() && ((p->curr_weapon == KNEE_WEAPON && p->kickback_pic > 10 && p->on_ground) || (p->on_ground && (actions & SB_CROUCH)))) { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction - 0x2000, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction - 0x2000, 16); + p->vel.XY() *= gs.playerfriction - 0.125; } else { if (psectlotag == 2) { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction - 0x1400, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction - 0x1400, 16); + p->vel.XY() *= gs.playerfriction - FixedToFloat(0x1400); } else { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction, 16); + p->vel.XY() *= gs.playerfriction; } } @@ -3746,8 +3743,7 @@ void processinput_r(int snum) p->boot_amount--; else { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction, 16); + p->vel.XY() *= gs.playerfriction; } } else @@ -3758,8 +3754,7 @@ void processinput_r(int snum) { if (p->on_ground) { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction - 0x1800, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction - 0x1800, 16); + p->vel.XY() *= gs.playerfriction - FixedToFloat(0x1800); } } else @@ -3767,20 +3762,16 @@ void processinput_r(int snum) p->boot_amount--; else { - p->__vel.X = MulScaleF(p->__vel.X, gs.playerfriction - 0x1800, 16); - p->__vel.Y = MulScaleF(p->__vel.Y, gs.playerfriction - 0x1800, 16); + p->vel.XY() *= gs.playerfriction - FixedToFloat(0x1800); } } if (abs(p->__vel.X) < 2048 && abs(p->__vel.Y) < 2048) - p->__vel.X = p->__vel.Y = 0; + p->vel.X = p->vel.Y = 0; if (shrunk) { - p->__vel.X = - MulScaleF(p->__vel.X, gs.playerfriction * 0.75, 16); - p->__vel.Y = - MulScaleF(p->__vel.Y, gs.playerfriction * 0.75, 16); + p->__vel.XY() *= gs.playerfriction * 0.75; } } diff --git a/source/games/duke/src/types.h b/source/games/duke/src/types.h index 3947eb5c3..dc25616a4 100644 --- a/source/games/duke/src/types.h +++ b/source/games/duke/src/types.h @@ -201,7 +201,11 @@ struct CraneDef struct player_struct { - DVector3 __vel; + union + { + DVector3 vel; // refactoring aid; + DVector3 __vel; + }; DVector3 pos, opos; DVector2 bobpos;