From 73df144f65b8d0005151d37dcc209993e32c8c39 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Wed, 25 Nov 2020 07:50:30 +1100 Subject: [PATCH] - SW: Fix ladder angle issues. * Fixes #197. --- source/sw/src/game.h | 3 ++- source/sw/src/player.cpp | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/source/sw/src/game.h b/source/sw/src/game.h index 4a7a57c3f..c343bb67d 100644 --- a/source/sw/src/game.h +++ b/source/sw/src/game.h @@ -884,7 +884,8 @@ struct PLAYERstruct short pnum; // carry along the player number - short LadderSector,LadderAngle; + short LadderSector; + binangle LadderAngle; int lx,ly; // ladder x and y short JumpDuration; short WadeDepth; diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp index 1d9fc4a91..a35b53089 100644 --- a/source/sw/src/player.cpp +++ b/source/sw/src/player.cpp @@ -3652,7 +3652,7 @@ DoPlayerClimb(PLAYERp pp) ny = MOVEy(100, lsp->ang); // set angle player is supposed to face. - pp->LadderAngle = NORM_ANGLE(lsp->ang + 1024); + pp->LadderAngle = buildang(lsp->ang + 1024); pp->LadderSector = wall[wal].nextsector; // set players "view" distance from the ladder - needs to be farther than @@ -3661,7 +3661,8 @@ DoPlayerClimb(PLAYERp pp) pp->lx = lsp->x + nx * 5; pp->ly = lsp->y + ny * 5; - pp->angle.settarget(pp->LadderAngle); + auto& PlayerAngle = pp->angle.ang; + pp->angle.settarget(PlayerAngle + getincanglebam(PlayerAngle, pp->LadderAngle)); } } } @@ -4058,7 +4059,7 @@ PlayerOnLadder(PLAYERp pp) ny = MOVEy(100, lsp->ang); // set angle player is supposed to face. - pp->LadderAngle = NORM_ANGLE(lsp->ang + 1024); + pp->LadderAngle = buildang(lsp->ang + 1024); #if DEBUG if (wall[wal].nextsector < 0) @@ -4077,7 +4078,8 @@ PlayerOnLadder(PLAYERp pp) pp->lx = lsp->x + nx * 5; pp->ly = lsp->y + ny * 5; - pp->angle.settarget(pp->LadderAngle); + auto& PlayerAngle = pp->angle.ang; + pp->angle.settarget(PlayerAngle + getincanglebam(PlayerAngle, pp->LadderAngle)); return true; }