(svn r6159) -Fix: FindClosestTrainDepot hardly ever found a depot with NPF off due to absence of distance-normalization (Rojer)
This commit is contained in:
		@@ -637,11 +637,6 @@ static const uint16 _is_upwards_slope[15] = {
 | 
				
			|||||||
	0, //14
 | 
						0, //14
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define DIAG_FACTOR 3
 | 
					 | 
				
			||||||
#define STR_FACTOR 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static uint DistanceMoo(TileIndex t0, TileIndex t1)
 | 
					static uint DistanceMoo(TileIndex t0, TileIndex t1)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const uint dx = abs(TileX(t0) - TileX(t1));
 | 
						const uint dx = abs(TileX(t0) - TileX(t1));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "direction.h"
 | 
					#include "direction.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum {
 | 
				
			||||||
 | 
						STR_FACTOR  = 2,
 | 
				
			||||||
 | 
						DIAG_FACTOR = 3
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//#define PF_BENCH // perform simple benchmarks on the train pathfinder (not
 | 
					//#define PF_BENCH // perform simple benchmarks on the train pathfinder (not
 | 
				
			||||||
//supported on all archs)
 | 
					//supported on all archs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1847,7 +1847,8 @@ static bool NtpCallbFindDepot(TileIndex tile, TrainFindDepotData *tfdd, int trac
 | 
				
			|||||||
	if (IsTileType(tile, MP_RAILWAY) &&
 | 
						if (IsTileType(tile, MP_RAILWAY) &&
 | 
				
			||||||
			IsTileOwner(tile, tfdd->owner) &&
 | 
								IsTileOwner(tile, tfdd->owner) &&
 | 
				
			||||||
			IsRailDepot(tile)) {
 | 
								IsRailDepot(tile)) {
 | 
				
			||||||
		tfdd->best_length = length;
 | 
							/* approximate number of tiles by dividing by DIAG_FACTOR */
 | 
				
			||||||
 | 
							tfdd->best_length = length / DIAG_FACTOR;
 | 
				
			||||||
		tfdd->tile = tile;
 | 
							tfdd->tile = tile;
 | 
				
			||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user