diff --git a/src/blacksim/blacksimfreefunctions.cpp b/src/blacksim/blacksimfreefunctions.cpp index 72e142c78..5e418e426 100644 --- a/src/blacksim/blacksimfreefunctions.cpp +++ b/src/blacksim/blacksimfreefunctions.cpp @@ -1,13 +1,15 @@ #include "blacksimfreefunctions.h" +#include "fsx/simconnectutilities.h" #include "fscommon/aircraftcfgentrieslist.h" #include "fscommon/aircraftmappinglist.h" -#include "fsx/simconnectutilities.h" +#include "simulatorinfo.h" namespace BlackSim { void registerMetadata() { + BlackSim::CSimulatorInfo::registerMetadata(); BlackSim::FsCommon::CAircraftCfgEntries::registerMetadata(); BlackSim::FsCommon::CAircraftMapping::registerMetadata(); BlackSim::FsCommon::CAircraftCfgEntriesList::registerMetadata(); diff --git a/src/blacksim/fsx/fsxsimulatorsetup.cpp b/src/blacksim/fsx/fsxsimulatorsetup.cpp new file mode 100644 index 000000000..74d7a8a2e --- /dev/null +++ b/src/blacksim/fsx/fsxsimulatorsetup.cpp @@ -0,0 +1,14 @@ +#include "fsxsimulatorsetup.h" +#include "../fsx/simconnectutilities.h" + +namespace BlackSim +{ + namespace Fsx + { + void CFsxSimulatorSetup::init() + { + CSimulatorSetup::init(); + this->m_setup.addValue(SetupSimConnectCfgFile, CSimConnectUtilities::getLocalSimConnectCfgFilename()); + } + } +} diff --git a/src/blacksim/fsx/fsxsimulatorsetup.h b/src/blacksim/fsx/fsxsimulatorsetup.h new file mode 100644 index 000000000..4e5ed55e5 --- /dev/null +++ b/src/blacksim/fsx/fsxsimulatorsetup.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2013 VATSIM Community / contributors + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BLACKSIM_FSX_SIMSETUP_H +#define BLACKSIM_FSX_SIMSETUP_H + +#include "../simulatorsetup.h" +#include + +namespace BlackSim +{ + namespace Fsx + { + + /*! + * \brief Simulator settings for FSX Flight sims + */ + class CFsxSimulatorSetup : public BlackSim::CSimulatorSetup + { + + public: + + enum + { + SetupSimConnectCfgFile = 1000 + }; + + + //! Default constructor + CFsxSimulatorSetup() : BlackSim::CSimulatorSetup() {} + + //! Constructor + CFsxSimulatorSetup(const BlackMisc::CIndexVariantMap &map) : BlackSim::CSimulatorSetup(map) {} + + //! Init, to be used where FSX runs + void init(); + }; + } // namespace +} // namespace + +#endif // guard diff --git a/src/blacksim/fsx/simulator_fsx.cpp b/src/blacksim/fsx/simulator_fsx.cpp index c84f61dbb..dc0f003ca 100644 --- a/src/blacksim/fsx/simulator_fsx.cpp +++ b/src/blacksim/fsx/simulator_fsx.cpp @@ -27,8 +27,12 @@ namespace BlackSimPlugin m_isConnected(false), m_simRunning(false), m_hSimConnect(nullptr), - m_nextObjID(1) + m_nextObjID(1), + m_simulatorInfo(CSimulatorInfo::FSX()) { + CFsxSimulatorSetup setup; + setup.init(); // this fetches important setting on local side + this->m_simulatorInfo.setSimulatorSetup(setup.getSettings()); QTimer::singleShot(5000, this, SLOT(checkConnection())); } @@ -81,6 +85,11 @@ namespace BlackSimPlugin // TODO } + CSimulatorInfo CSimulatorFSX::getSimulatorInfo() const + { + return this->m_simulatorInfo; + } + void CALLBACK CSimulatorFSX::SimConnectProc(SIMCONNECT_RECV *pData, DWORD /* cbData */, void *pContext) { CSimulatorFSX *simulatorFsx = static_cast(pContext); diff --git a/src/blacksim/simulatorinfo.cpp b/src/blacksim/simulatorinfo.cpp index 1c61fbb46..02ec0858c 100644 --- a/src/blacksim/simulatorinfo.cpp +++ b/src/blacksim/simulatorinfo.cpp @@ -5,7 +5,6 @@ using namespace BlackMisc; namespace BlackSim { - CSimulatorInfo::CSimulatorInfo(const QString &shortname, const QString &fullname) : m_fullname(fullname), m_shortname(shortname) { } @@ -17,6 +16,23 @@ namespace BlackSim return qHash(TupleConverter::toTuple(*this)); } + QVariant CSimulatorInfo::getSimulatorSetupValue(int index) const + { + return this->m_simsetup.value(index); + } + + QString CSimulatorInfo::getSimulatorSetupValueAsString(int index) const + { + QVariant qv = getSimulatorSetupValue(index); + Q_ASSERT(qv.canConvert()); + return qv.toString(); + } + + void CSimulatorInfo::setSimulatorSetup(const BlackMisc::CIndexVariantMap &setup) + { + this->m_simsetup = setup; + } + QString CSimulatorInfo::convertToQString(bool i18n) const { Q_UNUSED(i18n); diff --git a/src/blacksim/simulatorinfo.h b/src/blacksim/simulatorinfo.h index 5bf9d7526..ccc95f42e 100644 --- a/src/blacksim/simulatorinfo.h +++ b/src/blacksim/simulatorinfo.h @@ -1,11 +1,11 @@ #ifndef BLACKSIM_SIMULATORINFO_H #define BLACKSIM_SIMULATORINFO_H +#include "blackmisc/indexvariantmap.h" #include "blackmisc/valueobject.h" namespace BlackSim { - //! \brief Describing a simulator class CSimulatorInfo : public BlackMisc::CValueObject { @@ -34,6 +34,15 @@ namespace BlackSim //! \copydoc CValueObject::getValueHash() virtual uint getValueHash() const override; + //! Single setting value + QVariant getSimulatorSetupValue(int index) const; + + //! Single setting value + QString getSimulatorSetupValueAsString(int index) const; + + //! Set single settings + void setSimulatorSetup(const BlackMisc::CIndexVariantMap &setup); + //! \brief Simulator is FS9 - Microsoft Flight Simulator 2004 static const CSimulatorInfo &FS9() { @@ -85,10 +94,11 @@ namespace BlackSim BLACK_ENABLE_TUPLE_CONVERSION(CSimulatorInfo) QString m_fullname; QString m_shortname; + BlackMisc::CIndexVariantMap m_simsetup; //!< allows to access simulator keys requried on remote side }; } -BLACK_DECLARE_TUPLE_CONVERSION(BlackSim::CSimulatorInfo, (o.m_fullname, o.m_shortname)) +BLACK_DECLARE_TUPLE_CONVERSION(BlackSim::CSimulatorInfo, (o.m_fullname, o.m_shortname, o.m_simsetup)) Q_DECLARE_METATYPE(BlackSim::CSimulatorInfo) #endif // guard diff --git a/src/blacksim/simulatorsetup.cpp b/src/blacksim/simulatorsetup.cpp new file mode 100644 index 000000000..abb93775a --- /dev/null +++ b/src/blacksim/simulatorsetup.cpp @@ -0,0 +1,14 @@ +#include "simulatorsetup.h" + +namespace BlackSim +{ + void CSimulatorSetup::setSettings(const BlackMisc::CIndexVariantMap &map) + { + this->m_setup = map; + } + + void CSimulatorSetup::init() + { + // void + } +} diff --git a/src/blacksim/simulatorsetup.h b/src/blacksim/simulatorsetup.h new file mode 100644 index 000000000..b1c58d26f --- /dev/null +++ b/src/blacksim/simulatorsetup.h @@ -0,0 +1,49 @@ +/* Copyright (C) 2013 VATSIM Community / contributors + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef BLACKSIM_SIMSETUP_H +#define BLACKSIM_SIMSETUP_H + +#include "blackmisc/indexvariantmap.h" +#include +#include + +namespace BlackSim +{ + /*! + * \brief Simulator settings for MS Flight sims + */ + class CSimulatorSetup + { + protected: + BlackMisc::CIndexVariantMap m_setup; //!< values describing the simulator setup (path, config files) + + protected: + //! Default constructor + CSimulatorSetup() {} + + //! Constructor + CSimulatorSetup(const BlackMisc::CIndexVariantMap &map) : m_setup(map) {} + + public: + + enum + { + SetupSimPath + }; + + //! Settings + BlackMisc::CIndexVariantMap getSettings() const { return this->m_setup;} + + //! Settings + void setSettings(const BlackMisc::CIndexVariantMap &map); + + //! Init, to be used where simulator runs + void init(); + + }; +} // namespace + +#endif // guard