Remove ISimulator::getSimulatorInfo()

To provide maximum flexibility, the simulator info is specified by each
plugin in the JSON metadata file.

* Renamed SCimulatorInfo to CSimulatorPluginInfo
* Removed pre-defined simulator infos (UnspecifiedSim, FSX, etc)
* CContextSimulator keeps track of which plugin is loaded and its info
* QSignalMapper keeps track of which listener emitted the simulatorStared() signal
* CSimulatorPluginInfo contains name, simulator name and description
* TODO: GUI part
* TODO: CTestFsCommon
This commit is contained in:
Michał Garapich
2015-03-13 16:24:00 +01:00
committed by Roland Winklmeier
parent 3897fb2d1a
commit 63e48ae332
38 changed files with 620 additions and 475 deletions

View File

@@ -15,7 +15,7 @@
#include "multiplayer_packets.h"
#include "multiplayer_packet_parser.h"
#include "blackcore/interpolator_linear.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/project.h"
#include "blackmisc/logmessage.h"
@@ -47,7 +47,7 @@ namespace BlackSimPlugin
{
CSimulatorFs9::CSimulatorFs9(IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) :
CSimulatorFsCommon(CSimulatorInfo::FS9(), ownAircraftProvider, remoteAircraftProvider, parent)
CSimulatorFsCommon(CSimulatorPluginInfo::FS9(), ownAircraftProvider, remoteAircraftProvider, parent)
{
connect(lobbyClient.data(), &CLobbyClient::disconnected, this, std::bind(&CSimulatorFs9::simulatorStatusChanged, this, 0));
connect(fs9Host.data(), &CFs9Host::customPacketReceived, this, &CSimulatorFs9::ps_processFs9Message);
@@ -339,9 +339,9 @@ namespace BlackSimPlugin
return new CSimulatorFs9(ownAircraftProvider, remoteAircraftProvider, parent);
}
BlackSim::CSimulatorInfo CSimulatorFs9Factory::getSimulatorInfo() const
BlackSim::CSimulatorPluginInfo CSimulatorFs9Factory::getSimulatorInfo() const
{
return CSimulatorInfo::FS9();
return CSimulatorPluginInfo::FS9();
}
BlackCore::ISimulatorListener *CSimulatorFs9Factory::createListener(QObject *parent)

View File

@@ -20,7 +20,7 @@
#include "blackcore/interpolator.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/avaircraft.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include "blackmisc/pixmap.h"
#include <QObject>
#include <QtPlugin>
@@ -130,7 +130,7 @@ namespace BlackSimPlugin
QTimer* m_timer = nullptr;
bool m_lobbyConnected = false;
const BlackSim::CSimulatorInfo m_simulatorInfo = BlackSim::CSimulatorInfo::FS9();
const BlackSim::CSimulatorPluginInfo m_simulatorInfo = BlackSim::CSimulatorPluginInfo::FS9();
};
@@ -153,7 +153,7 @@ namespace BlackSimPlugin
QObject *parent) override;
//! Simulator info
virtual BlackSim::CSimulatorInfo getSimulatorInfo() const override;
virtual BlackSim::CSimulatorPluginInfo getSimulatorInfo() const override;
//! \copydoc BlackCore::ISimulatorFactory::createListener
virtual BlackCore::ISimulatorListener *createListener(QObject *parent = nullptr) override;

View File

