src/yapf/yapf_rail.cpp
changeset 5838 9c3129cb019b
parent 5726 8f399788f6c9
child 6268 4b5241e5dd10
child 6447 3b71e57fd22b
equal deleted inserted replaced
5837:96b4b92b86ae 5838:9c3129cb019b
   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)