equal
deleted
inserted
replaced
143 FORCEINLINE int ReservationCost(Node& n, TileIndex& tile, Trackdir trackdir, int skipped) |
143 FORCEINLINE int ReservationCost(Node& n, TileIndex& tile, Trackdir trackdir, int skipped) |
144 { |
144 { |
145 if (n.m_num_signals_passed >= m_sig_look_ahead_costs.Size() / 2) return 0; |
145 if (n.m_num_signals_passed >= m_sig_look_ahead_costs.Size() / 2) return 0; |
146 |
146 |
147 if (TrackOverlapsTracks(GetReservedTrackbits(tile), TrackdirToTrack(trackdir))) { |
147 if (TrackOverlapsTracks(GetReservedTrackbits(tile), TrackdirToTrack(trackdir))) { |
148 int cost = Yapf().PfGetSettings().rail_pbs_cross_penalty; |
148 int cost = IsRailwayStationTile(tile) ? Yapf().PfGetSettings().rail_pbs_station_penalty : Yapf().PfGetSettings().rail_pbs_cross_penalty; |
149 if (!IsDiagonalTrackdir(trackdir)) cost = (cost * YAPF_TILE_CORNER_LENGTH) / YAPF_TILE_LENGTH; |
149 if (!IsDiagonalTrackdir(trackdir)) cost = (cost * YAPF_TILE_CORNER_LENGTH) / YAPF_TILE_LENGTH; |
150 return cost * (skipped + 1); |
150 return cost * (skipped + 1); |
151 } |
151 } |
152 return 0; |
152 return 0; |
153 } |
153 } |