(svn r2182) - Add: [NPF] There is now a debug class for NPF. Use -d npf<level> to enable debugging printouts from npf.
authormatthijs
Mon, 11 Apr 2005 19:53:44 +0000
changeset 1678 838dd6f46081
parent 1677 c18884ca76d5
child 1679 62f9e55a3835
(svn r2182) - Add: [NPF] There is now a debug class for NPF. Use -d npf<level> to enable debugging printouts from npf.
- Codechange: [NPF] Removed NPF_MARKROUTE macro, to mark routes just specify a npf debugging level >= 1 on the commandline.
debug.c
debug.h
npf.c
npf.h
--- a/debug.c	Mon Apr 11 19:14:48 2005 +0000
+++ b/debug.c	Mon Apr 11 19:53:44 2005 +0000
@@ -13,6 +13,7 @@
 int _debug_net_level;
 int _debug_spritecache_level;
 int _debug_oldloader_level;
+int _debug_npf_level;
 
 
 void CDECL debug(const char *s, ...)
@@ -48,7 +49,8 @@
 		DEBUG_LEVEL(ms),
 		DEBUG_LEVEL(net),
 		DEBUG_LEVEL(spritecache),
-		DEBUG_LEVEL(oldloader)
+		DEBUG_LEVEL(oldloader),
+		DEBUG_LEVEL(npf)
 	};
 	#undef DEBUG_LEVEL
 
--- a/debug.h	Mon Apr 11 19:14:48 2005 +0000
+++ b/debug.h	Mon Apr 11 19:53:44 2005 +0000
@@ -14,6 +14,7 @@
 	extern int _debug_net_level;
 	extern int _debug_spritecache_level;
 	extern int _debug_oldloader_level;
+	extern int _debug_npf_level;
 #endif
 
 void CDECL debug(const char *s, ...);
--- a/npf.c	Mon Apr 11 19:14:48 2005 +0000
+++ b/npf.c	Mon Apr 11 19:53:44 2005 +0000
@@ -179,9 +179,7 @@
 		ftd->best_bird_dist = dist;
 		ftd->best_trackdir = current->user_data[NPF_TRACKDIR_CHOICE];
 	}
-#ifdef NPF_DEBUG
-	debug("Calculating H for: (%d, %d). Result: %d", TileX(current->tile), TileY(current->tile), dist);
-#endif
+	DEBUG(npf, 4)("Calculating H for: (%d, %d). Result: %d", TileX(current->tile), TileY(current->tile), dist);
 	return dist;
 }
 
@@ -196,9 +194,7 @@
 		/* This is a first order decision, so we'd better save the
 		 * direction we chose */
 		current->user_data[NPF_TRACKDIR_CHOICE] = trackdir;
-#ifdef NPF_DEBUG
-		debug("Saving trackdir: %#x", trackdir);
-#endif
+		DEBUG(npf, 6)("Saving trackdir: %#x", trackdir);
 	} else {
 		/* We've already made the decision, so just save our parent's
 		 * decision */
@@ -250,18 +246,24 @@
 	 * there is only one level of steepness... */
 }
 
+/* Mark tiles by mowing the grass when npf debug level >= 1 */
 void NPFMarkTile(TileIndex tile) {
-	switch(GetTileType(tile)) {
-		case MP_RAILWAY:
-		case MP_STREET:
-			/* DEBUG: mark visited tiles by mowing the grass under them
-			 * ;-) */
-			_map2[tile] &= ~15;
-			MarkTileDirtyByTile(tile);
-			break;
-		default:
-			break;
-	}
+#ifdef NO_DEBUG_MESSAGES
+	return;
+#else
+	if (_debug_npf_level >= 1)
+		switch(GetTileType(tile)) {
+			case MP_RAILWAY:
+			case MP_STREET:
+				/* DEBUG: mark visited tiles by mowing the grass under them
+				 * ;-) */
+				_map2[tile] &= ~15;
+				MarkTileDirtyByTile(tile);
+				break;
+			default:
+				break;
+		}
+#endif
 }
 
 int32 NPFWaterPathCost(AyStar* as, AyStarNode* current, OpenListNode* parent) {
@@ -304,12 +306,8 @@
 	/* Check for turns */
 	//TODO
 
-#ifdef NPF_MARKROUTE
 	NPFMarkTile(tile);
-#endif
-#ifdef NPF_DEBUG
-	debug("Calculating G for: (%d, %d). Result: %d", TileX(current->tile), TileY(current->tile), cost);
-#endif
+	DEBUG(npf, 4)("Calculating G for: (%d, %d). Result: %d", TileX(current->tile), TileY(current->tile), cost);
 	return cost;
 }
 
