diff --git a/src/blackcore/simulatorcommon.cpp b/src/blackcore/simulatorcommon.cpp index a15c678b9..c82013f1a 100644 --- a/src/blackcore/simulatorcommon.cpp +++ b/src/blackcore/simulatorcommon.cpp @@ -135,6 +135,7 @@ namespace BlackCore void CSimulatorCommon::blinkHighlightedAircraft() { if (m_highlightedAircraft.isEmpty() || m_highlightEndTimeMsEpoch < 1) { return; } + if (this->isShuttingDown()) { return; } m_blinkCycle = !m_blinkCycle; if (QDateTime::currentMSecsSinceEpoch() > m_highlightEndTimeMsEpoch) @@ -404,9 +405,30 @@ namespace BlackCore return r; } + bool CSimulatorCommon::changeRemoteAircraftEnabled(const CSimulatedAircraft &aircraft) + { + if (this->isShuttingDown()) { return false; } + return aircraft.isEnabled() ? + this->physicallyAddRemoteAircraft(aircraft) : + this->physicallyRemoveRemoteAircraft(aircraft.getCallsign()); + } + + bool CSimulatorCommon::changeRemoteAircraftModel(const CSimulatedAircraft &aircraft) + { + // we expect the new model "in aircraft" + // remove upfront, and then enable / disable again + if (this->isShuttingDown()) { return false; } + const CCallsign callsign = aircraft.getCallsign(); + if (!this->isPhysicallyRenderedAircraft(callsign)) { return false; } + this->physicallyRemoveRemoteAircraft(callsign); + return this->changeRemoteAircraftEnabled(aircraft); + } + bool CSimulatorCommon::parseCommandLine(const QString &commandLine, const CIdentifier &originator) { if (this->isMyIdentifier(originator)) { return false; } + if (this->isShuttingDown()) { return false; } + if (commandLine.isEmpty()) { return false; } CSimpleCommandParser parser({ ".plugin", ".drv", ".driver" }); parser.parse(commandLine); diff --git a/src/blackcore/simulatorcommon.h b/src/blackcore/simulatorcommon.h index 58b2a3515..7087cdf9d 100644 --- a/src/blackcore/simulatorcommon.h +++ b/src/blackcore/simulatorcommon.h @@ -84,6 +84,8 @@ namespace BlackCore virtual BlackMisc::Aviation::CCallsignSet renderedDisabledAircraft() const override; virtual int physicallyRemoveMultipleRemoteAircraft(const BlackMisc::Aviation::CCallsignSet &callsigns) override; virtual int physicallyRemoveAllRemoteAircraft() override; + virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; + virtual bool changeRemoteAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; virtual void clearAllRemoteAircraftData() override; virtual BlackMisc::CStatusMessageList debugVerifyStateAfterAllAircraftRemoved() const override; diff --git a/src/plugins/simulator/emulated/simulatoremulated.cpp b/src/plugins/simulator/emulated/simulatoremulated.cpp index 4fd0b93fc..702d23667 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.cpp +++ b/src/plugins/simulator/emulated/simulatoremulated.cpp @@ -106,19 +106,14 @@ namespace BlackSimPlugin bool CSimulatorEmulated::changeRemoteAircraftModel(const CSimulatedAircraft &aircraft) { - if (canLog()) m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraft.toQString()); - return true; + if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraft.toQString()); } + return CSimulatorCommon::changeRemoteAircraftEnabled(aircraft); } bool CSimulatorEmulated::changeRemoteAircraftEnabled(const CSimulatedAircraft &aircraft) { - if (canLog()) m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraft.toQString()); - const int c = m_renderedAircraft.setEnabled(aircraft.getCallsign(), aircraft.isEnabled(), true); // my own simulator list - const CCallsign cs = aircraft.getCallsign(); - const bool rendered = aircraft.isEnabled(); - this->updateAircraftRendered(cs, rendered); // in provider - emit this->aircraftRenderingChanged(m_renderedAircraft.findFirstByCallsign(aircraft.getCallsign(), aircraft)); - return c > 0; + if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraft.toQString()); } + return CSimulatorCommon::changeRemoteAircraftEnabled(aircraft); } bool CSimulatorEmulated::updateOwnSimulatorCockpit(const CSimulatedAircraft &aircraft, const CIdentifier &originator) diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.cpp b/src/plugins/simulator/fscommon/simulatorfscommon.cpp index 934fbe93b..fb80a7370 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.cpp +++ b/src/plugins/simulator/fscommon/simulatorfscommon.cpp @@ -126,22 +126,6 @@ namespace BlackSimPlugin return CSimulatorCommon::getAirportsInRange(); } - bool CSimulatorFsCommon::changeRemoteAircraftModel(const CSimulatedAircraft &aircraft) - { - // remove upfront, and then enable / disable again - const CCallsign callsign = aircraft.getCallsign(); - if (!this->isPhysicallyRenderedAircraft(callsign)) { return false; } - this->physicallyRemoveRemoteAircraft(callsign); - return this->changeRemoteAircraftEnabled(aircraft); - } - - bool CSimulatorFsCommon::changeRemoteAircraftEnabled(const CSimulatedAircraft &aircraft) - { - return aircraft.isEnabled() ? - this->physicallyAddRemoteAircraft(aircraft) : - this->physicallyRemoveRemoteAircraft(aircraft.getCallsign()); - } - void CSimulatorFsCommon::onSwiftDbAirportsRead() { const CAirportList webServiceAirports = this->getWebServiceAirports(); diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.h b/src/plugins/simulator/fscommon/simulatorfscommon.h index a21984dc1..775acba6f 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.h +++ b/src/plugins/simulator/fscommon/simulatorfscommon.h @@ -44,8 +44,6 @@ namespace BlackSimPlugin virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override; virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override; virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override; - virtual bool changeRemoteAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; - virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; // ---------------------- ISimulator ------------------ protected: diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index f129d2fe6..3a2072aad 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -577,28 +577,6 @@ namespace BlackSimPlugin return this->getAircraftInRange().findByRendered(true).getCallsigns(); // just a poor workaround } - bool CSimulatorXPlane::changeRemoteAircraftModel(const CSimulatedAircraft &aircraft) - { - // remove upfront, and then enable / disable again - auto callsign = aircraft.getCallsign(); - if (!this->isPhysicallyRenderedAircraft(callsign)) { return false; } - this->physicallyRemoveRemoteAircraft(callsign); - return this->changeRemoteAircraftEnabled(aircraft); - } - - bool CSimulatorXPlane::changeRemoteAircraftEnabled(const CSimulatedAircraft &aircraft) - { - if (aircraft.isEnabled()) - { - this->physicallyAddRemoteAircraft(aircraft); - } - else - { - this->physicallyRemoveRemoteAircraft(aircraft.getCallsign()); - } - return true; - } - bool CSimulatorXPlane::followAircraft(const CCallsign &callsign) { if (! m_trafficProxy || ! m_trafficProxy->isValid()) { return false; } diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index 23bdde3c2..091ddcb3a 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -122,8 +122,6 @@ namespace BlackSimPlugin virtual bool isTimeSynchronized() const override { return false; } // TODO: Can we query the XP intrinisc feature? virtual bool connectTo() override; virtual bool disconnectFrom() override; - virtual bool changeRemoteAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; - virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; virtual bool updateOwnSimulatorCockpit(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) override; virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override; virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;