mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 21:56:43 +08:00
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:
@@ -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) {}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user