Changeset - r14021:1aae6a0ffa3b
[Not reviewed]
master
0 3 0
rubidium - 14 years ago 2009-12-20 16:19:47
rubidium@openttd.org
(svn r18574) -Fix [FS#3392] (r18481): manually sending trains and RVs to depots didn't quite work
3 files changed with 14 insertions and 9 deletions:
0 comments (0 inline, 0 general)
src/roadveh_cmd.cpp
Show inline comments
 
@@ -361,8 +361,8 @@ static FindDepotData FindClosestRoadDepo
 
	if (IsRoadDepotTile(v->tile)) return FindDepotData(v->tile, 0);
 

	
 
	switch (_settings_game.pf.pathfinder_for_roadvehs) {
 
		case VPF_NPF: return NPFRoadVehicleFindNearestDepot(v, _settings_game.pf.npf.maximum_go_to_depot_penalty);
 
		case VPF_YAPF: return YapfRoadVehicleFindNearestDepot(v, _settings_game.pf.yapf.maximum_go_to_depot_penalty);
 
		case VPF_NPF: return NPFRoadVehicleFindNearestDepot(v, max_distance);
 
		case VPF_YAPF: return YapfRoadVehicleFindNearestDepot(v, max_distance);
 

	
 
		default: NOT_REACHED();
 
	}
src/ship_cmd.cpp
Show inline comments
 
@@ -97,12 +97,17 @@ SpriteID Ship::GetImage(Direction direct
 
	return _ship_sprites[spritenum] + direction;
 
}
 

	
 
static const Depot *FindClosestShipDepot(const Vehicle *v)
 
static const Depot *FindClosestShipDepot(const Vehicle *v, uint max_distance)
 
{
 
	/* Find the closest depot */
 
	const Depot *depot;
 
	const Depot *best_depot = NULL;
 
	uint best_dist = UINT_MAX;
 
	/* If we don't have a maximum distance, i.e. distance = 0,
 
	 * we want to find any depot so the best distance of no
 
	 * depot must be more than any correct distance. On the
 
	 * other hand if we have set a maximum distance, any depot
 
	 * further away than max_distance can safely be ignored. */
 
	uint best_dist = max_distance == 0 ? UINT_MAX : max_distance + 1;
 

	
 
	FOR_ALL_DEPOTS(depot) {
 
		TileIndex tile = depot->xy;
 
@@ -134,9 +139,9 @@ static void CheckIfShipNeedsService(Vehi
 
		default: NOT_REACHED();
 
	}
 

	
 
	const Depot *depot = FindClosestShipDepot(v);
 
	const Depot *depot = FindClosestShipDepot(v, max_distance);
 

	
 
	if (depot == NULL || DistanceManhattan(v->tile, depot->xy) > max_distance) {
 
	if (depot == NULL) {
 
		if (v->current_order.IsType(OT_GOTO_DEPOT)) {
 
			v->current_order.MakeDummy();
 
			SetWindowWidgetDirty(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
 
@@ -724,7 +729,7 @@ CommandCost CmdSellShip(TileIndex tile, 
 

	
 
bool Ship::FindClosestDepot(TileIndex *location, DestinationID *destination, bool *reverse)
 
{
 
	const Depot *depot = FindClosestShipDepot(this);
 
	const Depot *depot = FindClosestShipDepot(this, 0);
 

	
 
	if (depot == NULL) return false;
 

	
src/train_cmd.cpp
Show inline comments
 
@@ -2107,8 +2107,8 @@ static FindDepotData FindClosestTrainDep
 
	if (IsRailDepotTile(origin.tile)) return FindDepotData(origin.tile, 0);
 

	
 
	switch (_settings_game.pf.pathfinder_for_trains) {
 
		case VPF_NPF: return NPFTrainFindNearestDepot(v, _settings_game.pf.npf.maximum_go_to_depot_penalty);
 
		case VPF_YAPF: return YapfTrainFindNearestDepot(v, _settings_game.pf.yapf.maximum_go_to_depot_penalty);
 
		case VPF_NPF: return NPFTrainFindNearestDepot(v, max_distance);
 
		case VPF_YAPF: return YapfTrainFindNearestDepot(v, max_distance);
 

	
 
		default: NOT_REACHED();
 
	}
0 comments (0 inline, 0 general)