From 2f7e119837257d9251096ec6405257beaa723b65 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 3 Mar 2018 17:20:09 +0100 Subject: [PATCH] Ref T259, Ref T243 utility functions parts/engine list --- src/blackmisc/aviation/aircraftenginelist.cpp | 22 +++++++++++++++---- src/blackmisc/aviation/aircraftenginelist.h | 6 +++++ src/blackmisc/aviation/aircraftparts.cpp | 12 +++++----- src/blackmisc/aviation/aircraftparts.h | 14 +++++++++--- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/blackmisc/aviation/aircraftenginelist.cpp b/src/blackmisc/aviation/aircraftenginelist.cpp index 7d05e0f7b..258bdee96 100644 --- a/src/blackmisc/aviation/aircraftenginelist.cpp +++ b/src/blackmisc/aviation/aircraftenginelist.cpp @@ -34,15 +34,29 @@ namespace BlackMisc CAircraftEngine CAircraftEngineList::getEngine(int engineNumber) const { - Q_ASSERT(engineNumber >= 0); + Q_ASSERT(engineNumber > 0); return this->findBy(&CAircraftEngine::getNumber, engineNumber).frontOrDefault(); } bool CAircraftEngineList::isEngineOn(int engineNumber) const { + Q_ASSERT(engineNumber > 0); return this->getEngine(engineNumber).isOn(); } + void CAircraftEngineList::setEngineOn(int engineNumber, bool on) + { + Q_ASSERT(engineNumber > 0); + for (CAircraftEngine &engine : *this) + { + if (engine.getNumber() == engineNumber) + { + engine.setOn(on); + break; + } + } + } + void CAircraftEngineList::initEngines(int engineNumber, bool on) { this->clear(); @@ -64,7 +78,7 @@ namespace BlackMisc for (const auto &e : *this) { - QJsonObject value = e.toJson(); + const QJsonObject value = e.toJson(); map.insert(QString::number(e.getNumber()), value); } return map; @@ -72,11 +86,11 @@ namespace BlackMisc void CAircraftEngineList::convertFromJson(const QJsonObject &json) { - clear(); + this->clear(); for (const auto &e : json.keys()) { CAircraftEngine engine; - int number = e.toInt(); + const int number = e.toInt(); CJsonScope scope(e); Q_UNUSED(scope); engine.convertFromJson(json.value(e).toObject()); diff --git a/src/blackmisc/aviation/aircraftenginelist.h b/src/blackmisc/aviation/aircraftenginelist.h index 6eacf9226..eb83e11f4 100644 --- a/src/blackmisc/aviation/aircraftenginelist.h +++ b/src/blackmisc/aviation/aircraftenginelist.h @@ -48,11 +48,17 @@ namespace BlackMisc CAircraftEngineList(const CSequence &other); //! Get engine 1..n + //! \remark 1 based, not 0 based CAircraftEngine getEngine(int engineNumber) const; //! Engine number 1..x on? + //! \remark 1 based, not 0 based bool isEngineOn(int engineNumber) const; + //! Set engine on/off + //! \remark 1 based, not 0 based + void setEngineOn(int engineNumber, bool on); + //! Init some engines void initEngines(int engineNumber, bool on); diff --git a/src/blackmisc/aviation/aircraftparts.cpp b/src/blackmisc/aviation/aircraftparts.cpp index d683283f6..a589b00a0 100644 --- a/src/blackmisc/aviation/aircraftparts.cpp +++ b/src/blackmisc/aviation/aircraftparts.cpp @@ -23,12 +23,12 @@ namespace BlackMisc QString CAircraftParts::convertToQString(bool i18n) const { return QStringLiteral("ts: ") % this->getFormattedTimestampAndOffset(true) % - QStringLiteral(" lights: ") % m_lights.toQString(i18n) % - QStringLiteral(" gear down: ") % BlackMisc::boolToYesNo(m_gearDown) % - QStringLiteral(" flaps pct: ") % QString::number(m_flapsPercentage) % - QStringLiteral(" spoilers out: ") % BlackMisc::boolToYesNo(m_spoilersOut) % - QStringLiteral(" engines on: ") % m_engines.toQString(i18n) % - QStringLiteral(" on ground: ") % BlackMisc::boolToYesNo(m_isOnGround); + QStringLiteral(" on ground: ") % BlackMisc::boolToYesNo(m_isOnGround) % + QStringLiteral(" | lights: ") % m_lights.toQString(i18n) % + QStringLiteral(" | gear down: ") % BlackMisc::boolToYesNo(m_gearDown) % + QStringLiteral(" | flaps pct: ") % QString::number(m_flapsPercentage) % + QStringLiteral(" | spoilers out: ") % BlackMisc::boolToYesNo(m_spoilersOut) % + QStringLiteral(" | engines on: ") % m_engines.toQString(i18n); } QJsonObject CAircraftParts::toIncrementalJson() const diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index 6e6e66fc6..4657db045 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -68,6 +68,9 @@ namespace BlackMisc //! Get aircraft lights CAircraftLights getLights() const { return m_lights; } + //! Reference to lights, meant wor easy direct changes of the values + CAircraftLights &lights() { return m_lights; } + //! Set aircraft lights void setLights(const CAircraftLights &lights) { m_lights = lights; } @@ -98,6 +101,9 @@ namespace BlackMisc //! Get engines CAircraftEngineList getEngines() const { return m_engines; } + //! Direct access to engines, meant for simple value modifications + CAircraftEngineList &engines() { return m_engines; } + //! Engine with number CAircraftEngine getEngine(int number) const; @@ -120,9 +126,11 @@ namespace BlackMisc void setOnGround(bool onGround) { m_isOnGround = onGround; } //! Is aircraft on ground? (Smoothly interpolated between 0 and 1.) + //! \remark 1..on ground 0..not on ground double isOnGroundInterpolated() const; //! Set aircraft on ground. (Smoothly interpolated between 0 and 1.) + //! \remark 1..on ground 0..not on ground void setOnGroundInterpolated(double onGround) { m_isOnGroundInterpolated = onGround; } //! \copydoc BlackMisc::Mixin::String::toQString @@ -135,9 +143,9 @@ namespace BlackMisc CAircraftLights m_lights; CAircraftEngineList m_engines; int m_flapsPercentage = 0; - bool m_gearDown = false; - bool m_spoilersOut = false; - bool m_isOnGround = false; + bool m_gearDown = false; + bool m_spoilersOut = false; + bool m_isOnGround = false; double m_isOnGroundInterpolated = -1; BLACK_METACLASS(