MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / updateLoadCargo

Method updateLoadCargo

src/OpenLoco/src/Vehicles/VehicleHead.cpp:3490–3592  ·  view source on GitHub ↗

0x004BA142 returns false when loaded

Source from the content-addressed store, hash-verified

3488
3489 // 0x004BA142 returns false when loaded
3490 bool VehicleHead::updateLoadCargo()
3491 {
3492 if (cargoTransferTimeout != 0)
3493 {
3494 cargoTransferTimeout--;
3495 return true;
3496 }
3497
3498 Vehicle train(head);
3499 for (auto& car : train.cars)
3500 {
3501 for (auto& carComponent : car)
3502 {
3503 if (carComponent.front->hasBreakdownFlags(BreakdownFlags::awaitingCargoTransfer))
3504 {
3505 carComponent.front->breakdownFlags &= ~BreakdownFlags::awaitingCargoTransfer;
3506 if (carComponent.front->secondaryCargo.type == 0xFF)
3507 {
3508 return true;
3509 }
3510 updateLoadCargoComponent(carComponent.front->secondaryCargo, carComponent.front);
3511 return true;
3512 }
3513 else if (carComponent.back->hasBreakdownFlags(BreakdownFlags::awaitingCargoTransfer))
3514 {
3515 carComponent.back->breakdownFlags &= ~BreakdownFlags::awaitingCargoTransfer;
3516 return true;
3517 }
3518 else if (carComponent.body->hasBreakdownFlags(BreakdownFlags::awaitingCargoTransfer))
3519 {
3520 carComponent.body->breakdownFlags &= ~BreakdownFlags::awaitingCargoTransfer;
3521 if (carComponent.body->primaryCargo.type == 0xFF)
3522 {
3523 return true;
3524 }
3525 if (updateLoadCargoComponent(carComponent.body->primaryCargo, carComponent.back))
3526 {
3527 carComponent.body->updateCargoSprite();
3528 }
3529 return true;
3530 }
3531 }
3532 }
3533
3534 auto orders = getCurrentOrders();
3535 for (auto& order : orders)
3536 {
3537 if (!order.hasFlags(OrderFlags::HasCargo))
3538 {
3539 currentOrder = order.getOffset() - orderTableOffset;
3540 Ui::WindowManager::invalidateOrderPageByVehicleNumber(enumValue(id));
3541 break;
3542 }
3543 auto* waitFor = order.as<OrderWaitFor>();
3544 if (waitFor == nullptr)
3545 {
3546 continue;
3547 }

Callers

nothing calls this directly

Calls 9

enumValueFunction · 0.85
getControllingIdFunction · 0.85
postFunction · 0.85
updateCargoSpriteMethod · 0.80
getOffsetMethod · 0.80
getCargoMethod · 0.80
hasBreakdownFlagsMethod · 0.45
hasFlagsMethod · 0.45

Tested by

no test coverage detected