diff options
author | rubidium <rubidium@openttd.org> | 2009-07-22 08:59:57 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-07-22 08:59:57 +0000 |
commit | 68ead6b84f56ad3c93d05ad3e09b7fbb8173cf26 (patch) | |
tree | ee33bd19b96a138530a84e86e7ffd60c0700f9d9 /src/yapf | |
parent | 2646a99d29535a44c5998f080131cbca2e85bdcf (diff) | |
download | openttd-68ead6b84f56ad3c93d05ad3e09b7fbb8173cf26.tar.xz |
(svn r16909) -Fix [FS#2996]: NewGRF stations would be triggering assertions all over the place when using the more advanced station types.
-Change: make (rail) waypoints sub classes of 'base stations', make buoys waypoints and unify code between them where possible.
Diffstat (limited to 'src/yapf')
-rw-r--r-- | src/yapf/yapf_costrail.hpp | 2 | ||||
-rw-r--r-- | src/yapf/yapf_destrail.hpp | 17 |
2 files changed, 4 insertions, 15 deletions
diff --git a/src/yapf/yapf_costrail.hpp b/src/yapf/yapf_costrail.hpp index dcf9a602a..1731f7fdf 100644 --- a/src/yapf/yapf_costrail.hpp +++ b/src/yapf/yapf_costrail.hpp @@ -406,7 +406,7 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th /* We will end in this pass (station is possible target) */ end_segment_reason |= ESRB_STATION; - } else if (cur.tile_type == MP_RAILWAY && IsRailWaypoint(cur.tile)) { + } else if (cur.tile_type == MP_STATION && IsRailWaypoint(cur.tile)) { /* Waypoint is also a good reason to finish. */ end_segment_reason |= ESRB_WAYPOINT; } else if (TrackFollower::DoTrackMasking() && cur.tile_type == MP_RAILWAY) { diff --git a/src/yapf/yapf_destrail.hpp b/src/yapf/yapf_destrail.hpp index 08b1da070..650b43b49 100644 --- a/src/yapf/yapf_destrail.hpp +++ b/src/yapf/yapf_destrail.hpp @@ -134,22 +134,11 @@ public: m_destTrackdirs = INVALID_TRACKDIR_BIT; break; - case OT_GOTO_WAYPOINT: { - Waypoint *wp = Waypoint::Get(v->current_order.GetDestination()); - if (wp == NULL) { - /* Invalid waypoint in orders! */ - DEBUG(yapf, 0, "Invalid waypoint in orders == 0x%04X (train %d, company %d)", v->current_order.GetDestination(), v->unitnumber, (CompanyID)v->owner); - break; - } - m_destTile = wp->xy; - if (m_destTile != v->dest_tile) { - /* Something is wrong with orders! */ - DEBUG(yapf, 0, "Invalid v->dest_tile == 0x%04X (train %d, company %d)", v->dest_tile, v->unitnumber, (CompanyID)v->owner); - } + case OT_GOTO_WAYPOINT: + m_destTile = Waypoint::Get(v->current_order.GetDestination())->xy; m_dest_station_id = INVALID_STATION; - m_destTrackdirs = TrackToTrackdirBits(AxisToTrack(GetWaypointAxis(wp->xy))); + m_destTrackdirs = IsRailWaypointTile(m_destTile) ? TrackToTrackdirBits(GetRailStationTrack(m_destTile)) : INVALID_TRACKDIR_BIT; break; - } default: m_destTile = v->dest_tile; |