diff --git a/src/blackmisc/simulation/simulatorinfo.cpp b/src/blackmisc/simulation/simulatorinfo.cpp index fa912ae9c..61dfd14b8 100644 --- a/src/blackmisc/simulation/simulatorinfo.cpp +++ b/src/blackmisc/simulation/simulatorinfo.cpp @@ -220,6 +220,16 @@ namespace BlackMisc return e; } + CStatusMessage CSimulatorInfo::validateSimulatorsForModel() const + { + CStatusMessage m(this); + if (!this->isAnySimulator()) { return m.validationError(u"No simulator"); } + if (this->isMicrosoftOrPrepare3DSimulator() && this->isXPlane()) { return m.validationError(u"Cannot combine XPlane and FS simulators"); } + if (this->isMicrosoftOrPrepare3DSimulator() && this->isFG()) { return m.validationError(u"Cannot combine FG and FS simulators"); } + if (this->isXPlane() && this->isFG()) { return m.validationError(u"Cannot combine FG and XPlane simulators"); } + return m.info(u"Simulators OK for model"); + } + CSimulatorInfo::Simulator CSimulatorInfo::boolToFlag(bool fsx, bool fs9, bool xp, bool p3d, bool fg) { Simulator s = fsx ? FSX : None; diff --git a/src/blackmisc/simulation/simulatorinfo.h b/src/blackmisc/simulation/simulatorinfo.h index 16e9e8192..7818aa460 100644 --- a/src/blackmisc/simulation/simulatorinfo.h +++ b/src/blackmisc/simulation/simulatorinfo.h @@ -11,10 +11,11 @@ #ifndef BLACKMISC_SIMULATION_SIMULATORINFO_H #define BLACKMISC_SIMULATION_SIMULATORINFO_H -#include "blackmisc/blackmiscexport.h" +#include "blackmisc/statusmessage.h" #include "blackmisc/metaclass.h" #include "blackmisc/propertyindex.h" #include "blackmisc/valueobject.h" +#include "blackmisc/blackmiscexport.h" #include #include @@ -167,6 +168,9 @@ namespace BlackMisc //! To plugin indentifier, empty string if not single simulator const QString &toPluginIdentifier() const; + //! Validate simulators for an aircraft model + CStatusMessage validateSimulatorsForModel() const; + //! Bool flags to enum static Simulator boolToFlag(bool isFSX, bool isFS9, bool xp, bool isP3D, bool fg);