#pragma once const int QNET_GETSENDQUEUESIZE_SECONDARY_TYPE = 0; const int QNET_GETSENDQUEUESIZE_MESSAGES = 0; const int QNET_GETSENDQUEUESIZE_BYTES = 0; const int QNET_SENDDATA_LOW_PRIORITY = 0; const int QNET_SENDDATA_SECONDARY = 0; const int QNET_SENDDATA_RELIABLE = 0; const int QNET_SENDDATA_SEQUENTIAL = 0; #define QNET_E_SESSION_FULL 0 #define QNET_USER_MASK_USER0 1 #define QNET_USER_MASK_USER1 2 #define QNET_USER_MASK_USER2 4 #define QNET_USER_MASK_USER3 8 typedef enum _QNET_STATE { QNET_STATE_IDLE, QNET_STATE_SESSION_HOSTING, QNET_STATE_SESSION_JOINING, QNET_STATE_GAME_LOBBY, QNET_STATE_SESSION_REGISTERING, QNET_STATE_SESSION_STARTING, QNET_STATE_GAME_PLAY, QNET_STATE_SESSION_ENDING, QNET_STATE_SESSION_LEAVING, QNET_STATE_SESSION_DELETING } QNET_STATE, * PQNET_STATE; class IQNetPlayer { public: BYTE GetSmallId(); void SendData(IQNetPlayer *player, const void *pvData, DWORD dwDataSize, DWORD dwFlags); bool IsSameSystem(IQNetPlayer *player); DWORD GetSendQueueSize( IQNetPlayer *player, DWORD dwFlags ); DWORD GetCurrentRtt(); bool IsHost(); bool IsGuest(); bool IsLocal(); PlayerUID GetXuid(); LPCWSTR GetGamertag(); int GetSessionIndex(); bool IsTalking(); bool IsMutedByLocalUser(DWORD dwUserIndex); bool HasVoice(); bool HasCamera(); int GetUserIndex(); void SetCustomDataValue(ULONG_PTR ulpCustomDataValue); ULONG_PTR GetCustomDataValue(); BYTE m_smallId; bool m_isRemote; bool m_isHostPlayer; wchar_t m_gamertag[32]; private: ULONG_PTR m_customData; }; void Win64_SetupRemoteQNetPlayer(IQNetPlayer *player, BYTE smallId, bool isHost, bool isLocal); class IQNetCallbacks { }; class IQNetGameSearch { }; class IQNet { public: HRESULT AddLocalPlayerByUserIndex(DWORD dwUserIndex); IQNetPlayer *GetHostPlayer(); IQNetPlayer *GetLocalPlayerByUserIndex(DWORD dwUserIndex); IQNetPlayer *GetPlayerByIndex(DWORD dwPlayerIndex); IQNetPlayer *GetPlayerBySmallId(BYTE SmallId); IQNetPlayer *GetPlayerByXuid(PlayerUID xuid); DWORD GetPlayerCount(); QNET_STATE GetState(); bool IsHost(); HRESULT JoinGameFromInviteInfo(DWORD dwUserIndex, DWORD dwUserMask, const INVITE_INFO *pInviteInfo); void HostGame(); void ClientJoinGame(); void EndGame(); static IQNetPlayer m_player[MINECRAFT_NET_MAX_PLAYERS]; static DWORD s_playerCount; static bool s_isHosting; };