swift
lobbyclient.h
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 SWIFT_SIMPLUGIN_FS9_LOBBYCLIENT_H
5 #define SWIFT_SIMPLUGIN_FS9_LOBBYCLIENT_H
6 
7 #include <dplay8.h>
8 #include <dplobby8.h>
9 
10 #include <QDebug>
11 
12 #include "callbackwrapper.h"
13 
14 namespace swift::simplugin::fs9
15 {
17  class CLobbyClient : public QObject
18  {
19  Q_OBJECT
20 
21  signals:
23  void disconnected();
24 
25  public:
27  CLobbyClient(QObject *parent = nullptr);
28 
30  virtual ~CLobbyClient() override;
31 
33  HRESULT initDirectPlay();
34 
36  bool canLobbyConnect();
37 
39  HRESULT connectFs9ToHost(const QString &address);
40 
41  private:
43  HRESULT allocAndInitConnectSettings(const QString &address, GUID *pAppGuid,
44  DPL_CONNECTION_SETTINGS **ppdplConnectSettings);
45 
46  void freeConnectSettings(DPL_CONNECTION_SETTINGS *pSettings);
47 
49  HRESULT directPlayMessageHandler(DWORD messageId, void *msgBuffer);
50 
52  HRESULT directPlayLobbyMessageHandler(DWORD messageId, void *msgBuffer);
53 
54  IDirectPlay8Peer *m_directPlayPeer = nullptr;
55  IDirectPlay8Address *m_deviceAddress = nullptr;
56  IDirectPlay8Address *m_hostAddress = nullptr;
57  IDirectPlay8LobbyClient *m_dpLobbyClient = nullptr;
58 
59  QString m_hostname = "localhost";
60 
61  DWORD m_dwPort = 0;
62 
63  DPNHANDLE m_applicationHandle = 0;
64 
65  using TCallbackWrapper =
67  TCallbackWrapper m_callbackWrapper;
68  TCallbackWrapper m_lobbyCallbackWrapper;
69 
70  static const size_t m_maxSizePlayerName = 14;
71  };
72 } // namespace swift::simplugin::fs9
73 
74 #endif // SWIFT_SIMPLUGIN_FS9_LOBBYCLIENT_H
Lobby client launching and connecting FS9.
Definition: lobbyclient.h:18
HRESULT initDirectPlay()
Initialize DirectPlay.
Definition: lobbyclient.cpp:55
CLobbyClient(QObject *parent=nullptr)
Constructor.
Definition: lobbyclient.cpp:27
void disconnected()
Emitted when FS9 is closed.
virtual ~CLobbyClient()
Destructor.
Definition: lobbyclient.cpp:35
HRESULT connectFs9ToHost(const QString &address)
Connect FS9 simulator to our host.
bool canLobbyConnect()
Can FS9 be lobby connected?
Definition: lobbyclient.cpp:84
unsigned long DWORD
Fake Windows DWORD.