summaryrefslogtreecommitdiff
path: root/src/astar.cpp
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2005-02-05 15:19:10 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2005-02-05 15:19:10 +0000
commit17798683ebebbc92510ba5244aa3455c2138869d (patch)
treea3c3b99944327a577aaf2000278c6a28453634e6 /src/astar.cpp
parent9770f22a2846c68dbeea0780d595ad49ea6c490d (diff)
downloadmana-client-17798683ebebbc92510ba5244aa3455c2138869d.tar.gz
mana-client-17798683ebebbc92510ba5244aa3455c2138869d.tar.bz2
mana-client-17798683ebebbc92510ba5244aa3455c2138869d.tar.xz
mana-client-17798683ebebbc92510ba5244aa3455c2138869d.zip
Removed superfluous getPathWalk method in favor of getWalk.
Diffstat (limited to 'src/astar.cpp')
-rw-r--r--src/astar.cpp47
1 files changed, 23 insertions, 24 deletions
diff --git a/src/astar.cpp b/src/astar.cpp
index d6e60227..f3e8acb0 100644
--- a/src/astar.cpp
+++ b/src/astar.cpp
@@ -1,8 +1,11 @@
#include "astar.h"
-#define MAP_WIDTH 200
+#define MAP_WIDTH 200
#define MAP_HEIGHT 200
+#define WALKABLE 0
+#define NOT_WALKABLE 1
+
// path-related constants
const int numberPeople = 1;
int onClosedList = 10;
@@ -43,7 +46,7 @@ int H_cost[MAP_WIDTH * MAP_HEIGHT + 2];
int pathLength; /**< length of the FOUND path for critter */
int pathLocation; /**< current position along the chosen path for critter */
-int* path_bank;
+int* path_bank = NULL;
// Path reading variables
int pathStatus;
@@ -72,8 +75,8 @@ PATH_NODE *find_path(int pathfinderID, int s_x, int s_y, int e_x, int e_y)
if (s_x == e_x && s_y == e_y && pathLocation > 0) return NULL;
else if (s_x == e_x && s_y == e_y && pathLocation == 0) return NULL;
- // If dest tile is NOT_WALKABLE, return that it's a NOT_FOUND path.
- if (tiledMap.getPathWalk(e_x, e_y) == NOT_WALKABLE) {
+ // If dest tile is not walkable, return that it's a NOT_FOUND path.
+ if (!tiledMap.getWalk(e_x, e_y)) {
xPath = s_x;
yPath = s_y;
return NULL;
@@ -185,24 +188,26 @@ PATH_NODE *find_path(int pathfinderID, int s_x, int s_y, int e_x, int e_y)
// closed list have already been considered and can now
// be ignored).
if (whichList[a][b] != onClosedList) {
- // If not a wall/obstacle square.
- if (tiledMap.getPathWalk(a, b) != NOT_WALKABLE) {
+ // If not a wall/obstacle square.
+ if (tiledMap.getWalk(a, b)) {
// Don't cut across corners
corner = WALKABLE;
- if (a == parentXval-1) {
- if (b == parentYval-1) {
- if (tiledMap.getPathWalk(parentXval - 1, parentYval) == NOT_WALKABLE || tiledMap.getPathWalk(parentXval, parentYval - 1) == NOT_WALKABLE) // cera slash
+
+ if (a == parentXval - 1) {
+ if (b == parentYval - 1) {
+ if (!tiledMap.getWalk(parentXval - 1, parentYval) || !tiledMap.getWalk(parentXval, parentYval - 1)) // cera slash
corner = NOT_WALKABLE;
} else if (b == parentYval + 1) {
- if (tiledMap.getPathWalk(parentXval, parentYval + 1) == NOT_WALKABLE || tiledMap.getPathWalk(parentXval - 1, parentYval) == NOT_WALKABLE)
+ if (!tiledMap.getWalk(parentXval, parentYval + 1) || !tiledMap.getWalk(parentXval - 1, parentYval))
corner = NOT_WALKABLE;
}
- } else if (a == parentXval + 1) {
+ }
+ else if (a == parentXval + 1) {
if (b == parentYval - 1) {
- if (tiledMap.getPathWalk(parentXval, parentYval - 1) == NOT_WALKABLE || tiledMap.getPathWalk(parentXval + 1, parentYval) == NOT_WALKABLE)
+ if (!tiledMap.getWalk(parentXval, parentYval - 1) || !tiledMap.getWalk(parentXval + 1, parentYval))
corner = NOT_WALKABLE;
} else if (b == parentYval + 1) {
- if (tiledMap.getPathWalk(parentXval + 1, parentYval) == NOT_WALKABLE || tiledMap.getPathWalk(parentXval, parentYval + 1) == NOT_WALKABLE)
+ if (!tiledMap.getWalk(parentXval + 1, parentYval) || !tiledMap.getWalk(parentXval, parentYval + 1))
corner = NOT_WALKABLE;
}
}
@@ -430,8 +435,8 @@ PATH_NODE *find_path(int pathfinderID, int s_x, int s_y, int e_x, int e_y)
do {
// Work backwards 2 integers
cellPosition = cellPosition - 2;
- path_bank [cellPosition] = pathX;
- path_bank [cellPosition+1] = pathY;
+ path_bank[cellPosition] = pathX;
+ path_bank[cellPosition + 1] = pathY;
// Look up the parent of the current cell.
tempx = parentX[pathX][pathY];
pathY = parentY[pathX][pathY];
@@ -440,17 +445,11 @@ PATH_NODE *find_path(int pathfinderID, int s_x, int s_y, int e_x, int e_y)
}
while (pathX != s_x || pathY != s_y);
- char stringa[80];
- sprintf(stringa,"%i %i",s_x,s_y);
-
PATH_NODE *ret = NULL, *temp = NULL;
pathLocation = 1;
ret = new PATH_NODE(s_x, s_y);
temp = ret;
- //alert(stringa,"","","","",0,0);
- while(pathLocation<pathLength) {
- sprintf(stringa, "%i %i", path_bank[pathLocation * 2 - 2],
- path_bank[pathLocation * 2 - 1]);
+ while (pathLocation < pathLength) {
temp->next = new PATH_NODE(
path_bank[pathLocation * 2 - 2],
path_bank[pathLocation * 2 - 1]);
@@ -478,8 +477,8 @@ void ReadPath(int pathfinderID)
// Set pathLocation to 1st step
pathLocation = 1;
while (pathLocation<pathLength) {
- int a = path_bank [pathLocation * 2 - 2];
- int b = path_bank [pathLocation * 2 - 1];
+ int a = path_bank[pathLocation * 2 - 2];
+ int b = path_bank[pathLocation * 2 - 1];
pathLocation = pathLocation + 1;
// Draw dotted path
whichList[a][b] = 3;