mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-21 12:55:31 +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
|
//! Simulators which have an initialized model set
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const = 0;
|
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
|
//! Number of installed models in simulator eco system
|
||||||
virtual int getModelSetCount() const = 0;
|
virtual int getModelSetCount() const = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,13 @@ namespace BlackCore
|
|||||||
return BlackMisc::Simulation::CSimulatorInfo();
|
return BlackMisc::Simulation::CSimulatorInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! \copydoc IContextSimulator::verifyPrerequisites
|
||||||
|
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override
|
||||||
|
{
|
||||||
|
logEmptyContextWarning(Q_FUNC_INFO);
|
||||||
|
return BlackMisc::CStatusMessageList();
|
||||||
|
}
|
||||||
|
|
||||||
//! \copydoc IContextSimulator::getModelSetLoaderSimulator
|
//! \copydoc IContextSimulator::getModelSetLoaderSimulator
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override
|
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "blackcore/application.h"
|
#include "blackcore/application.h"
|
||||||
#include "blackcore/pluginmanagersimulator.h"
|
#include "blackcore/pluginmanagersimulator.h"
|
||||||
#include "blackcore/simulator.h"
|
#include "blackcore/simulator.h"
|
||||||
|
#include "blackmisc/simulation/xplane/xplaneutil.h"
|
||||||
#include "blackmisc/simulation/matchingutils.h"
|
#include "blackmisc/simulation/matchingutils.h"
|
||||||
#include "blackmisc/aviation/callsign.h"
|
#include "blackmisc/aviation/callsign.h"
|
||||||
#include "blackmisc/compare.h"
|
#include "blackmisc/compare.h"
|
||||||
@@ -44,6 +45,7 @@ using namespace BlackMisc::PhysicalQuantities;
|
|||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
using namespace BlackMisc::Network;
|
using namespace BlackMisc::Network;
|
||||||
using namespace BlackMisc::Simulation;
|
using namespace BlackMisc::Simulation;
|
||||||
|
using namespace BlackMisc::Simulation::XPlane;
|
||||||
using namespace BlackMisc::Geo;
|
using namespace BlackMisc::Geo;
|
||||||
using namespace BlackMisc::Simulation;
|
using namespace BlackMisc::Simulation;
|
||||||
using namespace BlackMisc::Simulation::Settings;
|
using namespace BlackMisc::Simulation::Settings;
|
||||||
@@ -184,6 +186,37 @@ namespace BlackCore
|
|||||||
return m_modelSetLoader.simulatorsWithInitializedModelSet();
|
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
|
QStringList CContextSimulator::getModelSetStrings() const
|
||||||
{
|
{
|
||||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||||
|
|||||||
@@ -26,13 +26,14 @@
|
|||||||
#include "blackmisc/pq/length.h"
|
#include "blackmisc/pq/length.h"
|
||||||
#include "blackmisc/pq/time.h"
|
#include "blackmisc/pq/time.h"
|
||||||
#include "blackmisc/settingscache.h"
|
#include "blackmisc/settingscache.h"
|
||||||
|
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
||||||
#include "blackmisc/simulation/aircraftmodellist.h"
|
#include "blackmisc/simulation/aircraftmodellist.h"
|
||||||
#include "blackmisc/simulation/aircraftmodelsetloader.h"
|
#include "blackmisc/simulation/aircraftmodelsetloader.h"
|
||||||
#include "blackmisc/simulation/remoteaircraftprovider.h"
|
#include "blackmisc/simulation/remoteaircraftprovider.h"
|
||||||
#include "blackmisc/simulation/simulatorplugininfo.h"
|
#include "blackmisc/simulation/simulatorplugininfo.h"
|
||||||
#include "blackmisc/simulation/simulatorplugininfolist.h"
|
#include "blackmisc/simulation/simulatorplugininfolist.h"
|
||||||
#include "blackmisc/simulation/simulatorinternals.h"
|
#include "blackmisc/simulation/simulatorinternals.h"
|
||||||
#include "blackmisc/simulation/settings/simulatorsettings.h"
|
|
||||||
#include "blackmisc/worker.h"
|
#include "blackmisc/worker.h"
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
@@ -87,6 +88,7 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
||||||
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
||||||
|
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
||||||
virtual QStringList getModelSetStrings() const override;
|
virtual QStringList getModelSetStrings() const override;
|
||||||
virtual QStringList getModelSetCompleterStrings(bool sorted) const override;
|
virtual QStringList getModelSetCompleterStrings(bool sorted) const override;
|
||||||
virtual int getModelSetCount() const override;
|
virtual int getModelSetCount() const override;
|
||||||
@@ -225,12 +227,15 @@ namespace BlackCore
|
|||||||
CAircraftMatcher m_aircraftMatcher; //!< Model matcher
|
CAircraftMatcher m_aircraftMatcher; //!< Model matcher
|
||||||
BlackMisc::Simulation::CAircraftModelSetLoader m_modelSetLoader { this }; //!< load model set from caches
|
BlackMisc::Simulation::CAircraftModelSetLoader m_modelSetLoader { this }; //!< load model set from caches
|
||||||
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::CStatusMessageList> m_matchingMessages;
|
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_initallyAddAircrafts = false;
|
||||||
bool m_enableMatchingMessages = true;
|
bool m_enableMatchingMessages = true;
|
||||||
bool m_isWeatherActivated = false;
|
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
|
||||||
} // 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)
|
CContextSimulatorProxy::CContextSimulatorProxy(const QString &serviceName, QDBusConnection &connection, CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime) : IContextSimulator(mode, runtime), m_dBusInterface(nullptr)
|
||||||
{
|
{
|
||||||
this->m_dBusInterface = new BlackMisc::CGenericDBusInterface(
|
this->m_dBusInterface = new BlackMisc::CGenericDBusInterface(
|
||||||
serviceName , IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
||||||
connection, this);
|
connection, this);
|
||||||
this->relaySignals(serviceName, connection);
|
this->relaySignals(serviceName, connection);
|
||||||
}
|
}
|
||||||
@@ -111,6 +111,11 @@ namespace BlackCore
|
|||||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("simulatorsWithInitializedModelSet"));
|
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
|
CSimulatorInfo CContextSimulatorProxy::getModelSetLoaderSimulator() const
|
||||||
{
|
{
|
||||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator"));
|
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator"));
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||||
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
virtual BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const override;
|
||||||
|
virtual BlackMisc::CStatusMessageList verifyPrerequisites() const override;
|
||||||
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
virtual BlackMisc::Simulation::CSimulatorInfo getModelSetLoaderSimulator() const override;
|
||||||
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
virtual void setModelSetLoaderSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
|
||||||
virtual QStringList getModelSetStrings() const override;
|
virtual QStringList getModelSetStrings() const override;
|
||||||
|
|||||||
Reference in New Issue
Block a user