mirror of https://github.com/OpenTTD/OpenTTD
Fix: NewGRF vehicles display loading sprites when not actually loading or unloading (#13554)
parent
2fed4b0059
commit
b0cc56a8b5
|
@ -1008,7 +1008,9 @@ static uint32_t VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *objec
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
bool in_motion = !v->First()->current_order.IsType(OT_LOADING);
|
||||
const Order &order = v->First()->current_order;
|
||||
bool not_loading = (order.GetUnloadType() & OUFB_NO_UNLOAD) && (order.GetLoadType() & OLFB_NO_LOAD);
|
||||
bool in_motion = !order.IsType(OT_LOADING) || not_loading;
|
||||
|
||||
uint totalsets = in_motion ? (uint)group->loaded.size() : (uint)group->loading.size();
|
||||
|
||||
|
|
|
@ -197,7 +197,7 @@ bool Order::Equals(const Order &other) const
|
|||
uint16_t Order::MapOldOrder() const
|
||||
{
|
||||
uint16_t order = this->GetType();
|
||||
switch (this->type) {
|
||||
switch (this->GetType()) {
|
||||
case OT_GOTO_STATION:
|
||||
if (this->GetUnloadType() & OUFB_UNLOAD) SetBit(order, 5);
|
||||
if (this->GetLoadType() & OLFB_FULL_LOAD) SetBit(order, 6);
|
||||
|
@ -211,6 +211,12 @@ uint16_t Order::MapOldOrder() const
|
|||
break;
|
||||
case OT_LOADING:
|
||||
if (this->GetLoadType() & OLFB_FULL_LOAD) SetBit(order, 6);
|
||||
/* If both "no load" and "no unload" are set, return nothing order instead */
|
||||
if ((this->GetLoadType() & OLFB_NO_LOAD) && (this->GetUnloadType() & OUFB_NO_UNLOAD)) {
|
||||
order = OT_NOTHING;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return order;
|
||||
|
|
Loading…
Reference in New Issue