1
0
Fork 0

Fix: NewGRF vehicles display loading sprites when not actually loading or unloading (#13554)

pull/13829/head
enveeed 2025-03-15 21:58:47 +01:00 committed by GitHub
parent 2fed4b0059
commit b0cc56a8b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 2 deletions

View File

@ -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();

View File

@ -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;