0x004AA36A 0: None of the below 1: reached first timeout at signal 2: give up and reverse at signal
| 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() |
nothing calls this directly
no test coverage detected