refs #242, removed own aircraft from network context

* removed attribute
* changed to use object (local) from own aircraft context
* helper methods
This commit is contained in:
Klaus Basan
2014-05-20 22:29:24 +02:00
parent 8236617fbc
commit c2cd983d64
7 changed files with 73 additions and 112 deletions

View File

@@ -101,9 +101,6 @@ namespace BlackCore
//! User for given callsign, e.g. for text messages
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Get own aircraft
virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const = 0;
//! Information about other clients
virtual BlackMisc::Network::CClientList getOtherClients() const = 0;
@@ -126,22 +123,6 @@ namespace BlackCore
//! \brief Network connected?
virtual bool isConnected() const = 0;
/*!
* Set own aircraft
* \param aircraft
* \return message list, as aircraft can only be set prior connecting
*/
virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) = 0;
//! Own position, be aware height is terrain height
virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) = 0;
//! Complete situation update
virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) = 0;
//! Update own cockpit
virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) = 0;
//! Text messages (radio and private chat messages)
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) = 0;
@@ -170,6 +151,7 @@ namespace BlackCore
protected:
//! Constructor
IContextNetwork(CRuntimeConfig::ContextMode mode, CRuntime *runtime) : CContext(mode, runtime) {}
};
}

View File

@@ -43,7 +43,7 @@ namespace BlackCore
aircraft.setCallsign(callsign);
aircraft.setSituation(situation);
aircraft.setTransponder(transponder);
aircraft.calculcateDistanceToPlane(this->m_ownAircraft.getPosition());
aircraft.calculcateDistanceToPlane(this->ownAircraft().getPosition());
this->m_vatsimDataFileReader->getAircrafts().updateFromVatsimDataFileAircraft(aircraft);
this->m_aircraftsInRange.push_back(aircraft);
@@ -67,7 +67,7 @@ namespace BlackCore
else
{
// update
CLength distance = this->m_ownAircraft.calculcateDistanceToPlane(situation.getPosition());
CLength distance = this->ownAircraft().calculcateDistanceToPlane(situation.getPosition());
distance.switchUnit(CLengthUnit::NM());
CIndexVariantMap vm;
vm.addValue(CAircraft::IndexTransponder, transponder);

View File

@@ -138,8 +138,8 @@ namespace BlackCore
*/
CAtcStationList CContextNetwork::getSelectedAtcStations() const
{
CAtcStationList stationsCom1 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->m_ownAircraft.getCom1System());
CAtcStationList stationsCom2 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->m_ownAircraft.getCom2System());
CAtcStationList stationsCom1 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->ownAircraft().getCom1System());
CAtcStationList stationsCom2 = this->m_atcStationsOnline.findIfComUnitTunedIn25KHz(this->ownAircraft().getCom2System());
stationsCom1.sortBy(&CAtcStation::getDistanceToPlane);
stationsCom2.sortBy(&CAtcStation::getDistanceToPlane);
@@ -179,7 +179,7 @@ namespace BlackCore
station.setFrequency(frequency);
station.setPosition(position);
station.setOnline(true);
station.calculcateDistanceToPlane(this->m_ownAircraft.getPosition());
station.calculcateDistanceToPlane(this->ownAircraft().getPosition());
this->m_vatsimDataFileReader->getAtcStations().updateFromVatsimDataFileStation(station); // prefill
this->m_atcStationsOnline.push_back(station);
emit this->changedAtcStationsOnline();

View File

