diff options
Diffstat (limited to 'src/koopatlas/pathmanager.cpp')
-rw-r--r-- | src/koopatlas/pathmanager.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/koopatlas/pathmanager.cpp b/src/koopatlas/pathmanager.cpp index a9cd003..d329c6d 100644 --- a/src/koopatlas/pathmanager.cpp +++ b/src/koopatlas/pathmanager.cpp @@ -41,11 +41,14 @@ void dWMPathManager_c::setup() { found = true; currentNode = node; + //OSReport("Found CHANGE node: %d %p\n", changeID, node); + // figure out where we should move to dKPPath_s *exitTo = 0; for (int i = 0; i < 4; i++) { dKPPath_s *candidateExit = node->exits[i]; + //OSReport("Candidate exit: %p\n", candidateExit); if (!candidateExit) continue; @@ -55,9 +58,12 @@ void dWMPathManager_c::setup() { while (true) { dKPNode_s *destNode = (path->start == srcNode) ? path->end : path->start; + //OSReport("Path: %p nodes %p to %p\n", path, srcNode, destNode); int ct = destNode->getAvailableExitCount(); + //OSReport("Dest Node available exits: %d; type: %d\n", ct, destNode->type); if (destNode == node || ct > 2 || destNode->type == dKPNode_s::LEVEL) { - exitTo = path; + exitTo = candidateExit; + //OSReport("Accepting this node\n"); break; } @@ -84,7 +90,7 @@ void dWMPathManager_c::setup() { currentNode = pathLayer->nodes[0]; mustComplainToMapCreator = true; } - + } else { SpammyReport("saved path node: %d\n", save->current_path_node); if (save->current_path_node >= pathLayer->nodeCount) { @@ -567,7 +573,15 @@ void dWMPathManager_c::moveThroughPath() { if (to->type == dKPNode_s::CHANGE) { // Go to another map - isMoving = false; + + // should we continue moving? + if (to->getAvailableExitCount() == 1) { + OSReport("Stopping"); + isMoving = false; + } else { + OSReport("Continuing"); + startMovementTo(to->getOppositeAvailableExitTo(currentPath)); + } SaveBlock *save = GetSaveFile()->GetBlock(-1); SpammyReport("node: %x, %s", to->destMap, to->destMap); |