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

Method updateUnloadCargo

src/OpenLoco/src/Vehicles/VehicleHead.cpp:3256–3324  ·  view source on GitHub ↗

0x004B9A2A

Source from the content-addressed store, hash-verified

3254 }
3255 // 0x004B9A2A
3256 void VehicleHead::updateUnloadCargo()
3257 {
3258 if (cargoTransferTimeout != 0)
3259 {
3260 cargoTransferTimeout--;
3261 return;
3262 }
3263
3264 Vehicle train(head);
3265 for (auto& car : train.cars)
3266 {
3267 for (auto& carComponent : car)
3268 {
3269 if (carComponent.front->hasBreakdownFlags(BreakdownFlags::awaitingCargoTransfer))
3270 {
3271 carComponent.front->breakdownFlags &= ~BreakdownFlags::awaitingCargoTransfer;
3272 if (carComponent.front->secondaryCargo.type == 0xFF)
3273 {
3274 return;
3275 }
3276 updateUnloadCargoComponent(carComponent.front->secondaryCargo, carComponent.front);
3277 return;
3278 }
3279 else if (carComponent.back->hasBreakdownFlags(BreakdownFlags::awaitingCargoTransfer))
3280 {
3281 carComponent.back->breakdownFlags &= ~BreakdownFlags::awaitingCargoTransfer;
3282 return;
3283 }
3284 else if (carComponent.body->hasBreakdownFlags(BreakdownFlags::awaitingCargoTransfer))
3285 {
3286 carComponent.body->breakdownFlags &= ~BreakdownFlags::awaitingCargoTransfer;
3287 if (carComponent.body->primaryCargo.type == 0xFF)
3288 {
3289 return;
3290 }
3291 if (updateUnloadCargoComponent(carComponent.body->primaryCargo, carComponent.back))
3292 {
3293 carComponent.body->updateCargoSprite();
3294 }
3295 return;
3296 }
3297 }
3298 }
3299
3300 currency32_t cargoProfit = var_58;
3301 var_58 = 0;
3302 if (cargoProfit != 0)
3303 {
3304 if (aiThoughtId != 0xFF)
3305 {
3306 auto company = CompanyManager::get(owner);
3307 company->aiThoughts[aiThoughtId].var_80 += cargoProfit;
3308 }
3309 train.veh2->curMonthRevenue += cargoProfit;
3310 if (cargoProfit != 0)
3311 {
3312 train.veh1->var_48 |= Flags48::flag2;
3313 }

Callers

nothing calls this directly

Calls 7

applyPaymentToCompanyFunction · 0.85
spendMoneyEffectFunction · 0.85
playSoundFunction · 0.85
updateCargoSpriteMethod · 0.80
getFunction · 0.50
ExpenditureTypeEnum · 0.50
hasBreakdownFlagsMethod · 0.45

Tested by

no test coverage detected