swift
fs9client.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #ifndef DIRECTPLAY_CLIENT_H
5 #define DIRECTPLAY_CLIENT_H
6 
7 #include <QReadWriteLock>
8 #include <QScopedPointer>
9 
10 #include "directplaypeer.h"
11 
13 #include "misc/aviation/callsign.h"
14 #include "misc/pq/time.h"
16 
18 
19 namespace swift::core
20 {
21  class ISimulator;
22 }
23 namespace swift::simplugin::fs9
24 {
26  class CFs9Client : public CDirectPlayPeer
27  {
28  Q_OBJECT
29 
30  public:
33  {
34  Connected,
35  Disconnected
36  };
37 
40  const swift::misc::physical_quantities::CTime &updateInterval,
42 
44  virtual ~CFs9Client() override;
45 
47  void setHostAddress(const QString &hostAddress);
48 
50  void start();
51 
55  const swift::misc::simulation::CInterpolatorMulti *getInterpolator() const { return &m_interpolator; }
57 
61 
64 
67 
69  void sendTextMessage(const QString &textMessage);
70 
71  signals:
75 
76  protected:
78  virtual void timerEvent(QTimerEvent *event) override;
79 
80  private:
82  HRESULT enumDirectPlayHosts();
83 
85  HRESULT createHostAddress();
86 
88  HRESULT connectToSession(const swift::misc::aviation::CCallsign &callsign);
89 
91  HRESULT closeConnection();
92 
95  void sendMultiplayerPositionAndPartsFromInterpolation();
96  void sendMultiplayerChangePlayerPlane();
98 
99  void handleConnectionCompleted();
100 
102  const swift::coree::ISimulator *simulator() const;
103 
107  QString m_modelName;
108  int m_timerId = 0;
109 
110  IDirectPlay8Address *m_hostAddress = nullptr;
111  ClientStatus m_clientStatus = Disconnected;
112 
113  PLAYER_INFO_STRUCT m_playerInfo;
114  DPN_PLAYER_INFO m_player;
115  };
116 } // namespace swift::simplugin::fs9
117 
119 
120 #endif // DIRECTPLAY_CLIENT_H
Interface to a simulator.
Definition: simulator.h:59
Status messages, e.g. from Core -> GUI.
Value object encapsulating information of aircraft's parts.
Definition: aircraftparts.h:26
Value object encapsulating information of an aircraft's situation.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Record internal state of interpolator for debugging.
Multiplexed interpolator which allows switching between modes at runtime.
Comprehensive information of an aircraft.
DirectPlay peer implementation More information can be found in the DirectX9 SDK documentation http:/...
Class faking a FS9 multiplayer client connection.
Definition: fs9client.h:27
const swift::misc::simulation::CInterpolatorMulti * getInterpolator() const
Get interpolator.
Definition: fs9client.h:55
CFs9Client(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft, const swift::misc::physical_quantities::CTime &updateInterval, swift::misc::simulation::CInterpolationLogger *logger, swift::core::ISimulator *simulator)
Constructor.
Definition: fs9client.cpp:31
void setHostAddress(const QString &hostAddress)
Set DirectPlay host address.
Definition: fs9client.cpp:191
virtual ~CFs9Client()
Destructor.
Definition: fs9client.cpp:170
void sendMultiplayerParts(const swift::misc::aviation::CAircraftParts &parts)
Send parts (lights, gear ...)
Definition: fs9client.cpp:370
swift::misc::simulation::CInterpolatorMulti * getInterpolator()
Get interpolator.
Definition: fs9client.h:54
void sendMultiplayerPosition(const swift::misc::aviation::CAircraftSituation &situation)
Send a situation (position)
Definition: fs9client.cpp:356
void sendTextMessage(const QString &textMessage)
Send new text message.
Definition: fs9client.cpp:180
void start()
Starts the FS9 client messaging.
Definition: fs9client.cpp:210
swift::misc::CStatusMessageList getInterpolationMessages(swift::misc::simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
Interpolation messages.
Definition: fs9client.cpp:218
void statusChanged(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft, swift::simplugin::fs9::CFs9Client::ClientStatus)
Client status changed.
virtual void timerEvent(QTimerEvent *event)
Definition: fs9client.cpp:224
ClientStatus
Connection status.
Definition: fs9client.h:33
Backend services of the swift project, like dealing with the network or the simulators.
Definition: actionbind.cpp:7