mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 09:15:34 +08:00
[P3D] Adjustments for P3D v5
* guess version * added new version selection
This commit is contained in:
committed by
Mat Sutcliffe
parent
828b57f5a2
commit
8278a7d5e6
@@ -243,7 +243,7 @@ namespace BlackMisc
|
||||
{
|
||||
// finding the user settings only works on P3D machine
|
||||
QStringList allPaths = CFsCommonUtil::allP3dAddOnXmlSimObjectPaths(versionHint).values();
|
||||
const QString sod = CFileUtils::normalizeFilePathToQtStandard(simObjectsDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : simObjectsDir);
|
||||
const QString sod = CFileUtils::normalizeFilePathToQtStandard(simObjectsDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : simObjectsDir);
|
||||
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
|
||||
{
|
||||
// case insensitive is important here
|
||||
@@ -256,6 +256,18 @@ namespace BlackMisc
|
||||
return allPaths;
|
||||
}
|
||||
|
||||
QString CFsCommonUtil::guessP3DVersion(const QString &candidate)
|
||||
{
|
||||
if (candidate.isEmpty()) { return "v4"; }
|
||||
if (candidate.contains("v5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
|
||||
if (candidate.contains("v4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
|
||||
|
||||
if (candidate.contains("5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
|
||||
if (candidate.contains("4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
|
||||
|
||||
return "v5"; // that is the future (in 2020)
|
||||
}
|
||||
|
||||
QString CFsCommonUtil::p3dSimObjectsDirFromSimDir(const QString &simDir)
|
||||
{
|
||||
if (simDir.isEmpty()) { return {}; }
|
||||
|
||||
@@ -57,7 +57,10 @@ namespace BlackMisc
|
||||
static QStringList fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir = "");
|
||||
|
||||
//! P3D's simObject dir and the add on dirs
|
||||
static QStringList p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir = "", const QString &versionHint = "v4");
|
||||
static QStringList p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir, const QString &versionHint);
|
||||
|
||||
//! Guess the P3D version such as v4, v5
|
||||
static QString guessP3DVersion(const QString &candidate);
|
||||
|
||||
//! P3D directory obtained from registry
|
||||
static const QString &p3dDirFromRegistry();
|
||||
|
||||
@@ -588,12 +588,15 @@ namespace BlackMisc
|
||||
switch (m_simulator.getSimulator())
|
||||
{
|
||||
case CSimulatorInfo::FG: dirs = QStringList(CFlightgearUtil::modelDirectoriesFromSimDir(s)); break;
|
||||
case CSimulatorInfo::FS9: dirs = QStringList({CFsCommonUtil::fs9AircraftDirFromSimDir(s)}); break;
|
||||
case CSimulatorInfo::FS9: dirs = QStringList({ CFsCommonUtil::fs9AircraftDirFromSimDir(s) }); break;
|
||||
case CSimulatorInfo::FSX:
|
||||
dirs = CFsCommonUtil::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(CFsCommonUtil::fsxSimObjectsDirFromSimDir(s));
|
||||
break;
|
||||
case CSimulatorInfo::P3D:
|
||||
dirs = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(CFsCommonUtil::p3dSimObjectsDirFromSimDir(s));
|
||||
{
|
||||
const QString versionHint = CFsCommonUtil::guessP3DVersion(s);
|
||||
dirs = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(CFsCommonUtil::p3dSimObjectsDirFromSimDir(s), versionHint);
|
||||
}
|
||||
break;
|
||||
case CSimulatorInfo::XPLANE: dirs = QStringList({CXPlaneUtil::modelDirectoriesFromSimDir(s)}); break;
|
||||
default: break;
|
||||
@@ -678,8 +681,10 @@ namespace BlackMisc
|
||||
}
|
||||
case CSimulatorInfo::P3D:
|
||||
{
|
||||
if (CFsCommonUtil::p3dSimObjectsDir().isEmpty()) { return e; }
|
||||
static const QStringList md = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths();
|
||||
static const QString p3d = CFsCommonUtil::p3dSimObjectsDir();
|
||||
if (p3d.isEmpty()) { return e; }
|
||||
static const QString versionHint = CFsCommonUtil::guessP3DVersion(p3d);
|
||||
static const QStringList md = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(p3d, versionHint);
|
||||
return md;
|
||||
}
|
||||
case CSimulatorInfo::XPLANE:
|
||||
|
||||
@@ -279,7 +279,7 @@ namespace BlackMisc
|
||||
|
||||
protected:
|
||||
CSimulatorSettings m_genericSettings; //!< the generic settings
|
||||
CSimulatorInfo m_simulator; //!< represented simulator
|
||||
CSimulatorInfo m_simulator; //!< represented simulator
|
||||
};
|
||||
|
||||
//! XPlane specific settings
|
||||
|
||||
Reference in New Issue
Block a user