From b55c67c29dddb69c36d67dfe43153cf3b9754db2 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Fri, 25 Nov 2022 20:53:02 -0500 Subject: [PATCH] Add currentwaypoint --- src/d_player.h | 1 + src/k_hud.c | 3 ++- src/k_kart.c | 3 ++- src/p_saveg.c | 9 +++++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index d3b6975ed..193a9d887 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -413,6 +413,7 @@ typedef struct player_s UINT8 oldposition; // Used for taunting when you pass someone UINT8 positiondelay; // Used for position number, so it can grow when passing UINT32 distancetofinish; + waypoint_t *currentwaypoint; waypoint_t *nextwaypoint; respawnvars_t respawn; // Respawn info tic_t airtime; // Keep track of how long you've been in the air diff --git a/src/k_hud.c b/src/k_hud.c index 4a5644442..37d9a2074 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -4634,7 +4634,8 @@ static void K_DrawWaypointDebugger(void) if (stplyr != &players[displayplayers[0]]) // only for p1 return; - V_DrawString(8, 166, 0, va("'Best' Waypoint ID: %d", K_GetWaypointID(stplyr->nextwaypoint))); + V_DrawString(8, 156, 0, va("Current Waypoint ID: %d", K_GetWaypointID(stplyr->currentwaypoint))); + V_DrawString(8, 166, 0, va("Next Waypoint ID: %d", K_GetWaypointID(stplyr->nextwaypoint))); V_DrawString(8, 176, 0, va("Finishline Distance: %d", stplyr->distancetofinish)); if (numstarposts > 0) diff --git a/src/k_kart.c b/src/k_kart.c index 6bb2be28e..dcd1fa60b 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8855,7 +8855,8 @@ static waypoint_t *K_GetPlayerNextWaypoint(player_t *player) waypoint_t *waypoint = K_GetBestWaypointForMobj(player->mo); boolean updaterespawn = false; - bestwaypoint = waypoint; + // Our current waypoint. + player->currentwaypoint = bestwaypoint = waypoint; // check the waypoint's location in relation to the player // If it's generally in front, it's fine, otherwise, use the best next/previous waypoint. diff --git a/src/p_saveg.c b/src/p_saveg.c index c9ede8b78..65b2d81a3 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -4422,6 +4422,15 @@ static void P_RelinkPointers(void) if (!P_SetTarget(&mobj->player->follower, P_FindNewPosition(temp))) CONS_Debug(DBG_GAMELOGIC, "follower not found on %d\n", mobj->type); } + if (mobj->player->currentwaypoint) + { + temp = (UINT32)(size_t)mobj->player->currentwaypoint; + mobj->player->currentwaypoint = K_GetWaypointFromIndex(temp); + if (mobj->player->currentwaypoint == NULL) + { + CONS_Debug(DBG_GAMELOGIC, "currentwaypoint not found on %d\n", mobj->type); + } + } if (mobj->player->nextwaypoint) { temp = (UINT32)(size_t)mobj->player->nextwaypoint;