From 74da7a9e7e7ef4e9bc1e6ec9b0709bf2ed663a8e Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Sun, 2 Jun 2019 23:12:16 +0300 Subject: [PATCH] Clean up path_next_node. --- Source/path.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Source/path.cpp b/Source/path.cpp index 5da77cb25..d3134a2e2 100644 --- a/Source/path.cpp +++ b/Source/path.cpp @@ -273,21 +273,23 @@ PATHNODE *path_get_node2(int dx, int dy) * distance) */ void path_next_node(PATHNODE *pPath) { - PATHNODE *current; // edx - PATHNODE *next; // eax - - current = path_2_nodes; - next = path_2_nodes->NextNode; - if (next != NULL) { - do { - if (next->f >= pPath->f) - break; + PATHNODE *next, *current; + int f; + + next = path_2_nodes; + if (path_2_nodes->NextNode) { + current = path_2_nodes; + next = path_2_nodes->NextNode; + f = pPath->f; + while (next && next->f < f) { current = next; next = next->NextNode; - } while (next != NULL); + } pPath->NextNode = next; + current->NextNode = pPath; + } else { + path_2_nodes->NextNode = pPath; } - current->NextNode = pPath; } /* update all path costs using depth-first search starting at pPath */