@@ -395,12 +393,8 @@
 	/* Check for occupied track */
 	//TODO
 
-#ifdef NPF_MARKROUTE
 	NPFMarkTile(tile);
-#endif
-#ifdef NPF_DEBUG
-	debug("Calculating G for: (%d, %d). Result: %d", TileX(current->tile), TileY(current->tile), cost);
-#endif
+	DEBUG(npf, 4)("Calculating G for: (%d, %d). Result: %d", TileX(current->tile), TileY(current->tile), cost);
 	return cost;
 }
 
@@ -468,9 +462,7 @@
 	TransportType type = aystar->user_data[NPF_TYPE];
 	/* Initialize to 0, so we can jump out (return) somewhere an have no neighbours */
 	aystar->num_neighbours = 0;
-#ifdef NPF_DEBUG
-	debug("Expanding: (%d, %d, %d) [%d]", TileX(src_tile), TileY(src_tile), src_trackdir, src_tile);
-#endif
+	DEBUG(npf, 4)("Expanding: (%d, %d, %d) [%d]", TileX(src_tile), TileY(src_tile), src_trackdir, src_tile);
 
 	/* Find dest tile */
 	if (IsTileType(src_tile, MP_TUNNELBRIDGE) && (_map5[src_tile] & 0xF0)==0 && (_map5[src_tile] & 3) == src_exitdir) {
@@ -544,25 +536,19 @@
 	}
 	trackdirs = ts & 0x3F3F; /* Filter out signal status and the unused bits */
 
-#ifdef NPF_DEBUG
-	debug("Next node: (%d, %d) [%d], possible trackdirs: %#x", TileX(dst_tile), TileY(dst_tile), dst_tile, trackdirs);
-#endif
+	DEBUG(npf, 4)("Next node: (%d, %d) [%d], possible trackdirs: %#x", TileX(dst_tile), TileY(dst_tile), dst_tile, trackdirs);
 	/* Select only trackdirs we can reach from our current trackdir */
 	trackdirs &= _trackdir_reaches_trackdirs[src_trackdir];
 	if (_patches.forbid_90_deg && (type == TRANSPORT_RAIL || type == TRANSPORT_WATER)) /* Filter out trackdirs that would make 90 deg turns for trains */
 		trackdirs &= ~_trackdir_crosses_trackdirs[src_trackdir];
-#ifdef NPF_DEBUG
-	debug("After filtering: (%d, %d), possible trackdirs: %#x", TileX(dst_tile), TileY(dst_tile), trackdirs);
-#endif
+	DEBUG(npf,6)("After filtering: (%d, %d), possible trackdirs: %#x", TileX(dst_tile), TileY(dst_tile), trackdirs);
 
 	/* Enumerate possible track */
 	while (trackdirs != 0) {
 		byte dst_trackdir;
 		dst_trackdir =  FindFirstBit2x64(trackdirs);
 		trackdirs = KillFirstBit2x64(trackdirs);
-#ifdef NPF_DEBUG
-		debug("Expanded into trackdir: %d, remaining trackdirs: %#x", dst_trackdir, trackdirs);
-#endif
+		DEBUG(npf, 5)("Expanded into trackdir: %d, remaining trackdirs: %#x", dst_trackdir, trackdirs);
 
 		/* Check for oneway signal against us */
 		if (IsTileType(dst_tile, MP_RAILWAY) && (_map5[dst_tile]&0xC0) == 0x40) {
--- a/npf.h	Mon Apr 11 19:14:48 2005 +0000
+++ b/npf.h	Mon Apr 11 19:53:44 2005 +0000
@@ -5,8 +5,6 @@
 #include "aystar.h"
 #include "vehicle.h"
 
-//#define NPF_DEBUG
-//#define NPF_MARKROUTE //Mark the routes considered by the pathfinder by
 //mowing grass
 enum {
 	NPF_HASH_BITS = 12, /* The size of the hash used in pathfinding. Just changing this value should be sufficient to change the hash size. Should be an even value. */