mirror of https://github.com/OpenTTD/OpenTTD.git
Change: Make pathfinder account for maximum order speed, if set
This commit is contained in:
parent
b749d6f1cb
commit
80fb1c74f0
|
@ -464,7 +464,7 @@ no_entry_cost: // jump here at the beginning if the node has no parent (it is th
|
||||||
{
|
{
|
||||||
int min_speed = 0;
|
int min_speed = 0;
|
||||||
int max_speed = tf->GetSpeedLimit(&min_speed);
|
int max_speed = tf->GetSpeedLimit(&min_speed);
|
||||||
int max_veh_speed = v->GetDisplayMaxSpeed();
|
int max_veh_speed = std::min<int>(v->GetDisplayMaxSpeed(), v->current_order.GetMaxSpeed());
|
||||||
if (max_speed < max_veh_speed) {
|
if (max_speed < max_veh_speed) {
|
||||||
extra_cost += YAPF_TILE_LENGTH * (max_veh_speed - max_speed) * (4 + tf->m_tiles_skipped) / max_veh_speed;
|
extra_cost += YAPF_TILE_LENGTH * (max_veh_speed - max_speed) * (4 + tf->m_tiles_skipped) / max_veh_speed;
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,7 +159,7 @@ public:
|
||||||
|
|
||||||
/* add min/max speed penalties */
|
/* add min/max speed penalties */
|
||||||
int min_speed = 0;
|
int min_speed = 0;
|
||||||
int max_veh_speed = v->GetDisplayMaxSpeed();
|
int max_veh_speed = std::min<int>(v->GetDisplayMaxSpeed(), v->current_order.GetMaxSpeed() * 2);
|
||||||
int max_speed = F.GetSpeedLimit(&min_speed);
|
int max_speed = F.GetSpeedLimit(&min_speed);
|
||||||
if (max_speed < max_veh_speed) segment_cost += YAPF_TILE_LENGTH * (max_veh_speed - max_speed) * (4 + F.m_tiles_skipped) / max_veh_speed;
|
if (max_speed < max_veh_speed) segment_cost += YAPF_TILE_LENGTH * (max_veh_speed - max_speed) * (4 + F.m_tiles_skipped) / max_veh_speed;
|
||||||
if (min_speed > max_veh_speed) segment_cost += YAPF_TILE_LENGTH * (min_speed - max_veh_speed);
|
if (min_speed > max_veh_speed) segment_cost += YAPF_TILE_LENGTH * (min_speed - max_veh_speed);
|
||||||
|
|
Loading…
Reference in New Issue