From 975682308ba16b1a1507c4de5653a78807b0ed64 Mon Sep 17 00:00:00 2001 From: Marco Antonio Jaguaribe Costa Date: Sun, 28 May 2023 10:54:49 -0300 Subject: [PATCH 1/2] remove unused fNonFenceJumper from AstarPathfinder::GetPath --- Tactical/PATHAI.H | 1 - Tactical/PATHAI.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/Tactical/PATHAI.H b/Tactical/PATHAI.H index c48a06a35..cf80a125e 100644 --- a/Tactical/PATHAI.H +++ b/Tactical/PATHAI.H @@ -76,7 +76,6 @@ private: SOLDIERTYPE* pSoldier; INT8 onRooftop;//aka ubLevel, not sure if this bool is logically reversed yet - bool fNonFenceJumper; bool fNonSwimmer; bool fPathingForPlayer; bool fPathAroundPeople; diff --git a/Tactical/PATHAI.cpp b/Tactical/PATHAI.cpp index 45c76ca83..b96672492 100644 --- a/Tactical/PATHAI.cpp +++ b/Tactical/PATHAI.cpp @@ -638,7 +638,6 @@ int AStarPathfinder::GetPath(SOLDIERTYPE *s , fTurnBased = ( (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT) ); fPathingForPlayer = ( (pSoldier->bTeam == gbPlayerNum) && (!gTacticalStatus.fAutoBandageMode) && !(pSoldier->flags.uiStatusFlags & SOLDIER_PCUNDERAICONTROL) ); - fNonFenceJumper = !( IS_MERC_BODY_TYPE( pSoldier ) ); fNonSwimmer = !( IS_MERC_BODY_TYPE( pSoldier ) ); fPathAroundPeople = ( (fFlags & PATH_THROUGH_PEOPLE) == 0 ); fCloseGoodEnough = ( (fFlags & PATH_CLOSE_GOOD_ENOUGH) != 0); From c8e1daa25bab4f1dbd01372abcd947b8569dbbc3 Mon Sep 17 00:00:00 2001 From: Marco Antonio Jaguaribe Costa Date: Sun, 28 May 2023 10:56:48 -0300 Subject: [PATCH 2/2] Extract backpack check into function and flip logic Avoiding double negatives is nice --- Tactical/PATHAI.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Tactical/PATHAI.cpp b/Tactical/PATHAI.cpp index b96672492..c8543b59b 100644 --- a/Tactical/PATHAI.cpp +++ b/Tactical/PATHAI.cpp @@ -454,6 +454,11 @@ UINT32 guiFailedPathChecks = 0; UINT32 guiUnsuccessfulPathChecks = 0; #endif + +static auto canJumpFences(SOLDIERTYPE* pSoldier) -> bool { + return IS_MERC_BODY_TYPE(pSoldier) && pSoldier->CanClimbWithCurrentBackpack(); +} + //ADB the extra cover feature is supposed to pick a path of the same distance as one calculated with the feature off, //but a safer path, usually farther away from an enemy or following behind some cover. //however it has not been tested and it may need some work, I haven't touched it in a while @@ -2243,7 +2248,6 @@ INT32 FindBestPath(SOLDIERTYPE *s , INT32 sDestination, INT8 bLevel, INT16 usMov DOOR * pDoor; STRUCTURE * pDoorStructure; BOOLEAN fDoorIsOpen = FALSE; - BOOLEAN fNonFenceJumper; BOOLEAN fNonSwimmer; BOOLEAN fPathAroundPeople; BOOLEAN fConsiderPersonAtDestAsObstacle; @@ -2315,7 +2319,6 @@ if(!GridNoOnVisibleWorldTile(iDestination)) fTurnBased = ( (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT) ); fPathingForPlayer = ( (s->bTeam == gbPlayerNum) && (!gTacticalStatus.fAutoBandageMode) && !(s->flags.uiStatusFlags & SOLDIER_PCUNDERAICONTROL) ); - fNonFenceJumper = !( IS_MERC_BODY_TYPE( s ) ) || (!s->CanClimbWithCurrentBackpack());//Moa: added backpack check // Flugente: nonswimmers are those who are not mercs and not boats fNonSwimmer = !(IS_MERC_BODY_TYPE( s ) ); @@ -2929,7 +2932,7 @@ if(!GridNoOnVisibleWorldTile(iDestination)) nextCost = gTileTypeMovementCost[ gpWorldLevelData[ newLoc ].ubTerrainID ]; } } - else if ( nextCost == TRAVELCOST_FENCE && fNonFenceJumper ) + else if ( nextCost == TRAVELCOST_FENCE && !canJumpFences(s)) { goto NEXTDIR; }