summaryrefslogtreecommitdiff
path: root/roadveh_cmd.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2004-09-05 16:15:22 +0000
committertruelight <truelight@openttd.org>2004-09-05 16:15:22 +0000
commit10d54ac604b2d4d761877de1ceda07ceb3aa96bf (patch)
treeee4a252395acdf618350f3ff31b92a1b493f12ef /roadveh_cmd.c
parent1846563cf89fc4cdd41691ddadac6b56dd8c2e58 (diff)
downloadopenttd-10d54ac604b2d4d761877de1ceda07ceb3aa96bf.tar.xz
(svn r160) -Codechange: made GetTileTrackStatus more readable (blathijs)
-Fix: some minor fixes around GetTileTrackStatus (blathijs)
Diffstat (limited to 'roadveh_cmd.c')
-rw-r--r--roadveh_cmd.c41
1 files changed, 17 insertions, 24 deletions
diff --git a/roadveh_cmd.c b/roadveh_cmd.c
index e3fec5681..cc8250ffc 100644
--- a/roadveh_cmd.c
+++ b/roadveh_cmd.c
@@ -371,7 +371,7 @@ static int FindClosestRoadDepot(Vehicle *v)
/* search in all directions */
for(i=0; i!=4; i++)
- FollowTrack(tile, 0x2002, i, (TPFEnumProc*)EnumRoadSignalFindDepot, NULL, &rfdd);
+ FollowTrack(tile, 0x2000 | TRANSPORT_ROAD, i, (TPFEnumProc*)EnumRoadSignalFindDepot, NULL, &rfdd);
if (rfdd.best_length == (uint)-1)
return -1;
@@ -898,7 +898,7 @@ static bool FindRoadVehToOvertake(OvertakeData *od)
{
uint32 bits;
- bits = GetTileTrackStatus(od->tile, 2)&0x3F;
+ bits = GetTileTrackStatus(od->tile, TRANSPORT_ROAD)&0x3F;
if (!(od->tilebits & bits) || (bits&0x3C) || (bits & 0x3F3F0000))
return true;
@@ -924,7 +924,7 @@ static void RoadVehCheckOvertake(Vehicle *v, Vehicle *u)
if (v->u.road.state >= 32 || (v->u.road.state&7) > 1 )
return;
- tt = (byte)(GetTileTrackStatus(v->tile, 2) & 0x3F);
+ tt = (byte)(GetTileTrackStatus(v->tile, TRANSPORT_ROAD) & 0x3F);
if ((tt & 3) == 0)
return;
if ((tt & 0x3C) != 0)
@@ -1020,31 +1020,24 @@ static int RoadFindPathToDest(Vehicle *v, uint tile, int direction)
{
uint32 r;
- r = GetTileTrackStatus(tile, 2);
+ r = GetTileTrackStatus(tile, TRANSPORT_ROAD);
signal = (uint16)(r >> 16);
bitmask = (uint16)r;
}
- if (IS_TILETYPE(tile, MP_STREET)) {
-
- if ((_map5[tile]&0xF0) == 0x20 && v->owner == _map_owner[tile])
- bitmask |= _road_veh_fp_ax_or[_map5[tile]&3];
-
- } else if (IS_TILETYPE(tile, MP_STATION)) {
- if (_map_owner[tile] == OWNER_NONE || _map_owner[tile] == v->owner) {
- Station *st = DEREF_STATION(_map2[tile]);
- byte val = _map5[tile];
-
- if (v->cargo_type != CT_PASSENGERS) {
- if (IS_BYTE_INSIDE(val, 0x43, 0x47) && (_patches.roadveh_queue || st->truck_stop_status&3))
- bitmask |= _road_veh_fp_ax_or[(val-0x43)&3];
- } else {
- if (IS_BYTE_INSIDE(val, 0x47, 0x4B) && (_patches.roadveh_queue || st->bus_stop_status&3))
- bitmask |= _road_veh_fp_ax_or[(val-0x47)&3];
- }
- }
- }
+ /* Most of the checks that used to be here, are now integrated into
+ * GetTileTrackStatus now. The only thing still remaining is the
+ * owner check for stations and depots, since GetTileTrackStatus
+ * doesn't know about owner */
+ if (IS_TILETYPE(tile, MP_STREET) && (_map5[tile]&0xF0) == 0x20 && v->owner != _map_owner[tile])
+ /* Depot not owned by us */
+ bitmask = 0;
+ if (IS_TILETYPE(tile, MP_STATION) && _map_owner[tile] != OWNER_NONE && _map_owner[tile] != v->owner)
+ /* Station not owned by us */
+ bitmask = 0;
+
+ /* remove unreachable tracks */
bitmask &= _road_veh_fp_ax_and[direction];
if (bitmask == 0) {
// reverse
@@ -1096,7 +1089,7 @@ do_it:;
if (best_track == -1) best_track = i; // in case we don't find the path, just pick a direction
frd.maxtracklen = (uint)-1;
frd.mindist = (uint)-1;
- FollowTrack(tile, 0x3002, _road_pf_directions[i], (TPFEnumProc*)EnumRoadTrackFindDist, NULL, &frd);
+ FollowTrack(tile, 0x3000 | TRANSPORT_ROAD, _road_pf_directions[i], (TPFEnumProc*)EnumRoadTrackFindDist, NULL, &frd);
if (frd.mindist < best_dist || (frd.mindist==best_dist && frd.maxtracklen < best_maxlen)) {
best_dist = frd.mindist;