@@ -8,6 +8,7 @@
#include "context_settings.h"
#include "context_application.h"
#include "context_simulator.h"
#include "context_ownaircraft_impl.h"
#include "network_vatlib.h"
#include "vatsimbookingreader.h"
#include "vatsimdatafilereader.h"
@@ -94,8 +95,8 @@ namespace BlackCore
{
Q_ASSERT(this->getRuntime());
Q_ASSERT(this->getRuntime()->getIContextSettings());
this->m_ownAircraft.initComSystems();
this->m_ownAircraft.initTransponder();
this->ownAircraft().initComSystems();
this->ownAircraft().initTransponder();
CAircraftSituation situation(
CCoordinateGeodetic(
CLatitude::fromWgs84("N 049° 18' 17"),
@@ -103,13 +104,13 @@ namespace BlackCore
CLength(0, CLengthUnit::m())),
CAltitude(312, CAltitude::MeanSeaLevel, CLengthUnit::ft())
);
this->m_ownAircraft.setSituation(situation);
this->m_ownAircraft.setPilot(this->getIContextSettings()->getNetworkSettings().getCurrentTrafficNetworkServer().getUser());
this->ownAircraft().setSituation(situation);
this->ownAircraft().setPilot(this->getIContextSettings()->getNetworkSettings().getCurrentTrafficNetworkServer().getUser());
// TODO: This would need to come from somewhere (mappings)
// Own callsign, plane ICAO status, model used
this->m_ownAircraft.setCallsign(CCallsign("BLACK"));
this->m_ownAircraft.setIcaoInfo(CAircraftIcao("C172", "L1P", "GA", "GA", "0000ff"));
this->ownAircraft().setCallsign(CCallsign("BLACK"));
this->ownAircraft().setIcaoInfo(CAircraftIcao("C172", "L1P", "GA", "GA", "0000ff"));
}
/*
@@ -125,7 +126,7 @@ namespace BlackCore
{
msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityWarning, "Invalid user credentials"));
}
else if (!this->m_ownAircraft.getIcaoInfo().hasAircraftAndAirlineDsignator())
else if (!this->ownAircraft().getIcaoInfo().hasAircraftAndAirlineDsignator())
{
msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityWarning, "Invalid ICAO data for own aircraft"));
}
@@ -139,12 +140,12 @@ namespace BlackCore
if (CNetworkUtils::canConnect(currentServer, msg, 2000))
{
INetwork::LoginMode mode = static_cast<INetwork::LoginMode>(loginMode);
this->m_ownAircraft.setPilot(currentServer.getUser()); // still needed?
this->ownAircraft().setPilot(currentServer.getUser()); // still needed?
this->m_network->presetServer(currentServer);
this->m_network->presetLoginMode(mode);
this->m_network->presetCallsign(this->m_ownAircraft.getCallsign());
this->m_network->presetIcaoCodes(this->m_ownAircraft.getIcaoInfo());
this->m_network->setOwnAircraft(this->m_ownAircraft);
this->m_network->presetCallsign(this->ownAircraft().getCallsign());
this->m_network->presetIcaoCodes(this->ownAircraft().getIcaoInfo());
this->m_network->setOwnAircraft(this->ownAircraft());
this->m_network->initiateConnection();
msg = "Connection pending ";
msg.append(" ").append(currentServer.getAddress()).append(" ").append(QString::number(currentServer.getPort()));
@@ -205,7 +206,7 @@ namespace BlackCore
}
else
{
this->m_ownAircraft = aircraft;
this->ownAircraft() = aircraft;
}
return msgs;
}
@@ -216,8 +217,8 @@ namespace BlackCore
void CContextNetwork::updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude)
{
if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, position.toQString(), altitude.toQString());
this->m_ownAircraft.setPosition(position);
this->m_ownAircraft.setAltitude(altitude);
this->ownAircraft().setPosition(position);
this->ownAircraft().setAltitude(altitude);
this->m_network->setOwnAircraftPosition(position, altitude);
}
@@ -227,7 +228,7 @@ namespace BlackCore
void CContextNetwork::updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation)
{
if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, situation.toQString());
this->m_ownAircraft.setSituation(situation);
this->ownAircraft().setSituation(situation);
this->m_network->setOwnAircraftSituation(situation);
}
@@ -238,19 +239,19 @@ namespace BlackCore
{
if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, com1.toQString(), com2.toQString(), transponder.toQString());
bool changed = false;
if (com1 != this->m_ownAircraft.getCom1System())
if (com1 != this->ownAircraft().getCom1System())
{
this->m_ownAircraft.setCom1System(com1);
this->ownAircraft().setCom1System(com1);
changed = true;
}
if (com2 != this->m_ownAircraft.getCom2System())
if (com2 != this->ownAircraft().getCom2System())
{
this->m_ownAircraft.setCom2System(com2);
this->ownAircraft().setCom2System(com2);
changed = true;
}
if (transponder != this->m_ownAircraft.getTransponder())
if (transponder != this->ownAircraft().getTransponder())
{
this->m_ownAircraft.setTransponder(transponder);
this->ownAircraft().setTransponder(transponder);
changed = true;
}
@@ -263,8 +264,8 @@ namespace BlackCore
*/
CAircraft CContextNetwork::getOwnAircraft() const
{
if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, this->m_ownAircraft.toQString());
return this->m_ownAircraft;
if (this->getRuntime()->isSlotLogForNetworkEnabled()) this->getRuntime()->logSlot(Q_FUNC_INFO, this->ownAircraft().toQString());
return this->ownAircraft();
}
/*
@@ -402,7 +403,7 @@ namespace BlackCore
if (to == INetwork::Connected)
{
QString m("Connected, own aircraft ");
m.append(this->m_ownAircraft.toQString(true));
m.append(this->ownAircraft().toQString(true));
msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityInfo, m));
}
@@ -531,4 +532,19 @@ namespace BlackCore
icao.getAircraftCombinedType(), modelString);
return data;
}
const CAircraft &CContextNetwork::ownAircraft() const
{
Q_ASSERT(this->getRuntime());
Q_ASSERT(this->getRuntime()->getCContextOwnAircraft());
return this->getRuntime()->getCContextOwnAircraft()->ownAircraft();
}
CAircraft &CContextNetwork::ownAircraft()
{
Q_ASSERT(this->getRuntime());
Q_ASSERT(this->getRuntime()->getCContextOwnAircraft());
return this->getRuntime()->getCContextOwnAircraft()->ownAircraft();
}
} // namespace

View File

@@ -35,6 +35,25 @@ namespace BlackCore
//! Destructor
virtual ~CContextNetwork();
/*!
* Set own aircraft
* \param aircraft
* \return message list, as aircraft can only be set prior connecting
*/
BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft);
//! Own position, be aware height is terrain height
void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude);
//! Complete situation update
void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
//! Update own cockpit
void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder);
//! Get own aircraft
BlackMisc::Aviation::CAircraft getOwnAircraft() const;
public slots: // IContextNetwork overrides
//! \copydoc IContextNetwork::readAtcBookingsFromSource()
@@ -70,21 +89,6 @@ namespace BlackCore
//! \copydoc IContextNetwork::isConnected()
virtual bool isConnected() const override;
//! \copydoc IContextNetwork::setOwnAircraft()
virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) override;
//! \copydoc IContextNetwork::updateOwnPosition()
virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) override;
//! \copydoc IContextNetwork::updateOwnSituation()
virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
//! \copydoc IContextNetwork::updateOwnCockpit()
virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) override;
//! \copydoc IContextNetwork::getOwnAircraft()
virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override;
//! \copydoc IContextNetwork::sendTextMessages()
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override;
@@ -139,7 +143,6 @@ namespace BlackCore
BlackMisc::Aviation::CAircraftList m_aircraftsInRange;
BlackMisc::Network::CClientList m_otherClients;
BlackCore::INetwork *m_network;
BlackMisc::Aviation::CAircraft m_ownAircraft;
QMap<QString, BlackMisc::Aviation::CInformationMessage> m_metarCache /*!< Keep METARs for a while */;
// for reading XML and VATSIM data files
@@ -154,16 +157,10 @@ namespace BlackCore
void setAtcStationsOnline(const BlackMisc::Aviation::CAtcStationList &newStations);
//! The "central" ATC list with online ATC controllers
BlackMisc::Aviation::CAtcStationList &atcStationsOnline()
{
return m_atcStationsOnline;
}
BlackMisc::Aviation::CAtcStationList &atcStationsOnline() { return m_atcStationsOnline; }
//! ATC list, with booked controllers
BlackMisc::Aviation::CAtcStationList &atcStationsBooked()
{
return m_atcStationsBooked;
}
BlackMisc::Aviation::CAtcStationList &atcStationsBooked() { return m_atcStationsBooked; }
//! Init my very own aircraft
void initOwnAircraft();
@@ -185,6 +182,12 @@ namespace BlackCore
//! Custom package data based on own aircraft / model
QStringList createFsipiCustomPackageData() const;
//! Own aircraft
const BlackMisc::Aviation::CAircraft &ownAircraft() const;
//! Own aircraft
BlackMisc::Aviation::CAircraft &ownAircraft();
private slots:
//! ATC bookings received
void psReceivedBookings(BlackMisc::Aviation::CAtcStationList bookedStations);