@@ -26,7 +26,7 @@ namespace BlackSimPlugin
{
namespace FsCommon
{
CSimulatorFsCommon::CSimulatorFsCommon(const BlackSim::CSimulatorInfo &simInfo, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *renderedAircraftProvider, QObject *parent) :
CSimulatorFsCommon::CSimulatorFsCommon(const BlackSim::CSimulatorPluginInfo &simInfo, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *renderedAircraftProvider, QObject *parent) :
CSimulatorCommon(simInfo, ownAircraftProvider, renderedAircraftProvider, parent),
m_fsuipc(new FsCommon::CFsuipc())
{

View File

@@ -81,7 +81,7 @@ namespace BlackSimPlugin
protected:
//! Constructor
CSimulatorFsCommon(
const BlackSim::CSimulatorInfo &simInfo,
const BlackSim::CSimulatorPluginInfo &simInfo,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider,
QObject *parent = nullptr);

View File

@@ -12,7 +12,7 @@
#include "blacksim/fscommon/bcdconversions.h"
#include "blacksim/fsx/simconnectutilities.h"
#include "blacksim/fsx/fsxsimulatorsetup.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/project.h"
#include "blackmisc/avairportlist.h"
@@ -39,7 +39,7 @@ namespace BlackSimPlugin
namespace Fsx
{
CSimulatorFsx::CSimulatorFsx(IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) :
CSimulatorFsCommon(CSimulatorInfo::FSX(), ownAircraftProvider, remoteAircraftProvider, parent)
CSimulatorFsCommon(CSimulatorPluginInfo::FSX(), ownAircraftProvider, remoteAircraftProvider, parent)
{
Q_ASSERT(ownAircraftProvider);
Q_ASSERT(remoteAircraftProvider);

View File

@@ -17,7 +17,7 @@
#include "../fscommon/simulator_fscommon.h"
#include "blackcore/simulator.h"
#include "blackcore/interpolator_linear.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/avairportlist.h"
@@ -218,7 +218,7 @@ namespace BlackSimPlugin
private:
QTimer* m_timer;
const BlackSim::CSimulatorInfo m_simulatorInfo = BlackSim::CSimulatorInfo::FSX();
const BlackSim::CSimulatorPluginInfo m_simulatorInfo = BlackSim::CSimulatorPluginInfo::FSX();
};
}

View File

@@ -12,7 +12,7 @@
#include "blacksim/fscommon/bcdconversions.h"
#include "blacksim/fsx/simconnectutilities.h"
#include "blacksim/fsx/fsxsimulatorsetup.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include "blackmisc/project.h"
#include "blackmisc/avairportlist.h"
#include "blackmisc/logmessage.h"

View File

@@ -9,7 +9,7 @@
#include "simulator_fsxfactory.h"
#include "simulator_fsx.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include "blackmisc/project.h"
#include <QTimer>
#include <QtConcurrent>
@@ -24,9 +24,9 @@ namespace BlackSimPlugin
return new CSimulatorFsx(ownAircraftProvider, renderedAircraftProvider, parent);
}
BlackSim::CSimulatorInfo CSimulatorFsxFactory::getSimulatorInfo() const
BlackSim::CSimulatorPluginInfo CSimulatorFsxFactory::getSimulatorInfo() const
{
return BlackSim::CSimulatorInfo::FSX();
return BlackSim::CSimulatorPluginInfo::FSX();
}
BlackCore::ISimulatorListener *CSimulatorFsxFactory::createListener(QObject *parent)

View File

@@ -13,7 +13,7 @@
#define BLACKSIMPLUGIN_SIMULATOR_FSXFACTORY_H
#include "blackcore/simulator.h"
#include "blacksim/simulatorinfo.h"
#include "blacksim/simulatorplugininfo.h"
#include <simconnect/SimConnect.h>
#include <QObject>
@@ -39,7 +39,7 @@ namespace BlackSimPlugin
QObject *parent) override;
//! \copydoc BlackCore::ISimulatorFactory::getSimulatorInfo
virtual BlackSim::CSimulatorInfo getSimulatorInfo() const override;
virtual BlackSim::CSimulatorPluginInfo getSimulatorInfo() const override;
//! \copydoc BlackCore::ISimulatorFactory::getListener
virtual BlackCore::ISimulatorListener *createListener(QObject *parent = nullptr) override;

View File

@@ -36,7 +36,7 @@ namespace BlackSimPlugin
{
CSimulatorXPlane::CSimulatorXPlane(IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) :
CSimulatorCommon(CSimulatorInfo::XP(), ownAircraftProvider, remoteAircraftProvider, parent)
CSimulatorCommon(ownAircraftProvider, remoteAircraftProvider, parent)
{
m_watcher = new QDBusServiceWatcher(this);
m_watcher->setWatchMode(QDBusServiceWatcher::WatchForUnregistration);
@@ -458,7 +458,7 @@ namespace BlackSimPlugin
void CSimulatorXPlaneListener::ps_serviceRegistered(const QString &serviceName)
{
if (serviceName == xbusServiceName())
emit simulatorStarted(m_simulatorInfo);
emit simulatorStarted();
}
} // namespace

View File

@@ -194,7 +194,6 @@ namespace BlackSimPlugin
private:
QDBusConnection m_conn { "default" };
QDBusServiceWatcher* m_watcher { nullptr };
const BlackSim::CSimulatorInfo m_simulatorInfo = BlackSim::CSimulatorInfo::XP();
};
@@ -212,10 +211,7 @@ namespace BlackSimPlugin
BlackMisc::Simulation::IRemoteAircraftProvider *renderedAircraftProvider,
QObject *parent) override;
//! \copydoc BlackCore::ISimulatorFactory::getSimulatorInfo
virtual BlackSim::CSimulatorInfo getSimulatorInfo() const override { return BlackSim::CSimulatorInfo::XP(); }
//! \copydoc BlackCore::ISimulatorFactory::getListener
//! \copydoc BlackCore::ISimulatorFactory::createListener
virtual BlackCore::ISimulatorListener *createListener(QObject *parent = nullptr) override { return new CSimulatorXPlaneListener(parent); }
};

View File

@@ -1,4 +1,5 @@
{
"short_name" : "XP",
"full_name" : "X-Plane"
"name" : "swift_generic_xplane",
"simulator" : "X-Plane",
"description" : "X-Plane support via the xbus plugin"
}