Ref T259, Ref T243 improved utility functions so parts can be guessed in interpolator

* engine count
* aligned naming to "getEnginesCount"
* formatting
This commit is contained in:
Klaus Basan
2018-04-06 00:30:52 +02:00
committed by Roland Winklmeier
parent c3f05ea1cd
commit e3d17859a0
10 changed files with 150 additions and 90 deletions

View File

@@ -169,6 +169,9 @@ namespace BlackMisc
//! Aircraft ICAO code
const Aviation::CAircraftIcaoCode &getAircraftIcaoCode() const { return m_aircraftIcao; }
//! \copydoc BlackMisc::Aviation::CAircraftIcaoCode::getEngineCount
int getEngineCount() const { return m_aircraftIcao.getEnginesCount(); }
//! Aircraft ICAO code designator
const QString &getAircraftIcaoCodeDesignator() const { return m_aircraftIcao.getDesignator(); }

View File

@@ -31,7 +31,7 @@ namespace BlackMisc
init();
}
CSimulatedAircraft::CSimulatedAircraft(const CAircraftModel &model) : m_models( {model, model})
CSimulatedAircraft::CSimulatedAircraft(const CAircraftModel &model) : m_models({model, model})
{
this->setCallsign(model.getCallsign());
init();
@@ -226,10 +226,16 @@ namespace BlackMisc
void CSimulatedAircraft::initTransponder()
{
CTransponder xpdr(7000, CTransponder::StateStandby);
const CTransponder xpdr(7000, CTransponder::StateStandby);
this->setTransponder(xpdr);
}
int CSimulatedAircraft::getEnginesCount() const
{
const int engines = this->getModel().getAircraftIcaoCode().getEnginesCount();
return engines >= 0 ? engines : m_parts.getEnginesCount();
}
CAircraftLights CSimulatedAircraft::getLights() const
{
return m_parts.getLights();

View File

@@ -61,13 +61,13 @@ namespace BlackMisc
//! Comprehensive information of an aircraft
class BLACKMISC_EXPORT CSimulatedAircraft :
public CValueObject<CSimulatedAircraft>,
public BlackMisc::Geo::ICoordinateWithRelativePosition
public Geo::ICoordinateWithRelativePosition
{
public:
//! Properties by index
enum ColumnIndex
{
IndexCallsign = BlackMisc::CPropertyIndex::GlobalIndexCSimulatedAircraft,
IndexCallsign = CPropertyIndex::GlobalIndexCSimulatedAircraft,
IndexPilot,
IndexRelativeDistance,
IndexCom1System,
@@ -95,28 +95,28 @@ namespace BlackMisc
CSimulatedAircraft();
//! Constructor.
explicit CSimulatedAircraft(const BlackMisc::Simulation::CAircraftModel &model);
explicit CSimulatedAircraft(const CAircraftModel &model);
//! Constructor.
CSimulatedAircraft(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Network::CUser &user, const BlackMisc::Aviation::CAircraftSituation &situation);
CSimulatedAircraft(const Aviation::CCallsign &callsign, const Network::CUser &user, const Aviation::CAircraftSituation &situation);
//! Constructor.
CSimulatedAircraft(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::Network::CUser &user, const BlackMisc::Aviation::CAircraftSituation &situation);
CSimulatedAircraft(const Aviation::CCallsign &callsign, const CAircraftModel &model, const Network::CUser &user, const Aviation::CAircraftSituation &situation);
//! Get callsign.
const BlackMisc::Aviation::CCallsign &getCallsign() const { return m_callsign; }
const Aviation::CCallsign &getCallsign() const { return m_callsign; }
//! Get callsign.
QString getCallsignAsString() const { return m_callsign.asString(); }
//! Get situation.
const BlackMisc::Aviation::CAircraftSituation &getSituation() const { return m_situation; }
const Aviation::CAircraftSituation &getSituation() const { return m_situation; }
//! Set situation.
void setSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
void setSituation(const Aviation::CAircraftSituation &situation);
//! Get user
const BlackMisc::Network::CUser &getPilot() const { return m_pilot; }
const Network::CUser &getPilot() const { return m_pilot; }
//! Get user's real name
QString getPilotRealName() const { return m_pilot.getRealName(); }
@@ -125,7 +125,7 @@ namespace BlackMisc
QString getPilotId() { return m_pilot.getId(); }
//! Get aircraft ICAO info
const BlackMisc::Aviation::CAircraftIcaoCode &getAircraftIcaoCode() const;
const Aviation::CAircraftIcaoCode &getAircraftIcaoCode() const;
//! Aircraft ICAO code designator
const QString &getAircraftIcaoCodeDesignator() const;
@@ -134,17 +134,17 @@ namespace BlackMisc
const QString &getAircraftIcaoCombinedType() const;
//! Set aicraft ICAO code
bool setAircraftIcaoCode(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcaoCode) { return m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode);}
bool setAircraftIcaoCode(const Aviation::CAircraftIcaoCode &aircraftIcaoCode) { return m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode);}
//! Set ICAO info
//! \note to be compatible with old version I still allow to set airline here, but I should actually set a livery
bool setIcaoCodes(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcaoCode, const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcaoCode);
bool setIcaoCodes(const Aviation::CAircraftIcaoCode &aircraftIcaoCode, const Aviation::CAirlineIcaoCode &airlineIcaoCode);
//! Get livery
const BlackMisc::Aviation::CLivery &getLivery() const { return m_models[CurrentModel].getLivery(); }
const Aviation::CLivery &getLivery() const { return m_models[CurrentModel].getLivery(); }
//! Airline ICAO code if any
const BlackMisc::Aviation::CAirlineIcaoCode &getAirlineIcaoCode() const;
const Aviation::CAirlineIcaoCode &getAirlineIcaoCode() const;
//! Airline ICAO code designator
const QString &getAirlineIcaoCodeDesignator() const;
@@ -168,40 +168,40 @@ namespace BlackMisc
bool hasAircraftAndAirlineDesignator() const;
//! Valid callsign?
bool hasValidCallsign() const { return BlackMisc::Aviation::CCallsign::isValidAircraftCallsign(this->getCallsign().asString()); }
bool hasValidCallsign() const { return Aviation::CCallsign::isValidAircraftCallsign(this->getCallsign().asString()); }
//! Callsign not empty, no further checks
bool hasCallsign() const { return !getCallsign().isEmpty(); }
//! Get position
BlackMisc::Geo::CCoordinateGeodetic getPosition() const { return m_situation.getPosition(); }
Geo::CCoordinateGeodetic getPosition() const { return m_situation.getPosition(); }
//! Set position
void setPosition(const BlackMisc::Geo::CCoordinateGeodetic &position) { m_situation.setPosition(position); }
void setPosition(const Geo::CCoordinateGeodetic &position) { m_situation.setPosition(position); }
//! Get altitude
const BlackMisc::Aviation::CAltitude &getAltitude() const { return m_situation.getAltitude(); }
const Aviation::CAltitude &getAltitude() const { return m_situation.getAltitude(); }
//! Set altitude
void setAltitude(const BlackMisc::Aviation::CAltitude &altitude) { m_situation.setAltitude(altitude); }
void setAltitude(const Aviation::CAltitude &altitude) { m_situation.setAltitude(altitude); }
//! Get pressure altitude
const BlackMisc::Aviation::CAltitude &getPressureAltitude() const { return m_situation.getPressureAltitude(); }
const Aviation::CAltitude &getPressureAltitude() const { return m_situation.getPressureAltitude(); }
//! Set pressure altitude
void setPressureAltitude(const BlackMisc::Aviation::CAltitude &altitude) { m_situation.setPressureAltitude(altitude); }
void setPressureAltitude(const Aviation::CAltitude &altitude) { m_situation.setPressureAltitude(altitude); }
//! Get groundspeed
const BlackMisc::PhysicalQuantities::CSpeed &getGroundSpeed() const { return m_situation.getGroundSpeed(); }
const PhysicalQuantities::CSpeed &getGroundSpeed() const { return m_situation.getGroundSpeed(); }
//! \copydoc BlackMisc::Geo::ICoordinateGeodetic::latitude
virtual BlackMisc::Geo::CLatitude latitude() const override { return m_situation.latitude(); }
virtual Geo::CLatitude latitude() const override { return m_situation.latitude(); }
//! \copydoc BlackMisc::Geo::ICoordinateGeodetic::longitude
virtual BlackMisc::Geo::CLongitude longitude() const override { return m_situation.longitude(); }
virtual Geo::CLongitude longitude() const override { return m_situation.longitude(); }
//! \copydoc BlackMisc::Geo::ICoordinateGeodetic::geodeticHeight
const BlackMisc::Aviation::CAltitude &geodeticHeight() const override { return m_situation.geodeticHeight(); }
const Aviation::CAltitude &geodeticHeight() const override { return m_situation.geodeticHeight(); }
//! \copydoc BlackMisc::Geo::ICoordinateGeodetic::normalVector
virtual QVector3D normalVector() const override { return m_situation.normalVector(); }
@@ -210,7 +210,7 @@ namespace BlackMisc
virtual std::array<double, 3> normalVectorDouble() const override { return m_situation.normalVectorDouble(); }
//! \copydoc BlackMisc::Aviation::CAircraftSituation::getGroundElevation
const BlackMisc::Aviation::CAltitude &getGroundElevation() const { return m_situation.getGroundElevation(); }
const Aviation::CAltitude &getGroundElevation() const { return m_situation.getGroundElevation(); }
//! \copydoc BlackMisc::Aviation::CAircraftSituation::setGroundElevation
void setGroundElevation(const Geo::CElevationPlane &elevation) { m_situation.setGroundElevation(elevation); }
@@ -219,82 +219,82 @@ namespace BlackMisc
void setGroundElevationChecked(const Geo::CElevationPlane &elevation) { m_situation.setGroundElevationChecked(elevation); }
//! \copydoc BlackMisc::Aviation::CAircraftSituation::getHeading
const BlackMisc::Aviation::CHeading &getHeading() const { return m_situation.getHeading(); }
const Aviation::CHeading &getHeading() const { return m_situation.getHeading(); }
//! \copydoc BlackMisc::Aviation::CAircraftSituation::getPitch
const BlackMisc::PhysicalQuantities::CAngle &getPitch() const { return m_situation.getPitch(); }
const PhysicalQuantities::CAngle &getPitch() const { return m_situation.getPitch(); }
//! \copydoc BlackMisc::Aviation::CAircraftSituation::getBank
const BlackMisc::PhysicalQuantities::CAngle &getBank() const { return m_situation.getBank(); }
const PhysicalQuantities::CAngle &getBank() const { return m_situation.getBank(); }
//! Get COM1 system
const BlackMisc::Aviation::CComSystem &getCom1System() const { return m_com1system; }
const Aviation::CComSystem &getCom1System() const { return m_com1system; }
//! Get COM2 system
const BlackMisc::Aviation::CComSystem &getCom2System() const { return m_com2system; }
const Aviation::CComSystem &getCom2System() const { return m_com2system; }
//! Get COM unit
const BlackMisc::Aviation::CComSystem getComSystem(BlackMisc::Aviation::CComSystem::ComUnit unit) const;
const Aviation::CComSystem getComSystem(Aviation::CComSystem::ComUnit unit) const;
//! Set COM unit
void setComSystem(const BlackMisc::Aviation::CComSystem &com, BlackMisc::Aviation::CComSystem::ComUnit unit);
void setComSystem(const Aviation::CComSystem &com, Aviation::CComSystem::ComUnit unit);
//! Set COM1 system
void setCom1System(const BlackMisc::Aviation::CComSystem &comSystem) { m_com1system = comSystem; }
void setCom1System(const Aviation::CComSystem &comSystem) { m_com1system = comSystem; }
//! Set COM2 system
void setCom2System(const BlackMisc::Aviation::CComSystem &comSystem) { m_com2system = comSystem; }
void setCom2System(const Aviation::CComSystem &comSystem) { m_com2system = comSystem; }
//! Set COM1 frequency
bool setCom1ActiveFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency);
bool setCom1ActiveFrequency(const PhysicalQuantities::CFrequency &frequency);
//! Set COM2 frequency
bool setCom2ActiveFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency);
bool setCom2ActiveFrequency(const PhysicalQuantities::CFrequency &frequency);
//! Set COM frequency
bool setComActiveFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ComUnit unit);
bool setComActiveFrequency(const PhysicalQuantities::CFrequency &frequency, Aviation::CComSystem::ComUnit unit);
//! Given SELCAL selected?
bool isSelcalSelected(const BlackMisc::Aviation::CSelcal &selcal) const { return m_selcal == selcal; }
bool isSelcalSelected(const Aviation::CSelcal &selcal) const { return m_selcal == selcal; }
//! Valid SELCAL?
bool hasValidSelcal() const { return m_selcal.isValid(); }
//! SELCAL
const BlackMisc::Aviation::CSelcal getSelcal() const { return m_selcal; }
const Aviation::CSelcal getSelcal() const { return m_selcal; }
//! Set COM unit (all values + transponder and SELCAL)
void setCockpit(const BlackMisc::Simulation::CSimulatedAircraft &aircraft);
void setCockpit(const CSimulatedAircraft &aircraft);
//! Cockpit data
void setCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder);
void setCockpit(const Aviation::CComSystem &com1, const Aviation::CComSystem &com2, const Aviation::CTransponder &transponder);
//! Cockpit data
void setCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, int transponderCode, BlackMisc::Aviation::CTransponder::TransponderMode mode);
void setCockpit(const Aviation::CComSystem &com1, const Aviation::CComSystem &com2, int transponderCode, Aviation::CTransponder::TransponderMode mode);
//! Own SELCAL code
void setSelcal(const BlackMisc::Aviation::CSelcal &selcal) { m_selcal = selcal; }
void setSelcal(const Aviation::CSelcal &selcal) { m_selcal = selcal; }
//! Changed cockpit data?
bool hasChangedCockpitData(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) const;
bool hasChangedCockpitData(const Aviation::CComSystem &com1, const Aviation::CComSystem &com2, const Aviation::CTransponder &transponder) const;
//! Identical COM system?
bool hasSameComData(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder);
bool hasSameComData(const Aviation::CComSystem &com1, const Aviation::CComSystem &com2, const Aviation::CTransponder &transponder);
//! Is any (COM1/2) active frequency within 8.3383kHz channel?
bool isActiveFrequencyWithin8_33kHzChannel(const BlackMisc::PhysicalQuantities::CFrequency &comFrequency) const;
bool isActiveFrequencyWithin8_33kHzChannel(const PhysicalQuantities::CFrequency &comFrequency) const;
//! Is any (COM1/2) active frequency within 25kHz channel?
bool isActiveFrequencyWithin25kHzChannel(const BlackMisc::PhysicalQuantities::CFrequency &comFrequency) const;
bool isActiveFrequencyWithin25kHzChannel(const PhysicalQuantities::CFrequency &comFrequency) const;
//! Get transponder
const BlackMisc::Aviation::CTransponder &getTransponder() const { return m_transponder; }
const Aviation::CTransponder &getTransponder() const { return m_transponder; }
//! Set transponder
void setTransponder(const BlackMisc::Aviation::CTransponder &transponder) { m_transponder = transponder; }
void setTransponder(const Aviation::CTransponder &transponder) { m_transponder = transponder; }
//! Set transponder mode
void setTransponderMode(BlackMisc::Aviation::CTransponder::TransponderMode mode) { m_transponder.setTransponderMode(mode); }
void setTransponderMode(Aviation::CTransponder::TransponderMode mode) { m_transponder.setTransponderMode(mode); }
//! Set transponder code
void setTransponderCode(int code) { m_transponder.setTransponderCode(code); }
@@ -306,7 +306,7 @@ namespace BlackMisc
qint32 getTransponderCode() const { return m_transponder.getTransponderCode(); }
//! Get transponder mode
BlackMisc::Aviation::CTransponder::TransponderMode getTransponderMode() const { return m_transponder.getTransponderMode(); }
Aviation::CTransponder::TransponderMode getTransponderMode() const { return m_transponder.getTransponderMode(); }
//! Is valid for login?
bool isValidForLogin() const;
@@ -318,16 +318,19 @@ namespace BlackMisc
void initTransponder();
//! Get aircraft parts
const BlackMisc::Aviation::CAircraftParts &getParts() const { return m_parts; }
const Aviation::CAircraftParts &getParts() const { return m_parts; }
//! Number of engines
int getEnginesCount() const;
//! Get aircraft parts
BlackMisc::Aviation::CAircraftLights getLights() const;
Aviation::CAircraftLights getLights() const;
//! Set aircraft parts
void setParts(const BlackMisc::Aviation::CAircraftParts &parts);
void setParts(const Aviation::CAircraftParts &parts);
//! Set aircraft lights
void setLights(BlackMisc::Aviation::CAircraftLights &lights);
void setLights(Aviation::CAircraftLights &lights);
//! Set aircraft lights on
void setAllLightsOn();
@@ -345,13 +348,13 @@ namespace BlackMisc
int comparePropertyByIndex(const CPropertyIndex &index, const CSimulatedAircraft &compareValue) const;
//! Get model (model used for mapping)
const BlackMisc::Simulation::CAircraftModel &getModel() const { return m_models[CurrentModel]; }
const Simulation::CAircraftModel &getModel() const { return m_models[CurrentModel]; }
//! Get network model
const BlackMisc::Simulation::CAircraftModel &getNetworkModel() const { return m_models[NetworkModel]; }
const Simulation::CAircraftModel &getNetworkModel() const { return m_models[NetworkModel]; }
//! Get network model or (if not existing) model
const BlackMisc::Simulation::CAircraftModel &getNetworkModelOrModel() const;
const Simulation::CAircraftModel &getNetworkModelOrModel() const;
//! Has a network model been set?
bool hasNetworkModel() const;
@@ -378,16 +381,16 @@ namespace BlackMisc
bool hasModelString() const { return m_models[CurrentModel].hasModelString(); }
//! Set model
void setModel(const BlackMisc::Simulation::CAircraftModel &model);
void setModel(const CAircraftModel &model);
//! Set network model
void setNetworkModel(const BlackMisc::Simulation::CAircraftModel &model);
void setNetworkModel(const CAircraftModel &model);
//! Set callsign
void setCallsign(const BlackMisc::Aviation::CCallsign &callsign);
void setCallsign(const Aviation::CCallsign &callsign);
//! Set pilot
void setPilot(const BlackMisc::Network::CUser &user);
void setPilot(const Network::CUser &user);
//! Enabled? Enable means it shall be displayed in the simulator
bool isEnabled() const;
@@ -414,29 +417,29 @@ namespace BlackMisc
void setPartsSynchronized(bool synchronized) { m_partsSynchronized = synchronized; }
//! \copydoc BlackMisc::Mixin::Index::propertyByIndex
CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const;
CVariant propertyByIndex(const CPropertyIndex &index) const;
//! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex
void setPropertyByIndex(const BlackMisc::CPropertyIndex &index, const CVariant &variant);
void setPropertyByIndex(const CPropertyIndex &index, const CVariant &variant);
//! \copydoc BlackMisc::Mixin::String::toQString()
QString convertToQString(bool i18n = false) const;
//! \copydoc BlackMisc::Mixin::Icon::toIcon()
BlackMisc::CIcon toIcon() const { return m_callsign.toIcon(); }
CIcon toIcon() const { return m_callsign.toIcon(); }
private:
static constexpr int CurrentModel = 0; //!< m_models
static constexpr int NetworkModel = 1; //!< m_models
BlackMisc::Aviation::CCallsign m_callsign;
BlackMisc::Network::CUser m_pilot;
BlackMisc::Aviation::CAircraftSituation m_situation;
BlackMisc::Aviation::CComSystem m_com1system;
BlackMisc::Aviation::CComSystem m_com2system;
BlackMisc::Aviation::CTransponder m_transponder;
BlackMisc::Aviation::CAircraftParts m_parts;
BlackMisc::Aviation::CSelcal m_selcal;
BlackMisc::Simulation::CAircraftModelList m_models = { { CAircraftModel(), CAircraftModel() } }; //!< Shorter DBus signature: current model, and model received from network
Aviation::CCallsign m_callsign;
Network::CUser m_pilot;
Aviation::CAircraftSituation m_situation;
Aviation::CComSystem m_com1system;
Aviation::CComSystem m_com2system;
Aviation::CTransponder m_transponder;
Aviation::CAircraftParts m_parts;
Aviation::CSelcal m_selcal;
CAircraftModelList m_models = { { CAircraftModel(), CAircraftModel() } }; //!< Shorter DBus signature: current model, and model received from network
bool m_enabled = true; //!< to be displayed in simulator
bool m_rendered = false; //!< really shown in simulator
bool m_partsSynchronized = false; //!< synchronize parts