-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDPPlayer.h
84 lines (74 loc) · 1.92 KB
/
DPPlayer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*!
@author Arves100
@brief DirectPlay player rapresentation
@date 07/02/2022
@file DPPlayer.h
*/
#pragma once
class DPPlayer
{
public:
DPPlayer();
~DPPlayer();
void ForceDisconnect();
void Disconnect();
ENetPeer* GetPeer() const { return m_pPeer; }
bool IsHostMade() const { return m_bMadeByHost; }
DPID GetId() const { return m_dwId; }
LPVOID GetLocalData() const { return m_lpData; }
DWORD GetLocalDataSize() const { return m_dwDataSize; }
LPVOID GetRemoteData() const { return m_lpRemoteData; }
DWORD GetRemoteDataSize() const { return m_dwRemoteDataSize; }
bool IsSpecator() const { return m_bIsSpectator; }
bool IsMadeByHost() const { return m_bMadeByHost; }
const char* GetLongName() const { return m_szLongName.c_str(); }
const char* GetShortName() const { return m_szShortName.c_str(); }
void SetLocalData(LPVOID lpData, DWORD dwDataSize)
{
if (!lpData)
{
if (m_lpData)
delete[] m_lpData;
m_lpData = nullptr;
m_dwDataSize = 0;
}
else
{
m_lpData = new BYTE[dwDataSize];
m_dwDataSize = dwDataSize;
memcpy_s(m_lpData, m_dwDataSize, lpData, dwDataSize);
}
}
void SetRemoteData(LPVOID lpData, DWORD dwDataSize)
{
if (!lpData)
{
if (m_lpRemoteData)
delete[] m_lpRemoteData;
m_lpRemoteData = nullptr;
m_dwRemoteDataSize = 0;
}
else
{
m_lpRemoteData = new BYTE[dwDataSize];
m_dwRemoteDataSize = dwDataSize;
memcpy_s(m_lpRemoteData, m_dwRemoteDataSize, lpData, dwDataSize);
}
}
void FireEvent();
void Create(DPID id, const char* shortName, const char* longName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, bool spectator, bool madeByHost);
void SetPeer(ENetPeer* p) { m_pPeer = p; }
private:
DPID m_dwId;
std::string m_szLongName;
std::string m_szShortName;
HANDLE m_hEvent;
LPBYTE m_lpData;
DWORD m_dwDataSize;
bool m_bIsSpectator;
bool m_bMadeByHost;
LPBYTE m_lpRemoteData;
DWORD m_dwRemoteDataSize;
// ENet specific
ENetPeer* m_pPeer;
};