summaryrefslogtreecommitdiff
path: root/src/roadveh_cmd.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-12-01 22:18:51 +0000
committerrubidium <rubidium@openttd.org>2009-12-01 22:18:51 +0000
commit3a83eab967c09e728bb667e8794e905cc2d433de (patch)
treebc3b66458e6dcf258055698482f6b7cfc860f7fb /src/roadveh_cmd.cpp
parentd634f31c7b6d97762b1a793336ddaf2d9c12b96c (diff)
downloadopenttd-3a83eab967c09e728bb667e8794e905cc2d433de.tar.xz
(svn r18362) -Cleanup: remove OPF for RVs and NTP to clean up lots of code and simplify some things for the future
Diffstat (limited to 'src/roadveh_cmd.cpp')
-rw-r--r--src/roadveh_cmd.cpp91
1 files changed, 2 insertions, 89 deletions
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index 49677d669..e6d90155e 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -375,21 +375,6 @@ static const DiagDirection _road_pf_directions[] = {
DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE, INVALID_DIAGDIR, INVALID_DIAGDIR
};
-static bool EnumRoadSignalFindDepot(TileIndex tile, void *data, Trackdir trackdir, uint length)
-{
- RoadFindDepotData *rfdd = (RoadFindDepotData*)data;
-
- tile += TileOffsByDiagDir(_road_pf_directions[trackdir]);
-
- if (IsRoadDepotTile(tile) &&
- IsTileOwner(tile, rfdd->owner) &&
- length < rfdd->best_length) {
- rfdd->best_length = length;
- rfdd->tile = tile;
- }
- return false;
-}
-
static RoadFindDepotData FindClosestRoadDepot(const RoadVehicle *v, int max_distance)
{
RoadFindDepotData rfdd;
@@ -422,12 +407,7 @@ static RoadFindDepotData FindClosestRoadDepot(const RoadVehicle *v, int max_dist
} break;
default:
- case VPF_OPF: // OPF
- /* search in all directions */
- for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) {
- FollowTrack(v->tile, PATHFIND_FLAGS_NONE, TRANSPORT_ROAD, v->compatible_roadtypes, d, EnumRoadSignalFindDepot, NULL, &rfdd);
- }
- break;
+ NOT_REACHED();
}
return rfdd; // Target not found
@@ -992,29 +972,8 @@ static int PickRandomBit(uint bits)
return i;
}
-struct FindRoadToChooseData {
- TileIndex dest;
- uint maxtracklen;
- uint mindist;
-};
-
-static bool EnumRoadTrackFindDist(TileIndex tile, void *data, Trackdir trackdir, uint length)
-{
- FindRoadToChooseData *frd = (FindRoadToChooseData*)data;
- uint dist = DistanceManhattan(tile, frd->dest);
-
- if (dist <= frd->mindist) {
- if (dist != frd->mindist || length < frd->maxtracklen) {
- frd->maxtracklen = length;
- }
- frd->mindist = dist;
- }
- return false;
-}
-
static inline NPFFoundTargetData PerfNPFRouteToStationOrTile(TileIndex tile, Trackdir trackdir, bool ignore_start_tile, NPFFindStationOrTileData *target, TransportType type, uint sub_type, Owner owner, RailTypes railtypes)
{
-
void *perf = NpfBeginInterval();
NPFFoundTargetData ret = NPFRouteToStationOrTile(tile, trackdir, ignore_start_tile, target, type, sub_type, owner, railtypes);
int t = NpfEndInterval(perf);
@@ -1035,7 +994,6 @@ static Trackdir RoadFindPathToDest(RoadVehicle *v, TileIndex tile, DiagDirection
#define return_track(x) { best_track = (Trackdir)x; goto found_best_track; }
TileIndex desttile;
- FindRoadToChooseData frd;
Trackdir best_track;
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->compatible_roadtypes);
@@ -1141,52 +1099,7 @@ static Trackdir RoadFindPathToDest(RoadVehicle *v, TileIndex tile, DiagDirection
} break;
default:
- case VPF_OPF: { // OPF
- DiagDirection dir;
-
- if (IsTileType(desttile, MP_ROAD)) {
- if (IsRoadDepot(desttile)) {
- dir = GetRoadDepotDirection(desttile);
- goto do_it;
- }
- } else if (IsTileType(desttile, MP_STATION)) {
- /* For drive-through stops we can head for the actual station tile */
- if (IsStandardRoadStopTile(desttile)) {
- dir = GetRoadStopDir(desttile);
-do_it:;
- /* When we are heading for a depot or station, we just
- * pretend we are heading for the tile in front, we'll
- * see from there */
- desttile += TileOffsByDiagDir(dir);
- if (desttile == tile && (trackdirs & _road_exit_dir_to_incoming_trackdirs[dir])) {
- /* If we are already in front of the
- * station/depot and we can get in from here,
- * we enter */
- return_track(FindFirstBit2x64(trackdirs & _road_exit_dir_to_incoming_trackdirs[dir]));
- }
- }
- }
- /* Do some pathfinding */
- frd.dest = desttile;
-
- best_track = INVALID_TRACKDIR;
- uint best_dist = UINT_MAX;
- uint best_maxlen = UINT_MAX;
- uint bitmask = (uint)trackdirs;
- uint i;
- FOR_EACH_SET_BIT(i, bitmask) {
- if (best_track == INVALID_TRACKDIR) best_track = (Trackdir)i; // in case we don't find the path, just pick a track
- frd.maxtracklen = UINT_MAX;
- frd.mindist = UINT_MAX;
- FollowTrack(tile, PATHFIND_FLAGS_NONE, TRANSPORT_ROAD, v->compatible_roadtypes, _road_pf_directions[i], EnumRoadTrackFindDist, NULL, &frd);
-
- if (frd.mindist < best_dist || (frd.mindist == best_dist && frd.maxtracklen < best_maxlen)) {
- best_dist = frd.mindist;
- best_maxlen = frd.maxtracklen;
- best_track = (Trackdir)i;
- }
- }
- } break;
+ NOT_REACHED();
}
found_best_track:;