mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 00:16:51 +08:00
* changed to CSimulatedAircraft / Simulation::CAircraftModel * added new functions such as icons for model
This commit is contained in:
@@ -16,12 +16,14 @@
|
||||
#include "multiplayer_packet_parser.h"
|
||||
#include "blacksim/simulatorinfo.h"
|
||||
#include "blackmisc/project.h"
|
||||
#include "blackmisc/propertyindexallclasses.h"
|
||||
#include <QTimer>
|
||||
#include <algorithm>
|
||||
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Aviation;
|
||||
using namespace BlackMisc::Network;
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackMisc::PhysicalQuantities;
|
||||
using namespace BlackMisc::Geo;
|
||||
using namespace BlackSim;
|
||||
@@ -95,9 +97,8 @@ namespace BlackSimPlugin
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSimulatorFs9::addRemoteAircraft(const CAircraft &remoteAircraft, const CClient &remoteClient)
|
||||
void CSimulatorFs9::addRemoteAircraft(const CSimulatedAircraft &remoteAircraft)
|
||||
{
|
||||
Q_UNUSED(remoteClient);
|
||||
CCallsign callsign = remoteAircraft.getCallsign();
|
||||
CFs9Client *client = new CFs9Client(this, callsign.toQString(), CTime(25, CTimeUnit::ms()));
|
||||
client->setHostAddress(m_fs9Host->getHostAddress());
|
||||
@@ -105,7 +106,7 @@ namespace BlackSimPlugin
|
||||
|
||||
client->start();
|
||||
m_hashFs9Clients.insert(callsign, client);
|
||||
|
||||
m_remoteAircraft.replaceOrAdd(&CSimulatedAircraft::getCallsign, remoteAircraft.getCallsign(), remoteAircraft);
|
||||
addAircraftSituation(callsign, remoteAircraft.getSituation());
|
||||
}
|
||||
|
||||
@@ -120,15 +121,20 @@ namespace BlackSimPlugin
|
||||
client->addAircraftSituation(situation);
|
||||
}
|
||||
|
||||
void CSimulatorFs9::removeRemoteAircraft(const CCallsign &callsign)
|
||||
int CSimulatorFs9::removeRemoteAircraft(const CCallsign &callsign)
|
||||
{
|
||||
if(!m_hashFs9Clients.contains(callsign)) return;
|
||||
if (!m_hashFs9Clients.contains(callsign)) { return 0; }
|
||||
|
||||
auto fs9Client = m_hashFs9Clients.value(callsign);
|
||||
|
||||
fs9Client->quit();
|
||||
|
||||
m_hashFs9Clients.remove(callsign);
|
||||
return m_remoteAircraft.removeIf(&CSimulatedAircraft::getCallsign, callsign);
|
||||
}
|
||||
|
||||
int CSimulatorFs9::changeRemoteAircraft(const CSimulatedAircraft &changedAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
{
|
||||
return m_remoteAircraft.incrementalUpdateOrAdd(changedAircraft, changedValues);
|
||||
//! \todo really update aircraft in SIM
|
||||
}
|
||||
|
||||
bool CSimulatorFs9::updateOwnSimulatorCockpit(const CAircraft &ownAircraft)
|
||||
@@ -212,6 +218,12 @@ namespace BlackSimPlugin
|
||||
this->m_syncTimeOffset = offset;
|
||||
}
|
||||
|
||||
CPixmap CSimulatorFs9::iconForModel(const QString &modelString) const
|
||||
{
|
||||
Q_UNUSED(modelString);
|
||||
return CPixmap();
|
||||
}
|
||||
|
||||
void CSimulatorFs9::timerEvent(QTimerEvent * /* event */)
|
||||
{
|
||||
ps_dispatch();
|
||||
@@ -229,47 +241,49 @@ namespace BlackSimPlugin
|
||||
|
||||
switch (messageType)
|
||||
{
|
||||
case CFs9Sdk::MULTIPLAYER_PACKET_ID_PARAMS:
|
||||
case CFs9Sdk::MULTIPLAYER_PACKET_ID_PARAMS:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case CFs9Sdk::MULTIPLAYER_PACKET_ID_CHANGE_PLAYER_PLANE:
|
||||
case CFs9Sdk::MULTIPLAYER_PACKET_ID_CHANGE_PLAYER_PLANE:
|
||||
{
|
||||
MPChangePlayerPlane mpChangePlayerPlane;
|
||||
MultiPlayerPacketParser::readMessage(message, mpChangePlayerPlane);
|
||||
ps_changeOwnAircraftModel(mpChangePlayerPlane.aircraft_name);
|
||||
break;
|
||||
}
|
||||
case CFs9Sdk::MULTIPLAYER_PACKET_ID_POSITION_VELOCITY:
|
||||
case CFs9Sdk::MULTIPLAYER_PACKET_ID_POSITION_VELOCITY:
|
||||
{
|
||||
MPPositionVelocity mpPositionVelocity;
|
||||
MultiPlayerPacketParser::readMessage(message, mpPositionVelocity);
|
||||
m_ownAircraft.setSituation(aircraftSituationfromFS9(mpPositionVelocity));
|
||||
break;
|
||||
}
|
||||
case CFs9Sdk::MPCHAT_PACKET_ID_CHAT_TEXT_SEND:
|
||||
case CFs9Sdk::MPCHAT_PACKET_ID_CHAT_TEXT_SEND:
|
||||
{
|
||||
MPChatText mpChatText;
|
||||
MultiPlayerPacketParser::readMessage(message, mpChatText);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CSimulatorFs9::ps_changeOwnAircraftModel(const QString &modelname)
|
||||
{
|
||||
m_aircraftModel.setQueriedModelString(modelname);
|
||||
emit ownAircraftModelChanged(m_aircraftModel);
|
||||
CAircraftModel model = m_ownAircraft.getModel();
|
||||
model.setModelString(modelname);
|
||||
m_ownAircraft.setModel(model);
|
||||
emit ownAircraftModelChanged(m_ownAircraft);
|
||||
}
|
||||
|
||||
void CSimulatorFs9::ps_changeHostStatus(BlackSimPlugin::Fs9::CFs9Host::HostStatus status)
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case CFs9Host::Hosting:
|
||||
case CFs9Host::Hosting:
|
||||
{
|
||||
m_isHosting = true;
|
||||
startTimer(50);
|
||||
@@ -281,14 +295,14 @@ namespace BlackSimPlugin
|
||||
}
|
||||
break;
|
||||
}
|
||||
case CFs9Host::Terminated:
|
||||
case CFs9Host::Terminated:
|
||||
{
|
||||
m_isHosting = false;
|
||||
emit connectionStatusChanged(Disconnected);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,5 +321,5 @@ namespace BlackSimPlugin
|
||||
removeRemoteAircraft(fs9Client);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -16,9 +16,10 @@
|
||||
#include "../fscommon/fsuipc.h"
|
||||
#include "blackcore/simulator.h"
|
||||
#include "blackcore/interpolator_linear.h"
|
||||
#include "blackmisc/simulation/aircraftmodel.h"
|
||||
#include "blackmisc/avaircraft.h"
|
||||
#include "blackmisc/nwaircraftmodel.h"
|
||||
#include "blacksim/simulatorinfo.h"
|
||||
#include "blackmisc/pixmap.h"
|
||||
#include <QObject>
|
||||
#include <QtPlugin>
|
||||
#include <QList>
|
||||
@@ -85,16 +86,22 @@ namespace BlackSimPlugin
|
||||
virtual bool disconnectFrom() override;
|
||||
|
||||
//! \copydoc ISimulator::getOwnAircraft()
|
||||
virtual BlackMisc::Aviation::CAircraft getOwnAircraft() const override { return m_ownAircraft; }
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const override { return m_ownAircraft; }
|
||||
|
||||
//! \copydoc ISimulator::addRemoteAircraft()
|
||||
virtual void addRemoteAircraft(const BlackMisc::Aviation::CAircraft &remoteAircraft, const BlackMisc::Network::CClient &remoteClient) override;
|
||||
virtual void addRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft) override;
|
||||
|
||||
//! \copydoc BlackCore::ISimulator::getRemoteAircraft
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getRemoteAircraft() const override { return m_remoteAircraft; }
|
||||
|
||||
//! \copydoc ISimulator::addAircraftSituation()
|
||||
virtual void addAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &initialSituation) override;
|
||||
|
||||
//! \copydoc ISimulator::removeRemoteAircraft()
|
||||
virtual void removeRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual int removeRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
|
||||
//! \copydoc ISimulator::changeRemoteAircraft
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &changedAircraft, const BlackMisc::CPropertyIndexVariantMap &changeValues) override;
|
||||
|
||||
//! \copydoc ISimulator::updateOwnSimulatorCockpit()
|
||||
virtual bool updateOwnSimulatorCockpit(const BlackMisc::Aviation::CAircraft &ownAircraft) override;
|
||||
@@ -109,13 +116,10 @@ namespace BlackSimPlugin
|
||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
||||
|
||||
//! \copydoc ISimulator::getAircraftModel()
|
||||
virtual BlackMisc::Network::CAircraftModel getOwnAircraftModel() const override { return m_aircraftModel; }
|
||||
virtual BlackMisc::Simulation::CAircraftModel getOwnAircraftModel() const override { return m_ownAircraft.getModel(); }
|
||||
|
||||
//! \copydoc BlackCore::ISimulator::getInstalledModels
|
||||
virtual BlackMisc::Network::CAircraftModelList getInstalledModels() const override { return {}; }
|
||||
|
||||
//! \copydoc BlackCore::ISimulator::getCurrentlyMatchedModels
|
||||
virtual BlackMisc::Network::CAircraftModelList getCurrentlyMatchedModels() const override { return BlackMisc::Network::CAircraftModelList(); }
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModels() const override { return {}; }
|
||||
|
||||
//! Airports in range
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
@@ -127,6 +131,9 @@ namespace BlackSimPlugin
|
||||
//! Time synchronization offset
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return m_syncTimeOffset; }
|
||||
|
||||
//! \copydoc ISimulator::iconForModel
|
||||
virtual BlackMisc::CPixmap iconForModel(const QString &modelString) const override;
|
||||
|
||||
protected:
|
||||
//! Timer event
|
||||
virtual void timerEvent(QTimerEvent *event);
|
||||
@@ -164,16 +171,15 @@ namespace BlackSimPlugin
|
||||
|
||||
CLobbyClient *m_lobbyClient;
|
||||
|
||||
BlackSim::CSimulatorInfo m_simulatorInfo;
|
||||
BlackMisc::Aviation::CAircraft m_ownAircraft; //!< Object representing our own aircraft from simulator
|
||||
BlackMisc::Aviation::CAirportList m_airportsInRange;
|
||||
BlackMisc::Network::CAircraftModel m_aircraftModel;
|
||||
BlackMisc::PhysicalQuantities::CTime m_syncTimeOffset;
|
||||
BlackSim::CSimulatorInfo m_simulatorInfo;
|
||||
BlackMisc::Simulation::CSimulatedAircraft m_ownAircraft; //!< Object representing our own aircraft from simulator
|
||||
BlackMisc::Aviation::CAirportList m_airportsInRange;
|
||||
BlackMisc::PhysicalQuantities::CTime m_syncTimeOffset;
|
||||
BlackMisc::Simulation::CSimulatedAircraftList m_remoteAircraft;
|
||||
|
||||
QScopedPointer<FsCommon::CFsuipc> m_fsuipc;
|
||||
};
|
||||
}
|
||||
|
||||
} // namespace BlackCore
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
#endif // guard
|
||||
|
||||
Reference in New Issue
Block a user