Ref T335, misc improvements in value objects

* allow to reset PBH for terrain probe
* check for null altitude before converting
* function isTerrainProbe for model/aircraft
This commit is contained in:
Klaus Basan
2018-09-06 08:49:40 +02:00
committed by Roland Winklmeier
parent 916f2f6180
commit 651ead5b51
6 changed files with 24 additions and 3 deletions

View File

@@ -979,6 +979,15 @@ namespace BlackMisc
m_pressureAltitude = altitude; m_pressureAltitude = altitude;
} }
void CAircraftSituation::setZeroPBH()
{
static const CAngle za(0, CAngleUnit::deg());
static const CHeading zh(za, CHeading::True);
this->setPitch(za);
this->setBank(za);
this->setHeading(zh);
}
QString CAircraftSituation::getPBHInfo() const QString CAircraftSituation::getPBHInfo() const
{ {
static const QString pbh("P: %1 %2 B: %3 %4 H: %5 %6"); static const QString pbh("P: %1 %2 B: %3 %4 H: %5 %6");

View File

@@ -413,6 +413,9 @@ namespace BlackMisc
//! Set bank (angle) //! Set bank (angle)
void setBank(const PhysicalQuantities::CAngle &bank) { m_bank = bank; } void setBank(const PhysicalQuantities::CAngle &bank) { m_bank = bank; }
//! Set PBH values to 0 (zero)
void setZeroPBH();
//! Get PBH info (all together) //! Get PBH info (all together)
QString getPBHInfo() const; QString getPBHInfo() const;

View File

@@ -101,6 +101,7 @@ namespace BlackMisc
void CAltitude::convertToPressureAltitude(const CPressure &seaLevelPressure) void CAltitude::convertToPressureAltitude(const CPressure &seaLevelPressure)
{ {
if (m_altitudeType == PressureAltitude) { return; } if (m_altitudeType == PressureAltitude) { return; }
if (this->isNull()) { return; }
const CPressure deltaPressure = standardISASeaLevelPressure() - seaLevelPressure; const CPressure deltaPressure = standardISASeaLevelPressure() - seaLevelPressure;
const double deltaPressureV = deltaPressure.value(CPressureUnit::mbar()); const double deltaPressureV = deltaPressure.value(CPressureUnit::mbar());
const double deltaAltitudeV = deltaPressureV * 30.0; // 30.0 ft per mbar const double deltaAltitudeV = deltaPressureV * 30.0; // 30.0 ft per mbar
@@ -111,6 +112,8 @@ namespace BlackMisc
CAltitude CAltitude::toPressureAltitude(const CPressure &seaLevelPressure) const CAltitude CAltitude::toPressureAltitude(const CPressure &seaLevelPressure) const
{ {
if (seaLevelPressure.isNull()) { return CAltitude::null(); }
if (this->isNull()) { return CAltitude::null(); }
CAltitude other(*this); CAltitude other(*this);
other.convertToPressureAltitude(seaLevelPressure); other.convertToPressureAltitude(seaLevelPressure);
return other; return other;

View File

@@ -277,6 +277,9 @@ namespace BlackMisc
//! Model type //! Model type
ModelType getModelType() const { return m_modelType; } ModelType getModelType() const { return m_modelType; }
//! Terrain probe?
bool isTerrainProbe() const { return m_modelType == TypeTerrainProbe; }
//! Model type //! Model type
const QString &getModelTypeAsString() const { return modelTypeToString(getModelType()); } const QString &getModelTypeAsString() const { return modelTypeToString(getModelType()); }

View File

@@ -40,7 +40,7 @@ namespace BlackMisc
CSimulatedAircraft::CSimulatedAircraft(const CCallsign &callsign, const CUser &user, const CAircraftSituation &situation) : CSimulatedAircraft::CSimulatedAircraft(const CCallsign &callsign, const CUser &user, const CAircraftSituation &situation) :
m_callsign(callsign), m_pilot(user), m_situation(situation) m_callsign(callsign), m_pilot(user), m_situation(situation)
{ {
init(); this->init();
} }
CSimulatedAircraft::CSimulatedAircraft(const CCallsign &callsign, const CAircraftModel &model, const CUser &user, const CAircraftSituation &situation) : CSimulatedAircraft::CSimulatedAircraft(const CCallsign &callsign, const CAircraftModel &model, const CUser &user, const CAircraftSituation &situation) :
@@ -158,7 +158,7 @@ namespace BlackMisc
if (this->getLivery().getAirlineIcaoCode() != airlineIcaoCode) if (this->getLivery().getAirlineIcaoCode() != airlineIcaoCode)
{ {
// create a dummy livery for given ICAO code // create a dummy livery for given ICAO code
CLivery newLivery(CLivery::getStandardCode(airlineIcaoCode), airlineIcaoCode, "Standard auto generated"); const CLivery newLivery(CLivery::getStandardCode(airlineIcaoCode), airlineIcaoCode, "Standard auto generated");
m_models[CurrentModel].setLivery(newLivery); m_models[CurrentModel].setLivery(newLivery);
} }
return m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode); return m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode);
@@ -171,7 +171,7 @@ namespace BlackMisc
const QString &CSimulatedAircraft::getAirlineIcaoCodeDesignator() const const QString &CSimulatedAircraft::getAirlineIcaoCodeDesignator() const
{ {
return getAirlineIcaoCode().getDesignator(); return this->getAirlineIcaoCode().getDesignator();
} }
void CSimulatedAircraft::setAircraftIcaoDesignator(const QString &designator) void CSimulatedAircraft::setAircraftIcaoDesignator(const QString &designator)

View File

@@ -357,6 +357,9 @@ namespace BlackMisc
//! Get model (model used for mapping) //! Get model (model used for mapping)
const Simulation::CAircraftModel &getModel() const { return m_models[CurrentModel]; } const Simulation::CAircraftModel &getModel() const { return m_models[CurrentModel]; }
//! Terrain probe?
bool isTerrainProbe() const { return this->getModel().isTerrainProbe(); }
//! Get network model //! Get network model
const Simulation::CAircraftModel &getNetworkModel() const { return m_models[NetworkModel]; } const Simulation::CAircraftModel &getNetworkModel() const { return m_models[NetworkModel]; }