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

Function setTrainModFlags

src/OpenLoco/src/Vehicles/VehicleHead.cpp:6815–6859  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6813
6814 template<typename T>
6815 static void setTrainModFlags(Vehicle& train, T& trackRoadObj)
6816 {
6817 bool canRoll = true;
6818 uint32_t roadMods = 0;
6819 uint32_t rackRailMods = 0;
6820 for (auto& car : train.cars)
6821 {
6822 auto* vehicleObj = ObjectManager::get<VehicleObject>(car.front->objectId);
6823 if (vehicleObj->bodySprites[0].numRollFrames == 1)
6824 {
6825 canRoll = false;
6826 }
6827 if (vehicleObj->hasFlags(VehicleObjectFlags::rackRail))
6828 {
6829 for (auto i = 0U; i < trackRoadObj.numMods; ++i)
6830 {
6831 if (trackRoadObj.mods[i] == vehicleObj->rackRailType)
6832 {
6833 rackRailMods |= (1U << i);
6834 break;
6835 }
6836 }
6837 }
6838
6839 for (auto i = 0U; i < vehicleObj->numTrackExtras; ++i)
6840 {
6841 const auto mod = vehicleObj->requiredTrackExtras[i];
6842 for (auto j = 0U; j < trackRoadObj.numMods; ++j)
6843 {
6844 if (trackRoadObj.mods[j] == mod)
6845 {
6846 roadMods |= (1U << j);
6847 break;
6848 }
6849 }
6850 }
6851 }
6852 train.head->var_53 = roadMods;
6853 train.veh1->var_49 = rackRailMods;
6854 train.head->var_38 &= ~Flags38::fasterAroundCurves;
6855 if (canRoll)
6856 {
6857 train.head->var_38 |= Flags38::fasterAroundCurves;
6858 }
6859 }
6860
6861 // 0x004B7CC3
6862 void VehicleHead::updateTrainProperties()

Callers 1

updateTrainPropertiesMethod · 0.85

Calls 1

hasFlagsMethod · 0.45

Tested by

no test coverage detected