101 } |
101 } |
102 |
102 |
103 /// return debug report character to identify the transportation type |
103 /// return debug report character to identify the transportation type |
104 FORCEINLINE char TransportTypeChar() const {return 't';} |
104 FORCEINLINE char TransportTypeChar() const {return 't';} |
105 |
105 |
106 static Trackdir stChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found) |
106 static Trackdir stChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found) |
107 { |
107 { |
108 // create pathfinder instance |
108 // create pathfinder instance |
109 Tpf pf; |
109 Tpf pf; |
110 return pf.ChooseRailTrack(v, tile, enterdir, trackdirs, path_not_found); |
110 return pf.ChooseRailTrack(v, tile, enterdir, tracks, path_not_found); |
111 } |
111 } |
112 |
112 |
113 FORCEINLINE Trackdir ChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found) |
113 FORCEINLINE Trackdir ChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found) |
114 { |
114 { |
115 // set origin and destination nodes |
115 // set origin and destination nodes |
116 Yapf().SetOrigin(v->tile, GetVehicleTrackdir(v), INVALID_TILE, INVALID_TRACKDIR, 1, true); |
116 Yapf().SetOrigin(v->tile, GetVehicleTrackdir(v), INVALID_TILE, INVALID_TRACKDIR, 1, true); |
117 Yapf().SetDestination(v); |
117 Yapf().SetDestination(v); |
118 |
118 |
198 struct CYapfAnyDepotRail1 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail1, CFollowTrackRail , CRailNodeListTrackDir, CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {}; |
198 struct CYapfAnyDepotRail1 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail1, CFollowTrackRail , CRailNodeListTrackDir, CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {}; |
199 struct CYapfAnyDepotRail2 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail2, CFollowTrackRail , CRailNodeListExitDir , CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {}; |
199 struct CYapfAnyDepotRail2 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail2, CFollowTrackRail , CRailNodeListExitDir , CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {}; |
200 struct CYapfAnyDepotRail3 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail3, CFollowTrackRailNo90, CRailNodeListTrackDir, CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {}; |
200 struct CYapfAnyDepotRail3 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail3, CFollowTrackRailNo90, CRailNodeListTrackDir, CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {}; |
201 |
201 |
202 |
202 |
203 Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found) |
203 Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found) |
204 { |
204 { |
205 // default is YAPF type 2 |
205 // default is YAPF type 2 |
206 typedef Trackdir (*PfnChooseRailTrack)(Vehicle*, TileIndex, DiagDirection, TrackdirBits, bool*); |
206 typedef Trackdir (*PfnChooseRailTrack)(Vehicle*, TileIndex, DiagDirection, TrackBits, bool*); |
207 PfnChooseRailTrack pfnChooseRailTrack = &CYapfRail2::stChooseRailTrack; |
207 PfnChooseRailTrack pfnChooseRailTrack = &CYapfRail2::stChooseRailTrack; |
208 |
208 |
209 // check if non-default YAPF type needed |
209 // check if non-default YAPF type needed |
210 if (_patches.forbid_90_deg) |
210 if (_patches.forbid_90_deg) |
211 pfnChooseRailTrack = &CYapfRail3::stChooseRailTrack; // Trackdir, forbid 90-deg |
211 pfnChooseRailTrack = &CYapfRail3::stChooseRailTrack; // Trackdir, forbid 90-deg |
212 else if (_patches.yapf.disable_node_optimization) |
212 else if (_patches.yapf.disable_node_optimization) |
213 pfnChooseRailTrack = &CYapfRail1::stChooseRailTrack; // Trackdir, allow 90-deg |
213 pfnChooseRailTrack = &CYapfRail1::stChooseRailTrack; // Trackdir, allow 90-deg |
214 |
214 |
215 Trackdir td_ret = pfnChooseRailTrack(v, tile, enterdir, trackdirs, path_not_found); |
215 Trackdir td_ret = pfnChooseRailTrack(v, tile, enterdir, tracks, path_not_found); |
216 |
216 |
217 return td_ret; |
217 return td_ret; |
218 } |
218 } |
219 |
219 |
220 bool YapfCheckReverseTrain(Vehicle* v) |
220 bool YapfCheckReverseTrain(Vehicle* v) |