From 45fa3002088a914fe19ae59f0f4eef77f214e92e Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sat, 26 Aug 2006 21:54:04 +0000 Subject: [PATCH] (svn r6159) -Fix: FindClosestTrainDepot hardly ever found a depot with NPF off due to absence of distance-normalization (Rojer) --- pathfind.c | 5 ----- pathfind.h | 5 +++++ train_cmd.c | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/pathfind.c b/pathfind.c index 9a001aac19..e73d3bfa26 100644 --- a/pathfind.c +++ b/pathfind.c @@ -637,11 +637,6 @@ static const uint16 _is_upwards_slope[15] = { 0, //14 }; - -#define DIAG_FACTOR 3 -#define STR_FACTOR 2 - - static uint DistanceMoo(TileIndex t0, TileIndex t1) { const uint dx = abs(TileX(t0) - TileX(t1)); diff --git a/pathfind.h b/pathfind.h index 564d83dc22..432d7ea888 100644 --- a/pathfind.h +++ b/pathfind.h @@ -5,6 +5,11 @@ #include "direction.h" +enum { + STR_FACTOR = 2, + DIAG_FACTOR = 3 +}; + //#define PF_BENCH // perform simple benchmarks on the train pathfinder (not //supported on all archs) diff --git a/train_cmd.c b/train_cmd.c index 5fe309c983..468bcdba63 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -1847,7 +1847,8 @@ static bool NtpCallbFindDepot(TileIndex tile, TrainFindDepotData *tfdd, int trac if (IsTileType(tile, MP_RAILWAY) && IsTileOwner(tile, tfdd->owner) && IsRailDepot(tile)) { - tfdd->best_length = length; + /* approximate number of tiles by dividing by DIAG_FACTOR */ + tfdd->best_length = length / DIAG_FACTOR; tfdd->tile = tile; return true; }