diff options
author | matthijs <matthijs@openttd.org> | 2005-04-11 19:53:44 +0000 |
---|---|---|
committer | matthijs <matthijs@openttd.org> | 2005-04-11 19:53:44 +0000 |
commit | f5d9cb58ebd9780c0d1c256a15c93f1d5de636fb (patch) | |
tree | 7611935b4ef6a2c1d6cf921d2367db66bf73a1e3 | |
parent | b02dde198240a27f53ca196e1d9bdff89ca2edcf (diff) | |
download | openttd-f5d9cb58ebd9780c0d1c256a15c93f1d5de636fb.tar.xz |
(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.
-rw-r--r-- | debug.c | 4 | ||||
-rw-r--r-- | debug.h | 1 | ||||
-rw-r--r-- | npf.c | 64 | ||||
-rw-r--r-- | npf.h | 2 |
4 files changed, 29 insertions, 42 deletions
@@ -13,6 +13,7 @@ int _debug_ms_level; 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 @@ void SetDebugString(const char *s) DEBUG_LEVEL(ms), DEBUG_LEVEL(net), DEBUG_LEVEL(spritecache), - DEBUG_LEVEL(oldloader) + DEBUG_LEVEL(oldloader), + DEBUG_LEVEL(npf) }; #undef DEBUG_LEVEL @@ -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, ...); @@ -179,9 +179,7 @@ int32 NPFCalcStationOrTileHeuristic(AyStar* as, AyStarNode* current, OpenListNod 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 @@ void NPFFillTrackdirChoice(AyStarNode* current, OpenListNode* parent) /* 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 @@ uint NPFSlopeCost(AyStarNode* current) { * 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 @@ int32 NPFRoadPathCost(AyStar* as, AyStarNode* current, OpenListNode* parent) { /* 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 @@ int32 NPFRailPathCost(AyStar* as, AyStarNode* current, OpenListNode* parent) { /* 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 @@ void NPFFollowTrack(AyStar* aystar, OpenListNode* current) { 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 @@ void NPFFollowTrack(AyStar* aystar, OpenListNode* current) { } 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) { @@ -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. */ |