@@ -27,17 +27,17 @@ extern CGameSA* pGame;
2727#define DUMP_HANDLING_DATA 0
2828
2929// Original handling data unaffected by handling.cfg changes
30- tHandlingDataSA m_OriginalHandlingData[HT_MAX];
31- CHandlingEntrySA* m_pOriginalEntries [HT_MAX];
30+ tHandlingDataSA m_OriginalHandlingData[HT_MAX];
31+ std::unique_ptr< CHandlingEntrySA> m_OriginalEntries [HT_MAX];
3232
33- tFlyingHandlingDataSA m_OriginalFlyingHandlingData[24];
34- CFlyingHandlingEntrySA* m_pOriginalFlyingEntries [24];
33+ tFlyingHandlingDataSA m_OriginalFlyingHandlingData[24];
34+ std::unique_ptr< CFlyingHandlingEntrySA> m_OriginalFlyingEntries [24];
3535
36- tBoatHandlingDataSA m_OriginalBoatHandlingData[12];
37- CBoatHandlingEntrySA* m_pOriginalBoatEntries [12];
36+ tBoatHandlingDataSA m_OriginalBoatHandlingData[12];
37+ std::unique_ptr< CBoatHandlingEntrySA> m_OriginalBoatEntries [12];
3838
39- tBikeHandlingDataSA m_OriginalBikeHandlingData[14];
40- CBikeHandlingEntrySA* m_pOriginalBikeEntries [14];
39+ tBikeHandlingDataSA m_OriginalBikeHandlingData[14];
40+ std::unique_ptr< CBikeHandlingEntrySA> m_OriginalBikeEntries [14];
4141
4242std::map<std::string, eHandlingProperty> m_HandlingNames;
4343
@@ -120,11 +120,11 @@ static __declspec(naked) void Hook_Calculate()
120120 }
121121}
122122
123- static bool IsVehicleModel(std::uint32_t uiModel)
123+ static bool IsVehicleModel(std::uint32_t model) noexcept
124124{
125125 try
126126 {
127- const CModelInfo* pModelInfo = pGame->GetModelInfo(uiModel );
127+ const CModelInfo* pModelInfo = pGame->GetModelInfo(model );
128128 return pModelInfo && pModelInfo->IsVehicle();
129129 }
130130 catch (...)
@@ -141,22 +141,22 @@ CHandlingManagerSA::CHandlingManagerSA()
141141 // Create a handling entry for every original handling data.
142142 for (std::size_t i = 0; i < HT_MAX; i++)
143143 {
144- m_pOriginalEntries [i] = new CHandlingEntrySA(&m_OriginalHandlingData[i]);
144+ m_OriginalEntries [i] = std::make_unique< CHandlingEntrySA> (&m_OriginalHandlingData[i]);
145145 }
146146
147147 for (std::size_t i = 0; i < 24; i++)
148148 {
149- m_pOriginalFlyingEntries [i] = new CFlyingHandlingEntrySA(&m_OriginalFlyingHandlingData[i]);
149+ m_OriginalFlyingEntries [i] = std::make_unique< CFlyingHandlingEntrySA> (&m_OriginalFlyingHandlingData[i]);
150150 }
151151
152152 for (std::size_t i = 0; i < 12; i++)
153153 {
154- m_pOriginalBoatEntries [i] = new CBoatHandlingEntrySA(&m_OriginalBoatHandlingData[i]);
154+ m_OriginalBoatEntries [i] = std::make_unique< CBoatHandlingEntrySA> (&m_OriginalBoatHandlingData[i]);
155155 }
156156
157157 for (std::size_t i = 0; i < 14; i++)
158158 {
159- m_pOriginalBikeEntries [i] = new CBikeHandlingEntrySA(&m_OriginalBikeHandlingData[i]);
159+ m_OriginalBikeEntries [i] = std::make_unique< CBikeHandlingEntrySA> (&m_OriginalBikeHandlingData[i]);
160160 }
161161
162162#if DUMP_HANDLING_DATA
@@ -200,116 +200,96 @@ CHandlingManagerSA::CHandlingManagerSA()
200200
201201CHandlingManagerSA::~CHandlingManagerSA()
202202{
203- // Destroy all original handling entries
204- for (std::size_t i = 0; i < HT_MAX; i++)
205- {
206- delete m_pOriginalEntries[i];
207- }
208-
209- for (std::size_t i = 0; i < 24; i++)
210- {
211- delete m_pOriginalFlyingEntries[i];
212- }
213-
214- for (std::size_t i = 0; i < 12; i++)
215- {
216- delete m_pOriginalBoatEntries[i];
217- }
218-
219- for (std::size_t i = 0; i < 14; i++)
220- {
221- delete m_pOriginalBikeEntries[i];
222- }
223203}
224204
225- eHandlingProperty CHandlingManagerSA::GetPropertyEnumFromName(const std::string& strName ) const noexcept
205+ eHandlingProperty CHandlingManagerSA::GetPropertyEnumFromName(const std::string& name ) const noexcept
226206{
227- const auto it = m_HandlingNames.find(strName );
207+ const auto it = m_HandlingNames.find(name );
228208 return it != m_HandlingNames.end() ? it->second : HANDLING_MAX;
229209}
230210
231- CHandlingEntry* CHandlingManagerSA::CreateHandlingData() const noexcept
211+ std::unique_ptr< CHandlingEntry> CHandlingManagerSA::CreateHandlingData() const noexcept
232212{
233- return new ( std::nothrow) CHandlingEntrySA;
213+ return std::make_unique< CHandlingEntrySA>() ;
234214}
235215
236- CFlyingHandlingEntry* CHandlingManagerSA::CreateFlyingHandlingData() const noexcept
216+ std::unique_ptr< CFlyingHandlingEntry> CHandlingManagerSA::CreateFlyingHandlingData() const noexcept
237217{
238- return new ( std::nothrow) CFlyingHandlingEntrySA;
218+ return std::make_unique< CFlyingHandlingEntrySA>() ;
239219}
240220
241- CBoatHandlingEntry* CHandlingManagerSA::CreateBoatHandlingData() const noexcept
221+ std::unique_ptr< CBoatHandlingEntry> CHandlingManagerSA::CreateBoatHandlingData() const noexcept
242222{
243- return new ( std::nothrow) CBoatHandlingEntrySA;
223+ return std::make_unique< CBoatHandlingEntrySA>() ;
244224}
245225
246- CBikeHandlingEntry* CHandlingManagerSA::CreateBikeHandlingData() const noexcept
226+ std::unique_ptr< CBikeHandlingEntry> CHandlingManagerSA::CreateBikeHandlingData() const noexcept
247227{
248- return new ( std::nothrow) CBikeHandlingEntrySA;
228+ return std::make_unique< CBikeHandlingEntrySA>() ;
249229}
250230
251- const CHandlingEntry* CHandlingManagerSA::GetOriginalHandlingData(std::uint32_t uiModel ) const noexcept
231+ const CHandlingEntry* CHandlingManagerSA::GetOriginalHandlingData(std::uint32_t model ) const noexcept
252232{
253233 // Vehicle?
254- if (!IsVehicleModel(uiModel ))
234+ if (!IsVehicleModel(model ))
255235 return nullptr;
256236
257237 // Get our Handling ID, the default value will be HT_LANDSTAL
258- const eHandlingTypes eHandling = GetHandlingID(uiModel );
238+ const eHandlingTypes eHandling = GetHandlingID(model );
259239 // Return it
260- return m_pOriginalEntries [eHandling];
240+ return m_OriginalEntries [eHandling].get() ;
261241}
262242
263- const CFlyingHandlingEntry* CHandlingManagerSA::GetOriginalFlyingHandlingData(std::uint32_t uiModel ) const noexcept
243+ const CFlyingHandlingEntry* CHandlingManagerSA::GetOriginalFlyingHandlingData(std::uint32_t model ) const noexcept
264244{
265245 // Vehicle?
266- if (!IsVehicleModel(uiModel ))
246+ if (!IsVehicleModel(model ))
267247 return nullptr;
268248
269249 // Get our Handling ID, the default value will be HT_LANDSTAL
270- const eHandlingTypes eHandling = GetHandlingID(uiModel );
250+ const eHandlingTypes eHandling = GetHandlingID(model );
271251 // Original GTA:SA behavior
272252 if (eHandling < HT_SEAPLANE || eHandling > HT_RCRAIDER)
273- return m_pOriginalFlyingEntries [0];
253+ return m_OriginalFlyingEntries [0].get() ;
274254 else
275- return m_pOriginalFlyingEntries [eHandling - HT_SEAPLANE];
255+ return m_OriginalFlyingEntries [eHandling - HT_SEAPLANE].get() ;
276256}
277257
278- const CBoatHandlingEntry* CHandlingManagerSA::GetOriginalBoatHandlingData(std::uint32_t uiModel ) const noexcept
258+ const CBoatHandlingEntry* CHandlingManagerSA::GetOriginalBoatHandlingData(std::uint32_t model ) const noexcept
279259{
280260 // Vehicle?
281- if (!IsVehicleModel(uiModel ))
261+ if (!IsVehicleModel(model ))
282262 return nullptr;
283263
284264 // Get our Handling ID, the default value will be HT_LANDSTAL
285- const eHandlingTypes eHandling = GetHandlingID(uiModel );
265+ const eHandlingTypes eHandling = GetHandlingID(model );
286266 // Original GTA:SA behavior
287267 if (eHandling < HT_PREDATOR || eHandling > HT_SEAPLANE)
288- return m_pOriginalBoatEntries [0];
268+ return m_OriginalBoatEntries [0].get() ;
289269 else
290- return m_pOriginalBoatEntries [eHandling - HT_PREDATOR];
270+ return m_OriginalBoatEntries [eHandling - HT_PREDATOR].get() ;
291271}
292272
293- const CBikeHandlingEntry* CHandlingManagerSA::GetOriginalBikeHandlingData(std::uint32_t uiModel ) const noexcept
273+ const CBikeHandlingEntry* CHandlingManagerSA::GetOriginalBikeHandlingData(std::uint32_t model ) const noexcept
294274{
295275 // Vehicle?
296- if (!IsVehicleModel(uiModel ))
276+ if (!IsVehicleModel(model ))
297277 return nullptr;
298278
299279 // Get our Handling ID, the default value will be HT_LANDSTAL
300- const eHandlingTypes eHandling = GetHandlingID(uiModel );
280+ const eHandlingTypes eHandling = GetHandlingID(model );
301281 if (eHandling >= HT_BIKE && eHandling <= HT_FREEWAY)
302- return m_pOriginalBikeEntries [eHandling - HT_BIKE];
282+ return m_OriginalBikeEntries [eHandling - HT_BIKE].get() ;
303283 else if (eHandling == HT_FAGGIO)
304- return m_pOriginalBikeEntries [13];
284+ return m_OriginalBikeEntries [13].get() ;
305285 else
306286 return nullptr;
307287}
308288
309289// Return the handling manager id
310- eHandlingTypes CHandlingManagerSA::GetHandlingID(std::uint32_t uiModel ) const noexcept
290+ eHandlingTypes CHandlingManagerSA::GetHandlingID(std::uint32_t model ) const noexcept
311291{
312- switch (uiModel )
292+ switch (model )
313293 {
314294 case VT_LANDSTAL:
315295 return HT_LANDSTAL;
@@ -9161,7 +9141,7 @@ void CHandlingManagerSA::InitializeDefaultHandlings() noexcept
91619141 m_OriginalBikeHandlingData[13].iVehicleID = 214;
91629142}
91639143
9164- void CHandlingManagerSA::CheckSuspensionChanges(const CHandlingEntry* pEntry) const noexcept
9144+ void CHandlingManagerSA::CheckSuspensionChanges(const CHandlingEntry* const pEntry) const noexcept
91659145{
91669146 try
91679147 {
@@ -9175,31 +9155,31 @@ void CHandlingManagerSA::CheckSuspensionChanges(const CHandlingEntry* pEntry) co
91759155 return;
91769156
91779157 // Get Handling ID
9178- const eHandlingTypes eHandling = pEntry->GetHandlingID ();
9158+ const eHandlingTypes eHandling = pEntry->GetVehicleID ();
91799159 if (eHandling >= HT_MAX)
91809160 return;
91819161
9182- const CHandlingEntrySA* pOriginal = m_pOriginalEntries [eHandling];
9183- if (!pOriginal )
9162+ const auto& OriginalEntries = m_OriginalEntries [eHandling];
9163+ if (!OriginalEntries )
91849164 return;
91859165
91869166 // Default bChanged to false
91879167 bool bChanged = false;
91889168
91899169 // Set bChanged to true if we find ANY change.
9190- if (pEntry->GetSuspensionAntiDiveMultiplier() != pOriginal ->GetSuspensionAntiDiveMultiplier())
9170+ if (pEntry->GetSuspensionAntiDiveMultiplier() != OriginalEntries ->GetSuspensionAntiDiveMultiplier())
91919171 bChanged = true;
9192- else if (pEntry->GetSuspensionDamping() != pOriginal ->GetSuspensionDamping())
9172+ else if (pEntry->GetSuspensionDamping() != OriginalEntries ->GetSuspensionDamping())
91939173 bChanged = true;
9194- else if (pEntry->GetSuspensionForceLevel() != pOriginal ->GetSuspensionForceLevel())
9174+ else if (pEntry->GetSuspensionForceLevel() != OriginalEntries ->GetSuspensionForceLevel())
91959175 bChanged = true;
9196- else if (pEntry->GetSuspensionFrontRearBias() != pOriginal ->GetSuspensionFrontRearBias())
9176+ else if (pEntry->GetSuspensionFrontRearBias() != OriginalEntries ->GetSuspensionFrontRearBias())
91979177 bChanged = true;
9198- else if (pEntry->GetSuspensionHighSpeedDamping() != pOriginal ->GetSuspensionHighSpeedDamping())
9178+ else if (pEntry->GetSuspensionHighSpeedDamping() != OriginalEntries ->GetSuspensionHighSpeedDamping())
91999179 bChanged = true;
9200- else if (pEntry->GetSuspensionLowerLimit() != pOriginal ->GetSuspensionLowerLimit())
9180+ else if (pEntry->GetSuspensionLowerLimit() != OriginalEntries ->GetSuspensionLowerLimit())
92019181 bChanged = true;
9202- else if (pEntry->GetSuspensionUpperLimit() != pOriginal ->GetSuspensionUpperLimit())
9182+ else if (pEntry->GetSuspensionUpperLimit() != OriginalEntries ->GetSuspensionUpperLimit())
92039183 bChanged = true;
92049184
92059185 if (!bChanged)
0 commit comments