mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-23 05:45:35 +08:00
Add initial simulator plugin support for FS2020
This adds simulator plugin support for FS2020. It still pretends to be FSX until full integration is completed.
This commit is contained in:
committed by
Mat Sutcliffe
parent
aa32544b53
commit
3baab2ae4d
@@ -25,7 +25,8 @@
|
|||||||
"fsuipc": true,
|
"fsuipc": true,
|
||||||
"xplane": true,
|
"xplane": true,
|
||||||
"xswiftbus": true,
|
"xswiftbus": true,
|
||||||
"fg": true
|
"fg": true,
|
||||||
|
"fs2020": true
|
||||||
},
|
},
|
||||||
"releaseWithDebugInfo": true,
|
"releaseWithDebugInfo": true,
|
||||||
"profileRelease": false,
|
"profileRelease": false,
|
||||||
|
|||||||
@@ -71,6 +71,38 @@ This plugin acts as the interface between swift and FSX.</detailedDescription>
|
|||||||
</compareText>
|
</compareText>
|
||||||
</shouldPackRuleList>
|
</shouldPackRuleList>
|
||||||
</component>
|
</component>
|
||||||
|
<component>
|
||||||
|
<name>fs2020</name>
|
||||||
|
<description>MS Flight Simulator 2020</description>
|
||||||
|
<canBeEdited>1</canBeEdited>
|
||||||
|
<detailedDescription>MS Flight Simulator 2020 Simulator Plugin
|
||||||
|
This plugin acts as the interface between swift and FS2020.</detailedDescription>
|
||||||
|
<selected>1</selected>
|
||||||
|
<show>1</show>
|
||||||
|
<folderList>
|
||||||
|
<folder>
|
||||||
|
<description>bin/plugins/simulator</description>
|
||||||
|
<destination>${installdir}/bin/plugins/simulator</destination>
|
||||||
|
<name>bin_plugins_simulator</name>
|
||||||
|
<platforms>windows</platforms>
|
||||||
|
<distributionFileList>
|
||||||
|
<distributionFile>
|
||||||
|
<origin>../../dist/bin/plugins/simulator/simulatorfs2020.dll</origin>
|
||||||
|
</distributionFile>
|
||||||
|
</distributionFileList>
|
||||||
|
</folder>
|
||||||
|
</folderList>
|
||||||
|
<shouldPackRuleList>
|
||||||
|
<platformTest>
|
||||||
|
<type>windows</type>
|
||||||
|
</platformTest>
|
||||||
|
<compareText>
|
||||||
|
<logic>equals</logic>
|
||||||
|
<text>${architecture}</text>
|
||||||
|
<value>32</value>
|
||||||
|
</compareText>
|
||||||
|
</shouldPackRuleList>
|
||||||
|
</component>
|
||||||
<component>
|
<component>
|
||||||
<name>p3d</name>
|
<name>p3d</name>
|
||||||
<description>PREPAR3D</description>
|
<description>PREPAR3D</description>
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ win32-g++: CONFIG += separate_debug_info
|
|||||||
################################
|
################################
|
||||||
|
|
||||||
!win32: disableSwiftConfig(sims.p3d)
|
!win32: disableSwiftConfig(sims.p3d)
|
||||||
equals(WORD_SIZE,64)|!win32: disableSwiftConfig(sims.fsx, sims.fs9)
|
equals(WORD_SIZE,64)|!win32: disableSwiftConfig(sims.fsx, sims.fs9, sims.fs2020)
|
||||||
# equals(WORD_SIZE,64):win32-g++: disableSwiftConfig(sims.p3d)
|
# equals(WORD_SIZE,64):win32-g++: disableSwiftConfig(sims.p3d)
|
||||||
|
|
||||||
################################
|
################################
|
||||||
|
|||||||
@@ -84,6 +84,11 @@ namespace BlackMisc
|
|||||||
return getSimulator().testFlag(FG);
|
return getSimulator().testFlag(FG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CSimulatorInfo::isFS2020() const
|
||||||
|
{
|
||||||
|
return getSimulator().testFlag(FS2020);
|
||||||
|
}
|
||||||
|
|
||||||
bool CSimulatorInfo::isAnySimulator() const
|
bool CSimulatorInfo::isAnySimulator() const
|
||||||
{
|
{
|
||||||
return isFSX() || isFS9() || isXPlane() || isP3D() || isFG();
|
return isFSX() || isFS9() || isXPlane() || isP3D() || isFG();
|
||||||
@@ -260,6 +265,7 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
s |= P3D;
|
s |= P3D;
|
||||||
}
|
}
|
||||||
|
if (i.contains("fs2020")) { s |= FS2020; }
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,9 +54,10 @@ namespace BlackMisc
|
|||||||
XPLANE = 1 << 2,
|
XPLANE = 1 << 2,
|
||||||
P3D = 1 << 3,
|
P3D = 1 << 3,
|
||||||
FG = 1 << 4,
|
FG = 1 << 4,
|
||||||
|
FS2020 = 1 << 5,
|
||||||
FSX_P3D = FSX | P3D,
|
FSX_P3D = FSX | P3D,
|
||||||
AllFsFamily = FSX | FS9 | P3D,
|
AllFsFamily = FSX | FS9 | P3D | FS2020,
|
||||||
All = FSX | FS9 | XPLANE | P3D | FG
|
All = FSX | FS9 | XPLANE | P3D | FG | FS2020
|
||||||
};
|
};
|
||||||
Q_DECLARE_FLAGS(Simulator, SimulatorFlag)
|
Q_DECLARE_FLAGS(Simulator, SimulatorFlag)
|
||||||
|
|
||||||
@@ -99,6 +100,9 @@ namespace BlackMisc
|
|||||||
//! FG?
|
//! FG?
|
||||||
bool isFG() const;
|
bool isFG() const;
|
||||||
|
|
||||||
|
//! FS2020?
|
||||||
|
bool isFS2020() const;
|
||||||
|
|
||||||
//! Any simulator?
|
//! Any simulator?
|
||||||
bool isAnySimulator() const;
|
bool isAnySimulator() const;
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,12 @@ namespace BlackMisc
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const QString &CSimulatorPluginInfo::fs2020PluginIdentifier()
|
||||||
|
{
|
||||||
|
static const QString s("org.swift-project.plugins.simulator.fs2020");
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
const QString &CSimulatorPluginInfo::emulatedPluginIdentifier()
|
const QString &CSimulatorPluginInfo::emulatedPluginIdentifier()
|
||||||
{
|
{
|
||||||
static const QString s("org.swift-project.plugins.simulator.emulated");
|
static const QString s("org.swift-project.plugins.simulator.emulated");
|
||||||
@@ -112,7 +118,8 @@ namespace BlackMisc
|
|||||||
xplanePluginIdentifier(),
|
xplanePluginIdentifier(),
|
||||||
fs9PluginIdentifier(),
|
fs9PluginIdentifier(),
|
||||||
emulatedPluginIdentifier(),
|
emulatedPluginIdentifier(),
|
||||||
fgPluginIdentifier()
|
fgPluginIdentifier(),
|
||||||
|
fs2020PluginIdentifier()
|
||||||
});
|
});
|
||||||
return identifiers;
|
return identifiers;
|
||||||
}
|
}
|
||||||
@@ -128,6 +135,7 @@ namespace BlackMisc
|
|||||||
return QStringList
|
return QStringList
|
||||||
{
|
{
|
||||||
fsxPluginIdentifier(),
|
fsxPluginIdentifier(),
|
||||||
|
fs2020PluginIdentifier(),
|
||||||
p3dPluginIdentifier(),
|
p3dPluginIdentifier(),
|
||||||
xplanePluginIdentifier(),
|
xplanePluginIdentifier(),
|
||||||
fgPluginIdentifier()
|
fgPluginIdentifier()
|
||||||
|
|||||||
@@ -85,6 +85,9 @@ namespace BlackMisc
|
|||||||
//! Plugin identifier (FlightGear)
|
//! Plugin identifier (FlightGear)
|
||||||
static const QString &fgPluginIdentifier();
|
static const QString &fgPluginIdentifier();
|
||||||
|
|
||||||
|
//! Plugin identifier (FS2020)
|
||||||
|
static const QString &fs2020PluginIdentifier();
|
||||||
|
|
||||||
//! Plugin identifier (emulated simulator plugin)
|
//! Plugin identifier (emulated simulator plugin)
|
||||||
static const QString &emulatedPluginIdentifier();
|
static const QString &emulatedPluginIdentifier();
|
||||||
|
|
||||||
|
|||||||
30
src/plugins/simulator/fs2020/fs2020.pro
Normal file
30
src/plugins/simulator/fs2020/fs2020.pro
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
load(common_pre)
|
||||||
|
|
||||||
|
QT += core dbus widgets network
|
||||||
|
|
||||||
|
TEMPLATE = lib
|
||||||
|
|
||||||
|
CONFIG += plugin shared
|
||||||
|
CONFIG += blackconfig blackmisc blackcore blackgui
|
||||||
|
CONFIG += simulatorfsxcommon simulatorfscommon simulatorplugincommon simconnect
|
||||||
|
|
||||||
|
DEPENDPATH += . $$SourceRoot/src
|
||||||
|
INCLUDEPATH += . $$SourceRoot/src
|
||||||
|
DESTDIR = $$DestRoot/bin/plugins/simulator
|
||||||
|
|
||||||
|
SOURCES += *.cpp
|
||||||
|
HEADERS += *.h
|
||||||
|
|
||||||
|
REQUIRES += swiftConfig(sims.fs2020)
|
||||||
|
TARGET = simulatorfs2020
|
||||||
|
DISTFILES += simulatorfs2020.json
|
||||||
|
|
||||||
|
win32 {
|
||||||
|
dlltarget.path = $$PREFIX/bin/plugins/simulator
|
||||||
|
INSTALLS += dlltarget
|
||||||
|
} else {
|
||||||
|
target.path = $$PREFIX/bin/plugins/simulator
|
||||||
|
INSTALLS += target
|
||||||
|
}
|
||||||
|
|
||||||
|
load(common_post)
|
||||||
56
src/plugins/simulator/fs2020/simulatorfs2020.cpp
Normal file
56
src/plugins/simulator/fs2020/simulatorfs2020.cpp
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
/* Copyright (C) 2020
|
||||||
|
* swift Project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
||||||
|
* or distributed except according to the terms contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "simulatorfs2020.h"
|
||||||
|
#include "../fsxcommon/simconnectsymbols.h"
|
||||||
|
|
||||||
|
using namespace BlackMisc;
|
||||||
|
using namespace BlackMisc::Aviation;
|
||||||
|
using namespace BlackMisc::PhysicalQuantities;
|
||||||
|
using namespace BlackMisc::Geo;
|
||||||
|
using namespace BlackMisc::Network;
|
||||||
|
using namespace BlackMisc::Simulation;
|
||||||
|
using namespace BlackMisc::Simulation::FsCommon;
|
||||||
|
using namespace BlackMisc::Weather;
|
||||||
|
using namespace BlackCore;
|
||||||
|
|
||||||
|
namespace BlackSimPlugin
|
||||||
|
{
|
||||||
|
namespace Fs2020
|
||||||
|
{
|
||||||
|
CSimulatorFs2020::CSimulatorFs2020(const CSimulatorPluginInfo &info,
|
||||||
|
IOwnAircraftProvider *ownAircraftProvider,
|
||||||
|
IRemoteAircraftProvider *remoteAircraftProvider,
|
||||||
|
IWeatherGridProvider *weatherGridProvider,
|
||||||
|
IClientProvider *clientProvider,
|
||||||
|
QObject *parent) :
|
||||||
|
CSimulatorFsxCommon(info, ownAircraftProvider, remoteAircraftProvider, weatherGridProvider, clientProvider, parent)
|
||||||
|
{
|
||||||
|
this->setDefaultModel(
|
||||||
|
{
|
||||||
|
"Airbus A320 Neo Asobo",
|
||||||
|
CAircraftModel::TypeModelMatchingDefaultModel,
|
||||||
|
"Airbus A320 default model",
|
||||||
|
CAircraftIcaoCode("A320", "L2J")
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CSimulatorFs2020::connectTo()
|
||||||
|
{
|
||||||
|
if (!loadAndResolveFsxSimConnect(true)) { return false; }
|
||||||
|
return CSimulatorFsxCommon::connectTo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimulatorFs2020Listener::startImpl()
|
||||||
|
{
|
||||||
|
if (!loadAndResolveFsxSimConnect(true)) { return; }
|
||||||
|
return CSimulatorFsxCommonListener::startImpl();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ns
|
||||||
|
} // ns
|
||||||
55
src/plugins/simulator/fs2020/simulatorfs2020.h
Normal file
55
src/plugins/simulator/fs2020/simulatorfs2020.h
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/* Copyright (C) 2020
|
||||||
|
* swift Project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
||||||
|
* or distributed except according to the terms contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \file
|
||||||
|
|
||||||
|
#ifndef BLACKSIMPLUGIN_FS2020_SIMULATORFS2020_H
|
||||||
|
#define BLACKSIMPLUGIN_FS2020_SIMULATORFS2020_H
|
||||||
|
|
||||||
|
#include "../fsxcommon/simulatorfsxcommon.h"
|
||||||
|
|
||||||
|
namespace BlackSimPlugin
|
||||||
|
{
|
||||||
|
namespace Fs2020
|
||||||
|
{
|
||||||
|
//! FSX simulator implementation
|
||||||
|
class CSimulatorFs2020 : public BlackSimPlugin::FsxCommon::CSimulatorFsxCommon
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructor, parameters as in \sa BlackCore::ISimulatorFactory::create
|
||||||
|
CSimulatorFs2020(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
|
||||||
|
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
|
||||||
|
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
|
||||||
|
BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
|
||||||
|
BlackMisc::Network::IClientProvider *clientProvider,
|
||||||
|
QObject *parent = nullptr);
|
||||||
|
|
||||||
|
//! \name ISimulator implementations
|
||||||
|
//! @{
|
||||||
|
virtual bool connectTo() override;
|
||||||
|
//! @}
|
||||||
|
};
|
||||||
|
|
||||||
|
//! Listener for FSX
|
||||||
|
class CSimulatorFs2020Listener : public FsxCommon::CSimulatorFsxCommonListener
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructor
|
||||||
|
using CSimulatorFsxCommonListener::CSimulatorFsxCommonListener;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void startImpl() override;
|
||||||
|
};
|
||||||
|
} // ns
|
||||||
|
} // ns
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
6
src/plugins/simulator/fs2020/simulatorfs2020.json
Normal file
6
src/plugins/simulator/fs2020/simulatorfs2020.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"identifier" : "org.swift-project.plugins.simulator.fs2020",
|
||||||
|
"name" : "Flight Simulator 2020",
|
||||||
|
"simulator" : "fsx",
|
||||||
|
"description" : "Microsoft Flight Simulator 2020"
|
||||||
|
}
|
||||||
37
src/plugins/simulator/fs2020/simulatorfs2020factory.cpp
Normal file
37
src/plugins/simulator/fs2020/simulatorfs2020factory.cpp
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/* Copyright (C) 2013
|
||||||
|
* swift Project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
||||||
|
* or distributed except according to the terms contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "simulatorfs2020factory.h"
|
||||||
|
#include "simulatorfs2020.h"
|
||||||
|
#include "blackmisc/simulation/simulatorplugininfo.h"
|
||||||
|
|
||||||
|
using namespace BlackMisc::Network;
|
||||||
|
using namespace BlackMisc::Simulation;
|
||||||
|
using namespace BlackMisc::Weather;
|
||||||
|
using namespace BlackCore;
|
||||||
|
|
||||||
|
namespace BlackSimPlugin
|
||||||
|
{
|
||||||
|
namespace Fs2020
|
||||||
|
{
|
||||||
|
ISimulator *CSimulatorFs2020Factory::create(const CSimulatorPluginInfo &info,
|
||||||
|
IOwnAircraftProvider *ownAircraftProvider,
|
||||||
|
IRemoteAircraftProvider *remoteAircraftProvider,
|
||||||
|
IWeatherGridProvider *weatherGridProvider,
|
||||||
|
IClientProvider *clientProvider)
|
||||||
|
{
|
||||||
|
Q_ASSERT(ownAircraftProvider);
|
||||||
|
return new CSimulatorFs2020(info, ownAircraftProvider, remoteAircraftProvider, weatherGridProvider, clientProvider, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
ISimulatorListener *CSimulatorFs2020Factory::createListener(const CSimulatorPluginInfo &info)
|
||||||
|
{
|
||||||
|
return new CSimulatorFs2020Listener(info);
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
} // namespace
|
||||||
47
src/plugins/simulator/fs2020/simulatorfs2020factory.h
Normal file
47
src/plugins/simulator/fs2020/simulatorfs2020factory.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/* Copyright (C) 2013
|
||||||
|
* swift Project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
|
||||||
|
* or distributed except according to the terms contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \file
|
||||||
|
|
||||||
|
#ifndef BLACKSIMPLUGIN_SIMULATOR_FSXFACTORY_H
|
||||||
|
#define BLACKSIMPLUGIN_SIMULATOR_FSXFACTORY_H
|
||||||
|
|
||||||
|
#include "blackcore/simulator.h"
|
||||||
|
#include "blackmisc/simulation/simulatorplugininfo.h"
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QtPlugin>
|
||||||
|
|
||||||
|
namespace BlackSimPlugin
|
||||||
|
{
|
||||||
|
namespace Fs2020
|
||||||
|
{
|
||||||
|
//! Factory implementation to create CSimulatorFsx instances
|
||||||
|
class CSimulatorFs2020Factory :
|
||||||
|
public QObject,
|
||||||
|
public BlackCore::ISimulatorFactory
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PLUGIN_METADATA(IID "org.swift-project.blackcore.simulatorinterface" FILE "simulatorfs2020.json")
|
||||||
|
Q_INTERFACES(BlackCore::ISimulatorFactory)
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! \copydoc BlackCore::ISimulatorFactory::create
|
||||||
|
virtual BlackCore::ISimulator *create(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
|
||||||
|
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
|
||||||
|
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
|
||||||
|
BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
|
||||||
|
BlackMisc::Network::IClientProvider *clientProvider) override;
|
||||||
|
|
||||||
|
//! \copydoc BlackCore::ISimulatorFactory::createListener
|
||||||
|
virtual BlackCore::ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) override;
|
||||||
|
};
|
||||||
|
} // namespace
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
@@ -2917,6 +2917,11 @@ namespace BlackSimPlugin
|
|||||||
// FSX drivers only works with FSX
|
// FSX drivers only works with FSX
|
||||||
return connectedSimName.contains("fsx") || connectedSimName.contains("microsoft") || connectedSimName.contains("simulator x");
|
return connectedSimName.contains("fsx") || connectedSimName.contains("microsoft") || connectedSimName.contains("simulator x");
|
||||||
}
|
}
|
||||||
|
else if (pluginSim.isFS2020())
|
||||||
|
{
|
||||||
|
// FS2020 drivers only works with FS2020
|
||||||
|
return connectedSimName.contains("kittyhawk");
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,4 +34,7 @@ swiftConfig(sims.fg) {
|
|||||||
SUBDIRS += flightgear
|
SUBDIRS += flightgear
|
||||||
SUBDIRS += flightgearconfig
|
SUBDIRS += flightgearconfig
|
||||||
}
|
}
|
||||||
|
swiftConfig(sims.fs2020) {
|
||||||
|
SUBDIRS += fs2020
|
||||||
|
}
|
||||||
load(common_post)
|
load(common_post)
|
||||||
|
|||||||
Reference in New Issue
Block a user