@@ -73,26 +73,28 @@ inline bool CPoolsSA::AddVehicleToPool(CClientVehicle* pClientVehicle, CVehicleS
7373
7474CVehicle* CPoolsSA::AddVehicle (CClientVehicle* pClientVehicle, std::uint16_t model, std::uint8_t variation, std::uint8_t variation2) noexcept
7575{
76- try
77- {
78- if (m_vehiclePool.ulCount >= MAX_VEHICLES)
79- return nullptr ;
76+ if (m_vehiclePool.ulCount >= MAX_VEHICLES)
77+ return nullptr ;
8078
81- MemSetFast ((void *)VAR_CVehicle_Variation1, variation, 1 );
82- MemSetFast ((void *)VAR_CVehicle_Variation2, variation2, 1 );
79+ MemSetFast ((void *)VAR_CVehicle_Variation1, variation, 1 );
80+ MemSetFast ((void *)VAR_CVehicle_Variation2, variation2, 1 );
8381
84- // CCarCtrl::CreateCarForScript
85- auto * pInterface = ((CVehicleSAInterface* (__cdecl*)(int , CVector, std::uint8_t ))FUNC_CCarCtrlCreateCarForScript)(model, CVector (), 0 );
86- if (!pInterface)
87- return nullptr ;
82+ // CCarCtrl::CreateCarForScript
83+ auto * pInterface = ((CVehicleSAInterface * (__cdecl*)(int , CVector, std::uint8_t )) FUNC_CCarCtrlCreateCarForScript)(model, CVector (), 0 );
84+ if (!pInterface)
85+ return nullptr ;
8886
89- // Valid model?
90- if (!CModelInfoSA::IsVehicleModel (model))
91- return nullptr ;
87+ // Valid model?
88+ if (!CModelInfoSA::IsVehicleModel (model))
89+ return nullptr ;
90+
91+ auto vehicleClass = static_cast <VehicleClass>(pGame->GetModelInfo (model)->GetVehicleType ());
9292
93- auto vehicleClass = static_cast <VehicleClass>(pGame-> GetModelInfo (model)-> GetVehicleType ()) ;
93+ std::unique_ptr<CVehicleSA> vehicle = nullptr ;
9494
95- std::unique_ptr<CVehicleSA> vehicle = nullptr ;
95+ // Failed construct
96+ try
97+ {
9698 switch (vehicleClass)
9799 {
98100 case VehicleClass::MONSTER_TRUCK:
@@ -126,21 +128,21 @@ CVehicle* CPoolsSA::AddVehicle(CClientVehicle* pClientVehicle, std::uint16_t mod
126128 vehicle = std::make_unique<CAutomobileSA>(reinterpret_cast <CAutomobileSAInterface*>(pInterface));
127129 break ;
128130 }
129-
130- if (!vehicle || !AddVehicleToPool (pClientVehicle, vehicle.get ()))
131- return nullptr ;
132-
133- vehicle->m_ucVariant = variation;
134- vehicle->m_ucVariant2 = variation2;
135-
136- vehicle->DumpVehicleFrames ();
137-
138- return vehicle.release ();
139131 }
140132 catch (...)
141133 {
142134 return nullptr ;
143135 }
136+
137+ if (!vehicle || !AddVehicleToPool (pClientVehicle, vehicle.get ()))
138+ return nullptr ;
139+
140+ vehicle->m_ucVariant = variation;
141+ vehicle->m_ucVariant2 = variation2;
142+
143+ vehicle->DumpVehicleFrames ();
144+
145+ return vehicle.release ();
144146}
145147
146148void CPoolsSA::RemoveVehicle (CVehicle* pVehicle, bool bDelete)
@@ -577,16 +579,10 @@ CClientEntity* CPoolsSA::GetClientEntity(DWORD* pGameInterface)
577579static void CreateMissionTrain (const CVector& vecPos, bool bDirection, std::uint32_t uiTrainType, CTrainSAInterface** ppTrainBeginning,
578580 CTrainSAInterface** ppTrainEnd, int iNodeIndex, int iTrackId, bool bMissionTrain) noexcept
579581{
580- try
581- {
582- auto createMissionTrain = reinterpret_cast <void (__cdecl*)(CVector, bool , std::uint32_t , CTrainSAInterface**, CTrainSAInterface**,
583- int , int , bool )>(FUNC_CTrain_CreateMissionTrain);
582+ auto createMissionTrain = reinterpret_cast <void (__cdecl*)(CVector, bool , std::uint32_t , CTrainSAInterface**, CTrainSAInterface**,
583+ int , int , bool )>(FUNC_CTrain_CreateMissionTrain);
584584
585- createMissionTrain (vecPos, bDirection, uiTrainType, ppTrainBeginning, ppTrainEnd, iNodeIndex, iTrackId, bMissionTrain);
586- }
587- catch (...)
588- {
589- }
585+ createMissionTrain (vecPos, bDirection, uiTrainType, ppTrainBeginning, ppTrainEnd, iNodeIndex, iTrackId, bMissionTrain);
590586}
591587
592588CVehicle* CPoolsSA::AddTrain (CClientVehicle* pClientVehicle, const CVector& vecPosition, std::vector<DWORD> models, bool bDirection,
0 commit comments