| 190 | } |
| 191 | |
| 192 | void InitializePlayerVehicle(ItemInfo& playerItem) |
| 193 | { |
| 194 | if (PlayerVehicleObjectID == GAME_OBJECT_ID::ID_NO_OBJECT) |
| 195 | return; |
| 196 | |
| 197 | auto* vehicle = FindItem(PlayerVehicleObjectID); |
| 198 | if (vehicle == nullptr) |
| 199 | return; |
| 200 | |
| 201 | // Restore vehicle. |
| 202 | TENLog(fmt::format("Transferring vehicle {} from the previous level.", GetObjectName(PlayerVehicleObjectID))); |
| 203 | vehicle->Pose = playerItem.Pose; |
| 204 | SetLaraVehicle(&playerItem, vehicle); |
| 205 | playerItem.Animation = PlayerAnim; |
| 206 | |
| 207 | // HACK: Reinitialize vehicles which require specific parameters to be reset according to Lara pose. |
| 208 | |
| 209 | switch (vehicle->ObjectNumber) |
| 210 | { |
| 211 | case GAME_OBJECT_ID::ID_KAYAK: |
| 212 | InitializeKayak(vehicle->Index); |
| 213 | KayakPaddleTake(GetKayakInfo(&g_Level.Items[vehicle->Index]), &playerItem); |
| 214 | break; |
| 215 | |
| 216 | case GAME_OBJECT_ID::ID_MOTORBIKE: |
| 217 | InitializeMotorbike(vehicle->Index); |
| 218 | break; |
| 219 | |
| 220 | case GAME_OBJECT_ID::ID_JEEP: |
| 221 | InitializeJeep(vehicle->Index); |
| 222 | break; |
| 223 | |
| 224 | case GAME_OBJECT_ID::ID_QUAD: |
| 225 | InitializeQuadBike(vehicle->Index); |
| 226 | break; |
| 227 | |
| 228 | case GAME_OBJECT_ID::ID_SNOWMOBILE: |
| 229 | InitializeSkidoo(vehicle->Index); |
| 230 | break; |
| 231 | |
| 232 | case GAME_OBJECT_ID::ID_MINECART: |
| 233 | MinecartWrenchTake(GetMinecartInfo(&g_Level.Items[vehicle->Index]), &playerItem); |
| 234 | break; |
| 235 | |
| 236 | case GAME_OBJECT_ID::ID_SPEEDBOAT: |
| 237 | InitializeSpeedboat(vehicle->Index); |
| 238 | DoSpeedboatMount(&g_Level.Items[vehicle->Index], &playerItem, VehicleMountType::LevelStart); |
| 239 | break; |
| 240 | |
| 241 | case GAME_OBJECT_ID::ID_RUBBER_BOAT: |
| 242 | InitializeRubberBoat(vehicle->Index); |
| 243 | DoRubberBoatMount(&g_Level.Items[vehicle->Index], &playerItem, VehicleMountType::LevelStart); |
| 244 | break; |
| 245 | |
| 246 | case GAME_OBJECT_ID::ID_UPV: |
| 247 | DoUPVMount(&g_Level.Items[vehicle->Index], &playerItem, VehicleMountType::LevelStart); |
| 248 | GetUPVInfo(&g_Level.Items[vehicle->Index])->Flags = UPVFlags::UPV_FLAG_CONTROL; |
| 249 | break; |
no test coverage detected