summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--road_cmd.c4
-rw-r--r--road_map.c2
-rw-r--r--road_map.h6
-rw-r--r--roadveh_cmd.c24
4 files changed, 22 insertions, 14 deletions
diff --git a/road_cmd.c b/road_cmd.c
index a4480b669..ca558e29c 100644
--- a/road_cmd.c
+++ b/road_cmd.c
@@ -803,7 +803,7 @@ static void DrawTile_Road(TileInfo *ti)
player = GetTileOwner(ti->tile);
if (player < MAX_PLAYERS) ormod = PLAYER_SPRITE_COLOR(player);
- drss = _road_display_datas[ti->map5 & 0xF];
+ drss = _road_display_datas[GetRoadDepotDirection(ti->tile)];
DrawGroundSprite(drss++->image);
@@ -1100,7 +1100,7 @@ static uint32 VehicleEnter_Road(Vehicle *v, TileIndex tile, int x, int y)
case ROAD_DEPOT:
if (v->type == VEH_Road && v->u.road.frame == 11) {
- if (_roadveh_enter_depot_unk0[GB(_m[tile].m5, 0, 2)] == v->u.road.state) {
+ if (_roadveh_enter_depot_unk0[GetRoadDepotDirection(tile)] == v->u.road.state) {
RoadVehEnterDepot(v);
return 4;
}
diff --git a/road_map.c b/road_map.c
index 14611e88b..3780334a3 100644
--- a/road_map.c
+++ b/road_map.c
@@ -16,7 +16,7 @@ RoadBits GetAnyRoadBits(TileIndex tile)
default:
case ROAD_NORMAL: return GetRoadBits(tile);
case ROAD_CROSSING: return GetCrossingRoadBits(tile);
- case ROAD_DEPOT: return DiagDirToRoadBits(GB(_m[tile].m5, 0, 2));
+ case ROAD_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile));
}
case MP_STATION:
diff --git a/road_map.h b/road_map.h
index 1aa3ea88c..6eccc3249 100644
--- a/road_map.h
+++ b/road_map.h
@@ -62,6 +62,12 @@ static inline RoadType GetRoadType(TileIndex tile)
}
+static inline DiagDirection GetRoadDepotDirection(TileIndex tile)
+{
+ return (DiagDirection)GB(_m[tile].m5, 0, 2);
+}
+
+
/**
* Returns the RoadBits on an arbitrary tile
* Special behavior:
diff --git a/roadveh_cmd.c b/roadveh_cmd.c
index b941f2e24..e49ac34b2 100644
--- a/roadveh_cmd.c
+++ b/roadveh_cmd.c
@@ -992,7 +992,6 @@ static int RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection enterdir
int best_track;
uint best_dist, best_maxlen;
uint i;
- byte m5;
{
uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD);
@@ -1003,7 +1002,7 @@ static int RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection enterdir
if (IsTileType(tile, MP_STREET)) {
if (GetRoadType(tile) == ROAD_DEPOT && IsTileOwner(tile, v->owner)) {
/* Road depot */
- bitmask |= _road_veh_fp_ax_or[GB(_m[tile].m5, 0, 2)];
+ bitmask |= _road_veh_fp_ax_or[GetRoadDepotDirection(tile)];
}
} else if (IsTileType(tile, MP_STATION) && IsRoadStationTile(tile)) {
if (IsTileOwner(tile, v->owner)) {
@@ -1073,24 +1072,27 @@ static int RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection enterdir
return_track(ftd.best_trackdir);
}
} else {
+ DiagDirection dir;
+
if (IsTileType(desttile, MP_STREET)) {
- m5 = _m[desttile].m5;
- if (GetRoadType(desttile) == ROAD_DEPOT) goto do_it;
+ if (GetRoadType(desttile) == ROAD_DEPOT) {
+ dir = GetRoadDepotDirection(desttile);
+ goto do_it;
+ }
} else if (IsTileType(desttile, MP_STATION)) {
- m5 = _m[desttile].m5;
- if (IS_BYTE_INSIDE(m5, 0x43, 0x4B)) {
+ if (IS_BYTE_INSIDE(_m[desttile].m5, 0x43, 0x4B)) {
/* We are heading for a station */
- m5 -= 0x43;
+ dir = GetRoadStationDir(tile);
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 += TileOffsByDir(m5 & 3);
- if (desttile == tile && bitmask&_road_pf_table_3[m5&3]) {
+ desttile += TileOffsByDir(dir);
+ if (desttile == tile && bitmask & _road_pf_table_3[dir]) {
/* If we are already in front of the
* station/depot and we can get in from here,
* we enter */
- return_track(FindFirstBit2x64(bitmask&_road_pf_table_3[m5&3]));
+ return_track(FindFirstBit2x64(bitmask & _road_pf_table_3[dir]));
}
}
}
@@ -1196,7 +1198,7 @@ static void RoadVehController(Vehicle *v)
v->cur_speed = 0;
- dir = GB(_m[v->tile].m5, 0, 2);
+ dir = GetRoadDepotDirection(v->tile);
v->direction = DiagDirToDir(dir);
rd2 = _roadveh_data_2[dir];