View File

@@ -111,11 +111,6 @@ namespace BlackCore
this->m_dBusInterface->callDBus(QLatin1Literal("requestAtisUpdates"));
}
BlackMisc::Aviation::CAircraft CContextNetworkProxy::getOwnAircraft() const
{
return this->m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAircraft>(QLatin1Literal("getOwnAircraft"));
}
BlackMisc::CStatusMessageList CContextNetworkProxy::connectToNetwork(uint loginMode)
{
return this->m_dBusInterface->callDBusRet<BlackMisc::CStatusMessageList>(QLatin1Literal("connectToNetwork"), loginMode);
@@ -131,26 +126,6 @@ namespace BlackCore
return this->m_dBusInterface->callDBusRet<bool>(QLatin1Literal("isConnected"));
}
BlackMisc::CStatusMessageList CContextNetworkProxy::setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft)
{
return this->m_dBusInterface->callDBusRet<BlackMisc::CStatusMessageList>(QLatin1Literal("setOwnAircraft"), aircraft);
}
void CContextNetworkProxy::updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude)
{
this->m_dBusInterface->callDBus(QLatin1Literal("updateOwnPosition"), position, altitude);
}
void CContextNetworkProxy::updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation)
{
this->m_dBusInterface->callDBus(QLatin1Literal("updateOwnSituation"), situation);
}
void CContextNetworkProxy::updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder)
{
this->m_dBusInterface->callDBus(QLatin1Literal("updateOwnCockpit"), com1, com2, transponder);
}
void CContextNetworkProxy::sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages)
{
this->m_dBusInterface->callDBus(QLatin1Literal("sendTextMessages"), textMessages);

View File

@@ -73,21 +73,6 @@ namespace BlackCore
//! \copydoc IContextNetwork::isConnected()
virtual bool isConnected() const override;
//! \copydoc IContextNetwork::setOwnAircraft()
virtual BlackMisc::CStatusMessageList setOwnAircraft(const BlackMisc::Aviation::CAircraft &aircraft) override;
//! \copydoc IContextNetwork::updateOwnPosition()
virtual void updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude) override;
//! \copydoc IContextNetwork::updateOwnSituation()
virtual void updateOwnSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
//! \copydoc IContextNetwork::updateOwnCockpit()
virtual void updateOwnCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder) override;
//! \copydoc IContextNetwork::getOwnAircraft()
virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override;
//! \copydoc IContextNetwork::sendTextMessages()
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &textMessages) override;