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

Method categoriseTimeElapsed

src/OpenLoco/src/Vehicles/VehicleHead.cpp:1384–1428  ·  view source on GitHub ↗

0x004AA36A 0: None of the below 1: reached first timeout at signal 2: give up and reverse at signal

Source from the content-addressed store, hash-verified

1382 // 1: reached first timeout at signal
1383 // 2: give up and reverse at signal
1384 SignalTimeoutStatus VehicleHead::categoriseTimeElapsed()
1385 {
1386 Vehicle train(head);
1387 if (train.veh2->routingHandle != train.veh1->routingHandle || train.veh2->subPosition != train.veh1->subPosition)
1388 {
1389 train.veh1->timeAtSignal = 0;
1390 return SignalTimeoutStatus::ok;
1391 }
1392
1393 auto param1 = 160;
1394 auto turnaroundAtSignalTimeout = kBusSignalTimeout;
1395
1396 if (trackType == 0xFF || ObjectManager::get<RoadObject>(trackType)->hasFlags(RoadObjectFlags::isRoad))
1397 {
1398 if (train.veh1->trackAndDirection.road.isOvertaking())
1399 {
1400 param1 = 128;
1401 turnaroundAtSignalTimeout = 544;
1402 }
1403 }
1404 else
1405 {
1406 // Tram
1407 turnaroundAtSignalTimeout = kTramSignalTimeout;
1408 if (train.veh1->trackAndDirection.road.isOvertaking())
1409 {
1410 param1 = 64;
1411 turnaroundAtSignalTimeout = 128;
1412 }
1413 }
1414
1415 train.veh1->timeAtSignal++;
1416 if (train.veh1->timeAtSignal == param1)
1417 {
1418 return SignalTimeoutStatus::firstTimeout;
1419 }
1420
1421 if (train.veh1->timeAtSignal == turnaroundAtSignalTimeout)
1422 {
1423 var_5C = 40;
1424 return SignalTimeoutStatus::turnaroundAtSignalTimeout;
1425 }
1426
1427 return SignalTimeoutStatus::ok;
1428 }
1429
1430 // 0x004A8DB7
1431 bool VehicleHead::sub_4A8DB7()

Callers

nothing calls this directly

Calls 2

isOvertakingMethod · 0.80
hasFlagsMethod · 0.45

Tested by

no test coverage detected