[Scummvm-cvs-logs] CVS: scummvm/gob game.cpp,1.21,1.22 goblin.cpp,1.17,1.18 map.cpp,1.12,1.13 map.h,1.6,1.7

Torbjörn Andersson eriktorbjorn at users.sourceforge.net
Sun Jul 10 06:39:02 CEST 2005


Update of /cvsroot/scummvm/scummvm/gob
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9574

Modified Files:
	game.cpp goblin.cpp map.cpp map.h 
Log Message:
Cleanup.


Index: game.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/game.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- game.cpp	8 May 2005 21:49:41 -0000	1.21
+++ game.cpp	10 Jul 2005 13:37:03 -0000	1.22
@@ -815,7 +815,6 @@
 
 		switch (key) {
 		case 0x4d00:	// Right Arrow
-
 			if (pos < strlen(str) && pos < editSize - 1) {
 				pos++;
 				continue;

Index: goblin.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/goblin.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- goblin.cpp	21 Jun 2005 13:14:56 -0000	1.17
+++ goblin.cpp	10 Jul 2005 13:37:03 -0000	1.18
@@ -1304,11 +1304,11 @@
 		nextAct = 0x4dc8;
 
 	switch (nextAct) {
-	case 0x4b00:
+	case kDirW:
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 0);
 		break;
 
-	case 0x4d00:
+	case kDirE:
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 4);
 		break;
 
@@ -1320,8 +1320,7 @@
 		gobDesc->nextState = 23;
 		break;
 
-	case 0x4800:
-
+	case kDirN:
 		if (map_passMap[map_curGoblinY - 1][map_curGoblinX] == 6 &&
 		    gob_currentGoblin != 1) {
 			gob_pathExistence = 0;
@@ -1342,7 +1341,7 @@
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 2);
 		break;
 
-	case 0x5000:
+	case kDirS:
 		if (map_passMap[map_curGoblinY + 1][map_curGoblinX] == 6 &&
 		    gob_currentGoblin != 1) {
 			gob_pathExistence = 0;
@@ -1363,7 +1362,7 @@
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 6);
 		break;
 
-	case 0x5100:
+	case kDirSE:
 		if (map_passMap[map_curGoblinY + 1][map_curGoblinX + 1] == 6 &&
 		    gob_currentGoblin != 1) {
 			gob_pathExistence = 0;
@@ -1377,7 +1376,7 @@
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 4);
 		break;
 
-	case 0x4f00:
+	case kDirSW:
 		if (map_passMap[map_curGoblinY + 1][map_curGoblinX - 1] == 6 &&
 		    gob_currentGoblin != 1) {
 			gob_pathExistence = 0;
@@ -1391,7 +1390,7 @@
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 0);
 		break;
 
-	case 0x4700:
+	case kDirNW:
 		if (map_passMap[map_curGoblinY - 1][map_curGoblinX - 1] == 6 &&
 		    gob_currentGoblin != 1) {
 			gob_pathExistence = 0;
@@ -1405,7 +1404,7 @@
 		gobDesc->nextState = gob_rotateState(gobDesc->curLookDir, 0);
 		break;
 
-	case 0x4900:
+	case kDirNE:
 		if (map_passMap[map_curGoblinY - 1][map_curGoblinX + 1] == 6 &&
 		    gob_currentGoblin != 1) {
 			gob_pathExistence = 0;

Index: map.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/map.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- map.cpp	22 Jun 2005 19:32:09 -0000	1.12
+++ map.cpp	10 Jul 2005 13:37:03 -0000	1.13
@@ -55,10 +55,15 @@
 		map_itemsMap[y][x] = (map_itemsMap[y][x] & 0x00ff) | (id << 8);
 }
 
-int16 map_getDirection(int16 x0, int16 y0, int16 x1, int16 y1) {
-	int16 dir;
+enum {
+	kLeft  = (1 << 0),
+	kUp    = (1 << 1),
+	kRight = (1 << 2),
+	kDown  = (1 << 3)
+};
 
-	dir = 0;
+int16 map_getDirection(int16 x0, int16 y0, int16 x1, int16 y1) {
+	int16 dir = 0;
 
 	if (x0 == x1 && y0 == y1)
 		return 0;
@@ -67,136 +72,137 @@
 		return 0;
 
 	if (y1 > y0)
-		dir = 8;
+		dir |= kDown;
 	else if (y1 < y0)
-		dir = 2;
+		dir |= kUp;
 
 	if (x1 > x0)
-		dir += 4;
+		dir |= kRight;
 	else if (x1 < x0)
-		dir += 1;
+		dir |= kLeft;
 
-	if (map_passMap[y0][x0] == 3 && (dir == 3 || dir == 6 || dir == 2)) {
+	if (map_passMap[y0][x0] == 3 && (dir & kUp)) {
 		if (map_passMap[y0 - 1][x0] != 0)
-			return 0x4800;
+			return kDirN;
 	}
 
-	if (map_passMap[y0][x0] == 3 && (dir == 9 || dir == 12 || dir == 8)) {
+	if (map_passMap[y0][x0] == 3 && (dir & kDown)) {
 		if (map_passMap[y0 + 1][x0] != 0)
-			return 0x5000;
+			return kDirS;
 	}
 
-	if (map_passMap[y0][x0] == 6 && (dir == 3 || dir == 6 || dir == 2)) {
+	if (map_passMap[y0][x0] == 6 && (dir & kUp)) {
 		if (map_passMap[y0 - 1][x0] != 0)
-			return 0x4800;
+			return kDirN;
 	}
 
-	if (map_passMap[y0][x0] == 6 && (dir == 9 || dir == 12 || dir == 8)) {
+	if (map_passMap[y0][x0] == 6 && (dir & kDown)) {
 		if (map_passMap[y0 + 1][x0] != 0)
-			return 0x5000;
+			return kDirS;
 	}
 
-	if (dir == 1) {
+	if (dir == kLeft) {
 		if (x0 - 1 >= 0 && map_passMap[y0][x0 - 1] != 0)
-			return 0x4b00;
+			return kDirW;
 		return 0;
 	}
 
-	if (dir == 4) {
+	if (dir == kRight) {
 		if (x0 + 1 < 26 && map_passMap[y0][x0 + 1] != 0)
-			return 0x4d00;
+			return kDirE;
 		return 0;
 	}
 
-	if (dir == 2) {
+	if (dir == kUp) {
 		if (y0 - 1 >= 0 && map_passMap[y0 - 1][x0] != 0)
-			return 0x4800;
+			return kDirN;
 
 		if (y0 - 1 >= 0 && x0 - 1 >= 0
 		    && map_passMap[y0 - 1][x0 - 1] != 0)
-			return 0x4700;
+			return kDirNW;
 
 		if (y0 - 1 >= 0 && x0 + 1 < 26
 		    && map_passMap[y0 - 1][x0 + 1] != 0)
-			return 0x4900;
+			return kDirNE;
 
 		return 0;
 	}
 
-	if (dir == 8) {
+	if (dir == kDown) {
 		if (y0 + 1 < 28 && map_passMap[y0 + 1][x0] != 0)
-			return 0x5000;
+			return kDirS;
 
 		if (y0 + 1 < 28 && x0 - 1 >= 0
 		    && map_passMap[y0 + 1][x0 - 1] != 0)
-			return 0x4f00;
+			return kDirSW;
 
 		if (y0 + 1 < 28 && x0 + 1 < 26
 		    && map_passMap[y0 + 1][x0 + 1] != 0)
-			return 0x5100;
+			return kDirSE;
 
 		return 0;
 	}
 
-	if (dir == 6) {
+	if (dir == (kRight | kUp)) {
 		if (y0 - 1 >= 0 && x0 + 1 < 26
 		    && map_passMap[y0 - 1][x0 + 1] != 0)
-			return 0x4900;
+			return kDirNE;
 
 		if (y0 - 1 >= 0 && map_passMap[y0 - 1][x0] != 0)
-			return 0x4800;
+			return kDirN;
 
 		if (x0 + 1 < 26 && map_passMap[y0][x0 + 1] != 0)
-			return 0x4d00;
+			return kDirE;
 
 		return 0;
 	}
 
-	if (dir == 12) {
+	if (dir == (kRight | kDown)) {
 		if (x0 + 1 < 26 && y0 + 1 < 28
 		    && map_passMap[y0 + 1][x0 + 1] != 0)
-			return 0x5100;
+			return kDirSE;
 
 		if (y0 + 1 < 28 && map_passMap[y0 + 1][x0] != 0)
-			return 0x5000;
+			return kDirS;
 
 		if (x0 + 1 < 26 && map_passMap[y0][x0 + 1] != 0)
-			return 0x4d00;
+			return kDirE;
 
 		return 0;
 	}
 
-	if (dir == 3) {
+	if (dir == (kLeft | kUp)) {
 		if (x0 - 1 >= 0 && y0 - 1 >= 0
 		    && map_passMap[y0 - 1][x0 - 1] != 0)
-			return 0x4700;
+			return kDirNW;
 
 		if (y0 - 1 >= 0 && map_passMap[y0 - 1][x0] != 0)
-			return 0x4800;
+			return kDirN;
 
 		if (x0 - 1 >= 0 && map_passMap[y0][x0 - 1] != 0)
-			return 0x4b00;
+			return kDirW;
 
 		return 0;
 	}
 
-	if (dir == 9) {
+	if (dir == (kLeft | kDown)) {
 		if (x0 - 1 >= 0 && y0 + 1 < 28
 		    && map_passMap[y0 + 1][x0 - 1] != 0)
-			return 0x4f00;
+			return kDirSW;
 
 		if (y0 + 1 < 28 && map_passMap[y0 + 1][x0] != 0)
-			return 0x5000;
+			return kDirS;
 
 		if (x0 - 1 >= 0 && map_passMap[y0][x0 - 1] != 0)
-			return 0x4b00;
+			return kDirW;
 
 		return 0;
 	}
 	return -1;
 }
 
-void map_findNearestToGob(void) {
+int16 map_findNearestWayPoint(int16 x, int16 y) {
+	int16 nearestWayPoint = -1;
 	int16 length;
 	int16 i;
 	int16 tmp;
@@ -207,38 +213,31 @@
 		if (map_wayPoints[i].x < 0 ||
 		    map_wayPoints[i].x > 25 ||
 		    map_wayPoints[i].y < 0 || map_wayPoints[i].y > 27)
-			return;
+			return -1;
 
-		tmp = ABS(map_curGoblinX - map_wayPoints[i].x) +
-		    ABS(map_curGoblinY - map_wayPoints[i].y);
+		tmp = ABS(x - map_wayPoints[i].x) + ABS(y - map_wayPoints[i].y);
 
 		if (tmp <= length) {
-			map_nearestWayPoint = i;
+			nearestWayPoint = i;
 			length = tmp;
 		}
 	}
+
+	return nearestWayPoint;
 }
 
-void map_findNearestToDest(void) {
-	int16 length;
-	int16 tmp;
-	int16 i;
+void map_findNearestToGob(void) {
+	int16 wayPoint = map_findNearestWayPoint(map_curGoblinX, map_curGoblinY);
 
-	length = 30000;
-	for (i = 0; i < 40; i++) {
-		if (map_wayPoints[i].x < 0 ||
-		    map_wayPoints[i].x > 25 ||
-		    map_wayPoints[i].y < 0 || map_wayPoints[i].y > 27)
-			return;
+	if (wayPoint != -1)
+		map_nearestWayPoint = wayPoint;
+}
 
-		tmp = ABS(map_destX - map_wayPoints[i].x) +
-		    ABS(map_destY - map_wayPoints[i].y);
+void map_findNearestToDest(void) {
+	int16 wayPoint = map_findNearestWayPoint(map_destX, map_destY);
 
-		if (tmp <= length) {
-			map_nearestDest = i;
-			length = tmp;
-		}
-	}
+	if (wayPoint != -1)
+		map_nearestDest = wayPoint;
 }
 
 int16 map_checkDirectPath(int16 x0, int16 y0, int16 x1, int16 y1) {
@@ -254,38 +253,38 @@
 			return 3;
 
 		switch (dir) {
-		case 0x4700:
+		case kDirNW:
 			x0--;
 			y0--;
 			break;
 
-		case 0x4800:
+		case kDirN:
 			y0--;
 			break;
 
-		case 0x4900:
+		case kDirNE:
 			x0++;
 			y0--;
 			break;
 
-		case 0x4b00:
+		case kDirW:
 			x0--;
 			break;
 
-		case 0x4d00:
+		case kDirE:
 			x0++;
 			break;
 
-		case 0x4f00:
+		case kDirSW:
 			x0--;
 			y0++;
 			break;
 
-		case 0x5000:
+		case kDirS:
 			y0++;
 			break;
 
-		case 0x5100:
+		case kDirSE:
 			x0++;
 			y0++;
 			break;
@@ -338,38 +337,38 @@
 		case 0:
 			return 0;
 
-		case 0x4700:
+		case kDirNW:
 			x0--;
 			y0--;
 			break;
 
-		case 0x4800:
+		case kDirN:
 			y0--;
 			break;
 
-		case 0x4900:
+		case kDirNE:
 			x0++;
 			y0--;
 			break;
 
-		case 0x4b00:
+		case kDirW:
 			x0--;
 			break;
 
-		case 0x4d00:
+		case kDirE:
 			x0++;
 			break;
 
-		case 0x4f00:
+		case kDirSW:
 			x0--;
 			y0++;
 			break;
 
-		case 0x5000:
+		case kDirS:
 			y0++;
 			break;
 
-		case 0x5100:
+		case kDirSE:
 			x0++;
 			y0++;
 			break;

Index: map.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gob/map.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- map.h	22 Jun 2005 19:32:09 -0000	1.6
+++ map.h	10 Jul 2005 13:37:03 -0000	1.7
@@ -24,6 +24,19 @@
 
 namespace Gob {
 
+// The same numeric values are also used for the arrow keys.
+
+enum {
+	kDirNW = 0x4700,
+	kDirN  = 0x4800,
+	kDirNE = 0x4900,
+	kDirW  = 0x4b00,
+	kDirE  = 0x4d00,
+	kDirSW = 0x4f00,
+	kDirS  = 0x5000,
+	kDirSE = 0x5100
+};
+
 #pragma START_PACK_STRUCTS
 #define szMap_Point 4
 typedef struct Map_Point {





More information about the Scummvm-git-logs mailing list