From 0db31ae27f391f83f8f2f5272506adaa245c0962 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 11 Mar 2019 13:52:47 +0000 Subject: [PATCH] Change: Avoid caching end of ship path, to allow penalties to apply. --- src/pathfinder/yapf/yapf_ship.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pathfinder/yapf/yapf_ship.cpp b/src/pathfinder/yapf/yapf_ship.cpp index 6e07755059..731ae2f845 100644 --- a/src/pathfinder/yapf/yapf_ship.cpp +++ b/src/pathfinder/yapf/yapf_ship.cpp @@ -174,12 +174,16 @@ public: if (pNode != nullptr) { uint steps = 0; for (Node *n = pNode; n->m_parent != nullptr; n = n->m_parent) steps++; + uint skip = 0; + if (path_found) skip = YAPF_SHIP_PATH_CACHE_LENGTH / 2; /* walk through the path back to the origin */ Node *pPrevNode = nullptr; while (pNode->m_parent != nullptr) { steps--; - if (steps > 0 && steps < YAPF_SHIP_PATH_CACHE_LENGTH) { + /* Skip tiles at end of path near destination. */ + if (skip > 0) skip--; + if (skip == 0 && steps > 0 && steps < YAPF_SHIP_PATH_CACHE_LENGTH) { path_cache.push_front(pNode->GetTrackdir()); } pPrevNode = pNode;