summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ai/default/default.c2
-rw-r--r--ai/trolly/pathfinder.c3
-rw-r--r--ai/trolly/trolly.c2
-rw-r--r--depot.h7
-rw-r--r--npf.c4
-rw-r--r--vehicle.c2
6 files changed, 9 insertions, 11 deletions
diff --git a/ai/default/default.c b/ai/default/default.c
index a92e8d1c2..f6e6cdbde 100644
--- a/ai/default/default.c
+++ b/ai/default/default.c
@@ -3659,7 +3659,7 @@ pos_3:
return;
}
- dir = _m[tile].m5 & 3;
+ dir = GetRoadDepotDirection(tile);
DoCommandByTile(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
DoCommandByTile(
diff --git a/ai/trolly/pathfinder.c b/ai/trolly/pathfinder.c
index d5244a1da..17fc15b66 100644
--- a/ai/trolly/pathfinder.c
+++ b/ai/trolly/pathfinder.c
@@ -9,6 +9,7 @@
#include "../../command.h"
#include "trolly.h"
#include "../../depot.h"
+#include "../../tunnel_map.h"
#include "../../variables.h"
#include "../ai.h"
@@ -236,7 +237,7 @@ static void AyStar_AiPathFinder_GetNeighbours(AyStar *aystar, OpenListNode *curr
// This problem only is valid for tunnels:
// When the last tile was not yet a tunnel, check if we enter from the right side..
if ((_m[atile].m5 & 0x80) == 0) {
- if (i != (_m[atile].m5 & 3U)) continue;
+ if (GetTunnelDirection(atile) != i) continue;
}
}
}
diff --git a/ai/trolly/trolly.c b/ai/trolly/trolly.c
index 2ccee6fb1..57cac9698 100644
--- a/ai/trolly/trolly.c
+++ b/ai/trolly/trolly.c
@@ -798,7 +798,7 @@ static void AiNew_State_FindDepot(Player *p)
if (IsTileType(t, MP_STREET) &&
GetRoadType(t) == ROAD_DEPOT &&
IsTileOwner(t, _current_player) &&
- GB(_m[t].m5, 0, 2) == ReverseDiagDir(j)) { // right direction?
+ GetRoadDepotDirection(t) == ReverseDiagDir(j)) {
p->ainew.depot_tile = t;
p->ainew.depot_direction = ReverseDiagDir(j);
p->ainew.state = AI_STATE_VERIFY_ROUTE;
diff --git a/depot.h b/depot.h
index 6af2dc37f..a3efdf233 100644
--- a/depot.h
+++ b/depot.h
@@ -8,6 +8,7 @@
#include "direction.h"
#include "pool.h"
+#include "road_map.h"
#include "tile.h"
#include "variables.h"
@@ -102,10 +103,8 @@ static inline DiagDirection GetDepotDirection(TileIndex tile, TransportType type
switch (type)
{
- case TRANSPORT_RAIL:
- case TRANSPORT_ROAD:
- /* Rail and road store a diagonal direction in bits 0 and 1 */
- return (DiagDirection)GB(_m[tile].m5, 0, 2);
+ case TRANSPORT_RAIL: return (DiagDirection)GB(_m[tile].m5, 0, 2);
+ case TRANSPORT_ROAD: return GetRoadDepotDirection(tile);
case TRANSPORT_WATER:
/* Water is stubborn, it stores the directions in a different order. */
switch (GB(_m[tile].m5, 0, 2)) {
diff --git a/npf.c b/npf.c
index 18818f679..1e6fcf95a 100644
--- a/npf.c
+++ b/npf.c
@@ -508,7 +508,6 @@ static void NPFFollowTrack(AyStar* aystar, OpenListNode* current)
Trackdir src_trackdir = (Trackdir)current->path.node.direction;
TileIndex src_tile = current->path.node.tile;
DiagDirection src_exitdir = TrackdirToExitdir(src_trackdir);
- FindLengthOfTunnelResult flotr;
TileIndex dst_tile;
int i;
TrackdirBits trackdirbits, ts;
@@ -524,8 +523,7 @@ static void NPFFollowTrack(AyStar* aystar, OpenListNode* current)
/* This is a tunnel. We know this tunnel is our type,
* otherwise we wouldn't have got here. It is also facing us,
* so we should skip it's body */
- flotr = FindLengthOfTunnel(src_tile, src_exitdir);
- dst_tile = flotr.tile;
+ dst_tile = GetOtherTunnelEnd(src_tile);
} else {
if (type != TRANSPORT_WATER && (IsRoadStationTile(src_tile) || IsTileDepotType(src_tile, type))){
/* This is a road station or a train or road depot. We can enter and exit
diff --git a/vehicle.c b/vehicle.c
index 5946f7e87..1e34c78d1 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -1976,7 +1976,7 @@ Trackdir GetVehicleTrackdir(const Vehicle* v)
case VEH_Road:
if (v->u.road.state == 254) /* We'll assume the road vehicle is facing outwards */
- return DiagdirToDiagTrackdir(GetDepotDirection(v->tile, TRANSPORT_ROAD)); /* Road vehicle in depot */
+ return DiagdirToDiagTrackdir(GetRoadDepotDirection(v->tile));
if (IsRoadStationTile(v->tile)) /* We'll assume the road vehicle is facing outwards */
return DiagdirToDiagTrackdir(GetRoadStationDir(v->tile)); /* Road vehicle in a station */