mirror of https://github.com/OpenTTD/OpenTTD
(svn r14616) -Fix [FS#2424]: a nearest depot order should be "equal" to the resolved nearest depot order; otherwise we keep resolving the nearest depot order every tick.
parent
54128db1cf
commit
f28992719d
|
@ -115,6 +115,19 @@ void Order::FreeChain()
|
||||||
|
|
||||||
bool Order::Equals(const Order &other) const
|
bool Order::Equals(const Order &other) const
|
||||||
{
|
{
|
||||||
|
/* In case of go to nearest depot orders we need "only" compare the flags
|
||||||
|
* with the other and not the nearest depot order bit or the actual
|
||||||
|
* destination because those get clear/filled in during the order
|
||||||
|
* evaluation. If we do not do this the order will continuously be seen as
|
||||||
|
* a different order and it will try to find a "nearest depot" every tick. */
|
||||||
|
if ((this->type == OT_GOTO_DEPOT && this->type == other.type) &&
|
||||||
|
((this->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0 ||
|
||||||
|
(other.GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0)) {
|
||||||
|
return
|
||||||
|
this->GetDepotOrderType() == other.GetDepotOrderType() &&
|
||||||
|
(this->GetDepotActionType() & ~ODATFB_NEAREST_DEPOT) == (other.GetDepotActionType() & ~ODATFB_NEAREST_DEPOT);
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
this->type == other.type &&
|
this->type == other.type &&
|
||||||
this->flags == other.flags &&
|
this->flags == other.flags &&
|
||||||
|
|
Loading…
Reference in New Issue