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

Function insertCarBefore

src/OpenLoco/src/Vehicles/Vehicle.cpp:859–891  ·  view source on GitHub ↗

0x004AF4D6 source: esi dest: edi returns nothing

Source from the content-addressed store, hash-verified

857 // dest: edi
858 // returns nothing
859 void insertCarBefore(VehicleBogie& source, VehicleBase& dest)
860 {
861 if (source.id == dest.id)
862 {
863 return;
864 }
865 Ui::WindowManager::invalidate(Ui::WindowType::vehicle, enumValue(source.head));
866 Ui::WindowManager::invalidate(Ui::WindowType::vehicle, enumValue(dest.getHead()));
867 Ui::WindowManager::invalidate(Ui::WindowType::vehicleList);
868
869 Vehicle sourceTrain(source.head);
870 auto precedingSourceComponent = source.previousVehicleComponent();
871 for (auto& car : sourceTrain.cars)
872 {
873 if (car.front->id != source.id)
874 {
875 continue;
876 }
877 auto* lastBody = car.body;
878 for (auto& component : car)
879 {
880 component.front->head = dest.getHead();
881 component.back->head = dest.getHead();
882 component.body->head = dest.getHead();
883 lastBody = component.body;
884 }
885 precedingSourceComponent->setNextCar(lastBody->nextCarId);
886 lastBody->nextCarId = dest.id;
887 break;
888 }
889 auto precedingDestComponent = dest.previousVehicleComponent();
890 precedingDestComponent->setNextCar(source.id);
891 }
892
893 // 0x004AF5E1
894 // esi: head

Callers 3

autoLayoutTrainMethod · 0.85
sub_4ADB47Method · 0.85
vehicleRearrangeFunction · 0.85

Calls 5

enumValueFunction · 0.85
getHeadMethod · 0.80
setNextCarMethod · 0.80
invalidateFunction · 0.50

Tested by

no test coverage detected