@@ -223,18 +223,33 @@ std::string DashBoardManager::determineLayoutFromDashboardMod(CacheEntryPtr& ent
223
223
Ogre::FileInfoListPtr filelist
224
224
= Ogre::ResourceGroupManager::getSingleton ().findResourceFileInfo (entry->resource_group , fmt::format (" {}*.layout" , basename));
225
225
226
- std::string layout ;
226
+ std::string match_xph, match_rpm ;
227
227
for (Ogre::FileInfo& fileinfo : *filelist)
228
228
{
229
229
if (m_actor->ar_driveable == TRUCK)
230
230
{
231
+ const int redlineRPM = (int )m_actor->ar_engine ->getShiftUpRPM ();
231
232
const char desiredX = App::gfx_speedo_imperial->getBool () ? ' m' : ' k' ;
232
- layout = DashBestXPH (desiredX, layout, fileinfo.filename );
233
- const float redlineRPM = m_actor->ar_engine ->getShiftUpRPM ();
234
- layout = DashBestRPM (redlineRPM, layout, fileinfo.filename );
233
+ if (DashRPM (fileinfo.filename ) >= redlineRPM && DashXPH (fileinfo.filename ) == desiredX)
234
+ {
235
+ return fileinfo.filename ; // perfect match
236
+ }
237
+ else if (DashXPH (fileinfo.filename ) == desiredX)
238
+ {
239
+ match_xph = fileinfo.filename ;
240
+ }
241
+ else if (DashRPM (fileinfo.filename ) >= redlineRPM)
242
+ {
243
+ match_rpm = fileinfo.filename ;
244
+ }
245
+ }
246
+ else // boat
247
+ {
248
+ return fileinfo.filename ;
235
249
}
236
250
}
237
- return layout;
251
+ // No ideal match? Return match we have.
252
+ return (match_xph != " " ) ? match_xph : match_rpm;
238
253
}
239
254
240
255
void DashBoardManager::loadDashBoard (std::string const & filename, BitMask_t flags)
0 commit comments