diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/saga/actor_path.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/engines/saga/actor_path.cpp b/engines/saga/actor_path.cpp index 992a52f881..6f1fc2f2d4 100644 --- a/engines/saga/actor_path.cpp +++ b/engines/saga/actor_path.cpp @@ -232,7 +232,7 @@ int Actor::fillPathArray(const Point &fromPoint, const Point &toPoint, Point &be int directionCount; int16 compressX = (_vm->getGameId() == GID_ITE) ? 2 : 1; - Common::Array<PathDirectionData> pathDirectionList; + Common::List<PathDirectionData> pathDirectionQueue; pointCounter = 0; bestRating = quickDistance(fromPoint, toPoint, compressX); @@ -240,7 +240,7 @@ int Actor::fillPathArray(const Point &fromPoint, const Point &toPoint, Point &be for (startDirection = 0; startDirection < 4; startDirection++) { PathDirectionData tmp = { startDirection, fromPoint.x, fromPoint.y }; - pathDirectionList.push_back(tmp); + pathDirectionQueue.push_back(tmp); } if (validPathCellPoint(fromPoint)) { @@ -251,10 +251,12 @@ int Actor::fillPathArray(const Point &fromPoint, const Point &toPoint, Point &be #endif } - for (uint i = 0; i < pathDirectionList.size(); ++i) { + while (!pathDirectionQueue.empty()) { + PathDirectionData curPathDirection = pathDirectionQueue.front(); + pathDirectionQueue.pop_front(); for (directionCount = 0; directionCount < 3; directionCount++) { - samplePathDirection = &pathDirectionLUT[pathDirectionList[i].direction][directionCount]; - nextPoint = Point(pathDirectionList[i].x, pathDirectionList[i].y); + samplePathDirection = &pathDirectionLUT[curPathDirection.direction][directionCount]; + nextPoint = Point(curPathDirection.x, curPathDirection.y); nextPoint.x += samplePathDirection->x; nextPoint.y += samplePathDirection->y; @@ -274,7 +276,7 @@ int Actor::fillPathArray(const Point &fromPoint, const Point &toPoint, Point &be PathDirectionData tmp = { samplePathDirection->direction, nextPoint.x, nextPoint.y }; - pathDirectionList.push_back(tmp); + pathDirectionQueue.push_back(tmp); ++pointCounter; if (nextPoint == toPoint) { bestPoint = toPoint; |