mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 16:55:36 +08:00
Completing modelloader for FG
This commit is contained in:
committed by
Mat Sutcliffe
parent
27de455f98
commit
8a4a346c83
@@ -36,31 +36,32 @@ namespace BlackMisc{
|
|||||||
|
|
||||||
Simulation::CAircraftModelList AircraftModelLoaderFlightgear::parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories)
|
Simulation::CAircraftModelList AircraftModelLoaderFlightgear::parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories)
|
||||||
{
|
{
|
||||||
//Q_UNUSED(excludeDirectories);
|
Q_UNUSED(excludeDirectories);
|
||||||
//if (rootDirectory.isEmpty()) { return {}; }
|
if (rootDirectory.isEmpty()) { return {}; }
|
||||||
|
|
||||||
Simulation::CAircraftModelList installedModels;
|
Simulation::CAircraftModelList installedModels;
|
||||||
|
|
||||||
//QDir searchPath(rootDirectory, fileFilterFlyable());
|
QDir searchPath(rootDirectory);
|
||||||
//QDirIterator aircraftIt(searchPath, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
|
searchPath.setNameFilters(QStringList()<< "*-set.xml");
|
||||||
|
QDirIterator aircraftIt(searchPath, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
|
||||||
|
|
||||||
//while (aircraftIt.hasNext()) {
|
|
||||||
//aircraftIt.next();
|
|
||||||
//if (CFileUtils::isExcludedDirectory(aircraftIt.fileInfo(), excludeDirectories, Qt::CaseInsensitive)) { continue; }
|
|
||||||
//Simulation::CAircraftModel model;
|
|
||||||
//model.setAircraftIcaoCode(QString::fromStdString("A320"));
|
|
||||||
//model.setDescription(QString::fromStdString("Flyable"));
|
|
||||||
//model.setName(aircraftIt.fileName());
|
|
||||||
//model.setModelString(aircraftIt.filePath() + aircraftIt.fileName());
|
|
||||||
//model.setModelType(CAircraftModel::TypeOwnSimulatorModel);
|
|
||||||
//model.setSimulator(CSimulatorInfo::fg());
|
|
||||||
//model.setCG(PhysicalQuantities::CLength());
|
|
||||||
//model.setFileDetailsAndTimestamp(aircraftIt.fileInfo());
|
|
||||||
//model.setModelMode(CAircraftModel::Include);
|
|
||||||
|
|
||||||
//addUniqueModel(model,installedModels);
|
while (aircraftIt.hasNext()) {
|
||||||
//TODO Add livery adding
|
aircraftIt.next();
|
||||||
//}
|
if (CFileUtils::isExcludedDirectory(aircraftIt.fileInfo(), excludeDirectories, Qt::CaseInsensitive)) { continue; }
|
||||||
|
if (aircraftIt.filePath().toStdString().find("/AI/Aircraft") != std::string::npos) { continue; }
|
||||||
|
Simulation::CAircraftModel model;
|
||||||
|
std::string modelName = aircraftIt.fileName().toStdString();
|
||||||
|
modelName = modelName.substr(0,modelName.find("-set.xml"));
|
||||||
|
model.setName(QString::fromStdString(modelName));
|
||||||
|
model.setModelString(QString::fromStdString(getModelString(aircraftIt.fileName().toStdString(),false)));
|
||||||
|
model.setModelType(CAircraftModel::TypeOwnSimulatorModel);
|
||||||
|
model.setSimulator(CSimulatorInfo::fg());
|
||||||
|
model.setFileDetailsAndTimestamp(aircraftIt.fileInfo());
|
||||||
|
model.setModelMode(CAircraftModel::Exclude);
|
||||||
|
|
||||||
|
addUniqueModel(model,installedModels);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return installedModels;
|
return installedModels;
|
||||||
}
|
}
|
||||||
@@ -97,12 +98,6 @@ namespace BlackMisc{
|
|||||||
return installedModels;
|
return installedModels;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString &AircraftModelLoaderFlightgear::fileFilterFlyable()
|
|
||||||
{
|
|
||||||
static const QString f("*-set.xml");
|
|
||||||
return f;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AircraftModelLoaderFlightgear::addUniqueModel(const CAircraftModel &model, CAircraftModelList &models)
|
void AircraftModelLoaderFlightgear::addUniqueModel(const CAircraftModel &model, CAircraftModelList &models)
|
||||||
{
|
{
|
||||||
//TODO Add check
|
//TODO Add check
|
||||||
@@ -114,9 +109,10 @@ namespace BlackMisc{
|
|||||||
CAircraftModelList allModels;
|
CAircraftModelList allModels;
|
||||||
for (const QString &rootDirectory : rootDirectories)
|
for (const QString &rootDirectory : rootDirectories)
|
||||||
{
|
{
|
||||||
//TODO Make paths changeable (using env variable)
|
if(QDir(rootDirectory + "/AI/Aircraft").exists()){
|
||||||
allModels.push_back(parseAIAirplanes(rootDirectory + "/AI/Aircraft", excludeDirectories));
|
allModels.push_back(parseAIAirplanes(rootDirectory + "/AI/Aircraft", excludeDirectories));
|
||||||
//allModels.push_back(parseFlyableAirplanes("X:/Flightsim/Flightgear/2018.3/data/Aircraft", excludeDirectories));
|
}
|
||||||
|
allModels.push_back(parseFlyableAirplanes(rootDirectory, excludeDirectories));
|
||||||
}
|
}
|
||||||
|
|
||||||
return allModels;
|
return allModels;
|
||||||
@@ -154,15 +150,21 @@ namespace BlackMisc{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string AircraftModelLoaderFlightgear::getModelString(std::string filePath, bool ai)
|
std::string AircraftModelLoaderFlightgear::getModelString(std::string fileName, bool ai)
|
||||||
{
|
{
|
||||||
std::string modelString = "FG ";
|
std::string modelString = "FG ";
|
||||||
if(ai)
|
if(ai){
|
||||||
modelString.append("AI ");
|
modelString.append("AI ");
|
||||||
std::string path = filePath;
|
fileName = fileName.substr(fileName.find("Aircraft")+9);
|
||||||
filePath = filePath.substr(filePath.find("Aircraft")+9);
|
fileName = fileName.substr(0,fileName.find(".xml"));
|
||||||
filePath = filePath.substr(0,filePath.find(".xml"));
|
|
||||||
modelString.append(filePath);
|
} else {
|
||||||
|
fileName = fileName.substr(0,fileName.find("-set.xml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
modelString.append(fileName);
|
||||||
|
|
||||||
|
|
||||||
return modelString;
|
return modelString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ namespace BlackMisc{
|
|||||||
std::string getModelString(std::string filePath,bool ai);
|
std::string getModelString(std::string filePath,bool ai);
|
||||||
Simulation::CAircraftModelList parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories);
|
Simulation::CAircraftModelList parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories);
|
||||||
Simulation::CAircraftModelList parseAIAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories);
|
Simulation::CAircraftModelList parseAIAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories);
|
||||||
static const QString &fileFilterFlyable();
|
|
||||||
void addUniqueModel(const CAircraftModel &model, CAircraftModelList &models);
|
void addUniqueModel(const CAircraftModel &model, CAircraftModelList &models);
|
||||||
QPointer<CWorker> m_parserWorker;
|
QPointer<CWorker> m_parserWorker;
|
||||||
CAircraftModelList performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories);
|
CAircraftModelList performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories);
|
||||||
|
|||||||
Reference in New Issue
Block a user