mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
Ref T131, verifyPrerequisites in simulator context (checking XP conflicts)
This commit is contained in:
@@ -161,6 +161,9 @@ namespace BlackCore
|
||||
//! Simulators which have an initialized model set
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const = 0;
|
||||
|
||||
//! Verify prerequisites for simulation like an existing model set
|
||||
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const = 0;
|
||||
|
||||
//! Number of installed models in simulator eco system
|
||||
virtual int getModelSetCount() const = 0;
|
||||
|
||||
|
||||
@@ -87,6 +87,13 @@ namespace BlackCore
|
||||
return BlackMisc::Simulation::CSimulatorInfo();
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::verifyPrerequisites
|
||||
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override
|
||||
{
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return BlackMisc::CStatusMessageList();
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::getModelSetLoaderSimulator
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override
|
||||
{
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "blackcore/application.h"
|
||||
#include "blackcore/pluginmanagersimulator.h"
|
||||
#include "blackcore/simulator.h"
|
||||
#include "blackmisc/simulation/xplane/xplaneutil.h"
|
||||
#include "blackmisc/simulation/matchingutils.h"
|
||||
#include "blackmisc/aviation/callsign.h"
|
||||
#include "blackmisc/compare.h"
|
||||
@@ -44,6 +45,7 @@ using namespace BlackMisc::PhysicalQuantities;
|
||||
using namespace BlackMisc::Aviation;
|
||||
using namespace BlackMisc::Network;
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackMisc::Simulation::XPlane;
|
||||
using namespace BlackMisc::Geo;
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackMisc::Simulation::Settings;
|
||||
@@ -184,6 +186,37 @@ namespace BlackCore
|
||||
return m_modelSetLoader.simulatorsWithInitializedModelSet();
|
||||
}
|
||||
|
||||
CStatusMessageList CContextSimulator::verifyPrerequisites() const
|
||||
{
|
||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
CStatusMessageList msgs;
|
||||
if (!sApp || !sApp->isNetworkAccessible())
|
||||
{
|
||||
msgs.push_back(CStatusMessage(this).error("No network interface, simulation will not work properly"));
|
||||
}
|
||||
const CSimulatorInfo sims = this->simulatorsWithInitializedModelSet();
|
||||
if (sims.isNoSimulator())
|
||||
{
|
||||
msgs.push_back(CStatusMessage(this).error("No model set so far, you need at least one model set. Hint: You can create a model set in the mapping tool, or copy an existing set in the launcher."));
|
||||
}
|
||||
else if (sims.xplane() || CSimulatorInfo(m_enabledSimulators.get()).xplane())
|
||||
{
|
||||
// ever used with XPlane
|
||||
const QString pluginDir = CXPlaneUtil::pluginDirFromRootDir(m_simulatorSettings.getSimulatorDirectoryOrDefault(CSimulatorInfo::XPLANE));
|
||||
const QDir dir(pluginDir);
|
||||
if (dir.exists())
|
||||
{
|
||||
// only check if we are on a XP machine
|
||||
const QStringList conflicts = CXPlaneUtil::findConflictingPlugins(pluginDir);
|
||||
if (!conflicts.isEmpty())
|
||||
{
|
||||
msgs.push_back(CStatusMessage(this).warning("Possible conflict with other XPlane plugins: '%1'") << (conflicts.join(", ")));
|
||||
}
|
||||
}
|
||||
}
|
||||
return msgs;
|
||||
}
|
||||
|
||||
QStringList CContextSimulator::getModelSetStrings() const
|
||||
{
|
||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
|
||||
@@ -26,13 +26,14 @@
|
||||
#include "blackmisc/pq/length.h"
|
||||
#include "blackmisc/pq/time.h"
|
||||
#include "blackmisc/settingscache.h"
|
||||
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
||||
#include "blackmisc/simulation/aircraftmodellist.h"
|
||||
#include "blackmisc/simulation/aircraftmodelsetloader.h"
|
||||
#include "blackmisc/simulation/remoteaircraftprovider.h"
|
||||
#include "blackmisc/simulation/simulatorplugininfo.h"
|
||||
#include "blackmisc/simulation/simulatorplugininfolist.h"
|
||||
#include "blackmisc/simulation/simulatorinternals.h"
|
||||
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
||||
|
||||
#include "blackmisc/worker.h"
|
||||
|
||||
#include <QObject>
|
||||
@@ -87,6 +88,7 @@ namespace BlackCore
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
||||
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
||||
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
||||
virtual QStringList getModelSetStrings() const override;
|
||||
virtual QStringList getModelSetCompleterStrings(bool sorted) const override;
|
||||
virtual int getModelSetCount() const override;
|
||||
@@ -225,12 +227,15 @@ namespace BlackCore
|
||||
CAircraftMatcher m_aircraftMatcher; //!< Model matcher
|
||||
BlackMisc::Simulation::CAircraftModelSetLoader m_modelSetLoader { this }; //!< load model set from caches
|
||||
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::CStatusMessageList> m_matchingMessages;
|
||||
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::Settings::TSimulatorMessages> m_messageSettings { this }; //!< settings for messages
|
||||
BlackMisc::CSettingReadOnly<Application::TEnabledSimulators> m_enabledSimulators { this, &CContextSimulator::changeEnabledSimulators };
|
||||
QString m_networkSessionId; //! Network session of CServer::getServerSessionId, if not connected empty
|
||||
bool m_initallyAddAircrafts = false;
|
||||
bool m_enableMatchingMessages = true;
|
||||
bool m_isWeatherActivated = false;
|
||||
|
||||
// settings
|
||||
BlackMisc::Simulation::Settings::CMultiSimulatorSettings m_simulatorSettings { this }; //!< for directories of XPlane
|
||||
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::Settings::TSimulatorMessages> m_messageSettings { this }; //!< settings for messages
|
||||
BlackMisc::CSettingReadOnly<Application::TEnabledSimulators> m_enabledSimulators { this, &CContextSimulator::changeEnabledSimulators };
|
||||
QString m_networkSessionId; //! Network session of CServer::getServerSessionId, if not connected empty
|
||||
};
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace BlackCore
|
||||
CContextSimulatorProxy::CContextSimulatorProxy(const QString &serviceName, QDBusConnection &connection, CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime) : IContextSimulator(mode, runtime), m_dBusInterface(nullptr)
|
||||
{
|
||||
this->m_dBusInterface = new BlackMisc::CGenericDBusInterface(
|
||||
serviceName , IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
||||
serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
||||
connection, this);
|
||||
this->relaySignals(serviceName, connection);
|
||||
}
|
||||
@@ -111,6 +111,11 @@ namespace BlackCore
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("simulatorsWithInitializedModelSet"));
|
||||
}
|
||||
|
||||
CStatusMessageList CContextSimulatorProxy::verifyPrerequisites() const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::CStatusMessageList>(QLatin1String("verifyPrerequisites"));
|
||||
}
|
||||
|
||||
CSimulatorInfo CContextSimulatorProxy::getModelSetLoaderSimulator() const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator"));
|
||||
|
||||
@@ -65,6 +65,7 @@ namespace BlackCore
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
||||
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
||||
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
||||
virtual QStringList getModelSetStrings() const override;
|
||||
|
||||
Reference in New Issue
Block a user