From 11f9d822396ee07de4291dc11b5dbd1ceb5e5bf1 Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Wed, 16 Nov 2022 14:28:05 +1100 Subject: [PATCH] - SW: Wrap calls that set `PLAYER::PlayerNowPosition`. --- source/games/sw/src/game.cpp | 2 +- source/games/sw/src/game.h | 5 +++++ source/games/sw/src/osdcmds.cpp | 2 +- source/games/sw/src/player.cpp | 12 +++++++----- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/source/games/sw/src/game.cpp b/source/games/sw/src/game.cpp index 9de9b5943..ce4f57d93 100644 --- a/source/games/sw/src/game.cpp +++ b/source/games/sw/src/game.cpp @@ -408,7 +408,7 @@ void InitLevel(MapRecord *maprec) SpawnSpriteDef sprites; DVector3 ppos; loadMap(maprec->fileName, SW_SHAREWARE ? 1 : 0, &ppos, &ang, &cursect, sprites); - Player[0].PlayerNowPosition = ppos; + Player[0].posSet(ppos); spawnactors(sprites); Player[0].cursector = cursect; diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index a87567363..cccf151c0 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -732,6 +732,11 @@ struct PLAYER { return PlayerNowPosition.Z; } + + void posSet(const DVector3& val) + { + PlayerNowPosition = val; + } }; extern PLAYER Player[MAX_SW_PLAYERS_REG+1]; diff --git a/source/games/sw/src/osdcmds.cpp b/source/games/sw/src/osdcmds.cpp index 9ef6effe9..41fc668cd 100644 --- a/source/games/sw/src/osdcmds.cpp +++ b/source/games/sw/src/osdcmds.cpp @@ -56,7 +56,7 @@ BEGIN_SW_NS void GameInterface::WarpToCoords(double x, double y, double z, DAngle ang) { - Player->PlayerNowPosition = DVector3(x,y,z); + Player->posSet(DVector3(x,y,z)); Player->PlayerPrevPosition = Player->PlayerNowPosition; diff --git a/source/games/sw/src/player.cpp b/source/games/sw/src/player.cpp index 5794172cb..2fc8aff88 100644 --- a/source/games/sw/src/player.cpp +++ b/source/games/sw/src/player.cpp @@ -1312,7 +1312,8 @@ void DoPlayerTeleportPause(PLAYER* pp) void DoPlayerTeleportToSprite(PLAYER* pp, DVector3& pos, DAngle ang) { pp->angle.ang = pp->angle.oang = ang; - pp->PlayerPrevPosition = pp->PlayerNowPosition= pos.plusZ(-PLAYER_HEIGHTF); + pp->posSet(pos.plusZ(-PLAYER_HEIGHTF)); + pp->PlayerPrevPosition = pos.plusZ(-PLAYER_HEIGHTF); pp->PlayerOldPosition.XY() = pp->posXY(); updatesector(pp->PlayerNowPosition, &pp->cursector); @@ -2050,7 +2051,7 @@ void PlayerCheckValidMove(PLAYER* pp) { if (!pp->insector()) { - pp->PlayerNowPosition = pp->PlayerOldPosition; + pp->posSet(pp->PlayerOldPosition); pp->cursector = pp->lastcursector; } } @@ -5406,7 +5407,7 @@ void RemoteToPlayer(PLAYER* pp) pp->setcursector(pp->remote.cursectp); pp->lastcursector = pp->remote.lastcursectp; - pp->PlayerNowPosition = pp->remote.pos; + pp->posSet(pp->remote.pos); pp->vect = pp->remote.vect; pp->ovect = pp->remote.ovect; @@ -7173,7 +7174,8 @@ void InitAllPlayers(void) // Initialize all [MAX_SW_PLAYERS] arrays here! for (pp = Player; pp < &Player[MAX_SW_PLAYERS]; pp++) { - pp->PlayerNowPosition = pp->PlayerPrevPosition = pfirst->PlayerNowPosition; + pp->posSet(pfirst->PlayerNowPosition); + pp->PlayerPrevPosition = pfirst->PlayerNowPosition; pp->angle.ang = pp->angle.oang = pfirst->angle.ang; pp->horizon.horiz = pp->horizon.ohoriz = pfirst->horizon.horiz; pp->cursector = pfirst->cursector; @@ -7333,7 +7335,7 @@ void PlayerSpawnPosition(PLAYER* pp) ASSERT(spawn_sprite != nullptr); - pp->PlayerNowPosition = spawn_sprite->spr.pos; + pp->posSet(spawn_sprite->spr.pos); pp->PlayerPrevPosition = pp->PlayerNowPosition; pp->angle.ang = pp->angle.oang = spawn_sprite->spr.angle; pp->setcursector(spawn_sprite->sector());