the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 168 lines 7.1 kB view raw
1#pragma once 2using namespace std; 3#include <vector> 4#include "..\..\..\Minecraft.World\C4JThread.h" 5#include "..\..\Common\Network\NetworkPlayerInterface.h" 6#include "..\..\Common\Network\PlatformNetworkManagerInterface.h" 7#include "..\..\Common\Network\SessionInfo.h" 8#include "DQRNetworkManager.h" 9 10#define MINECRAFT_DURANGO_PARTY_SEARCH_DELAY_MILLISECONDS 30000 11 12class CPlatformNetworkManagerDurango : public CPlatformNetworkManager, IDQRNetworkManagerListener 13{ 14 friend class CGameNetworkManager; 15public: 16 virtual bool Initialise(CGameNetworkManager *pGameNetworkManager, int flagIndexSize); 17 virtual void Terminate(); 18 virtual int GetJoiningReadyPercentage(); 19 virtual int CorrectErrorIDS(int IDS); 20 21 virtual void DoWork(); 22 virtual int GetPlayerCount(); 23 virtual int GetOnlinePlayerCount(); 24 virtual int GetLocalPlayerMask(int playerIndex); 25 virtual bool AddLocalPlayerByUserIndex( int userIndex ); 26 virtual bool RemoveLocalPlayerByUserIndex( int userIndex ); 27 virtual INetworkPlayer *GetLocalPlayerByUserIndex( int userIndex ); 28 virtual INetworkPlayer *GetPlayerByIndex(int playerIndex); 29 virtual INetworkPlayer * GetPlayerByXuid(PlayerUID xuid); 30 virtual INetworkPlayer * GetPlayerBySmallId(unsigned char smallId); 31 virtual wstring GetDisplayNameByGamertag(wstring gamertag); 32 virtual bool ShouldMessageForFullSession(); 33 34 virtual INetworkPlayer *GetHostPlayer(); 35 virtual bool IsHost(); 36 virtual bool JoinGameFromInviteInfo( int userIndex, int userMask, const INVITE_INFO *pInviteInfo); 37 virtual bool LeaveGame(bool bMigrateHost); 38 39 virtual bool IsInSession(); 40 virtual bool IsInGameplay(); 41 virtual bool IsReadyToPlayOrIdle(); 42 virtual bool IsInStatsEnabledSession(); 43 virtual bool SessionHasSpace(unsigned int spaceRequired = 1); 44 virtual void SendInviteGUI(int quadrant); 45 virtual bool IsAddingPlayer(); 46 47 virtual void HostGame(int localUsersMask, bool bOnlineGame, bool bIsPrivate, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0); 48 virtual int JoinGame(FriendSessionInfo *searchResult, int localUsersMask, int primaryUserIndex ); 49 virtual void CancelJoinGame(); 50 virtual bool SetLocalGame(bool isLocal); 51 virtual bool IsLocalGame() { return m_bIsOfflineGame; } 52 virtual void SetPrivateGame(bool isPrivate); 53 virtual bool IsPrivateGame() { return m_bIsPrivateGame; } 54 virtual bool IsLeavingGame() { return m_bLeavingGame; } 55 virtual void ResetLeavingGame() { m_bLeavingGame = false; } 56 57 virtual void RegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam); 58 virtual void UnRegisterPlayerChangedCallback(int iPad, void (*callback)(void *callbackParam, INetworkPlayer *pPlayer, bool leaving), void *callbackParam); 59 60 virtual void HandleSignInChange(); 61 62 virtual bool _RunNetworkGame(); 63 64private: 65 bool isSystemPrimaryPlayer(DQRNetworkPlayer *pDQRPlayer); 66 virtual bool _LeaveGame(bool bMigrateHost, bool bLeaveRoom); 67 virtual void _HostGame(int dwUsersMask, unsigned char publicSlots = MINECRAFT_NET_MAX_PLAYERS, unsigned char privateSlots = 0); 68 virtual bool _StartGame(); 69 70 DQRNetworkManager * m_pDQRNet; // pointer to SQRNetworkManager interface 71 72 HANDLE m_notificationListener; 73 74 vector<DQRNetworkPlayer *> m_machineDQRPrimaryPlayers; // collection of players that we deem to be the main one for that system 75 76 bool m_bLeavingGame; 77 bool m_bLeaveGameOnTick; 78 bool m_migrateHostOnLeave; 79 bool m_bHostChanged; 80 81 bool m_bIsOfflineGame; 82 bool m_bIsPrivateGame; 83 int m_flagIndexSize; 84 85 // This is only maintained by the host, and is not valid on client machines 86 GameSessionData m_hostGameSessionData; 87 bool m_hostGameSessionIsJoinable; 88 CGameNetworkManager *m_pGameNetworkManager; 89public: 90 virtual void UpdateAndSetGameSessionData(INetworkPlayer *pNetworkPlayerLeaving = NULL); 91 92private: 93 // TODO 4J Stu - Do we need to be able to have more than one of these? 94 void (*playerChangedCallback[XUSER_MAX_COUNT])(void *callbackParam, INetworkPlayer *pPlayer, bool leaving); 95 void *playerChangedCallbackParam[XUSER_MAX_COUNT]; 96 97 static int RemovePlayerOnSocketClosedThreadProc( void* lpParam ); 98 virtual bool RemoveLocalPlayer( INetworkPlayer *pNetworkPlayer ); 99 100 // Things for handling per-system flags 101 class PlayerFlags 102 { 103 public: 104 INetworkPlayer *m_pNetworkPlayer; 105 unsigned char *flags; 106 unsigned int count; 107 PlayerFlags(INetworkPlayer *pNetworkPlayer, unsigned int count); 108 ~PlayerFlags(); 109 }; 110 vector<PlayerFlags *> m_playerFlags; 111 void SystemFlagAddPlayer(INetworkPlayer *pNetworkPlayer); 112 void SystemFlagRemovePlayer(INetworkPlayer *pNetworkPlayer); 113 void SystemFlagReset(); 114public: 115 virtual void SystemFlagSet(INetworkPlayer *pNetworkPlayer, int index); 116 virtual bool SystemFlagGet(INetworkPlayer *pNetworkPlayer, int index); 117 118 // For telemetry 119private: 120 float m_lastPlayerEventTimeStart; 121 122public: 123 wstring GatherStats(); 124 wstring GatherRTTStats(); 125 126private: 127 vector<FriendSessionInfo *> friendsSessions[XUSER_MAX_COUNT]; 128 int m_searchResultsCount; 129 int m_lastSearchStartTime; 130 131 // The results that will be filled in with the current search 132 DQRNetworkManager::SessionSearchResult *m_pSearchResults; 133 134 int m_lastSearchPad; 135 bool m_bSearchResultsReady; 136 bool m_bSearchPending; 137 LPVOID m_pSearchParam; 138 void (*m_SessionsUpdatedCallback)(LPVOID pParam); 139 140 void TickSearch(); 141 142 vector<INetworkPlayer *>currentNetworkPlayers; 143 INetworkPlayer *addNetworkPlayer(DQRNetworkPlayer *pDQRPlayer); 144 void removeNetworkPlayer(DQRNetworkPlayer *pDQRPlayer); 145 static INetworkPlayer *getNetworkPlayer(DQRNetworkPlayer *pDQRPlayer); 146 147 virtual void SetSessionTexturePackParentId( int id ); 148 virtual void SetSessionSubTexturePackId( int id ); 149 virtual void Notify(int ID, ULONG_PTR Param); 150 151public: 152 virtual vector<FriendSessionInfo *> *GetSessionList(int iPad, int localPlayers, bool partyOnly); 153 virtual bool GetGameSessionInfo(int iPad, SessionID sessionId,FriendSessionInfo *foundSession); 154 virtual void SetSessionsUpdatedCallback( void (*SessionsUpdatedCallback)(LPVOID pParam), LPVOID pSearchParam ); 155 virtual void GetFullFriendSessionInfo( FriendSessionInfo *foundSession, void (* FriendSessionUpdatedFn)(bool success, void *pParam), void *pParam ); 156 virtual void ForceFriendsSessionRefresh(); 157 158 // ... and the new ones that have been converted to IDQRNetworkManagerListener 159 virtual void HandleDataReceived(DQRNetworkPlayer *playerFrom, DQRNetworkPlayer *playerTo, unsigned char *data, unsigned int dataSize); 160 virtual void HandlePlayerJoined(DQRNetworkPlayer *player); 161 virtual void HandlePlayerLeaving(DQRNetworkPlayer *player); 162 virtual void HandleStateChange(DQRNetworkManager::eDQRNetworkManagerState oldState, DQRNetworkManager::eDQRNetworkManagerState newState); 163// virtual void HandleResyncPlayerRequest(DQRNetworkPlayer **aPlayers); 164 virtual void HandleAddLocalPlayerFailed(int idx, bool serverFull); 165 virtual void HandleDisconnect(bool bLostRoomOnly); 166 virtual void HandleInviteReceived(int playerIndex, DQRNetworkManager::SessionInfo *pInviteInfo); 167 virtual bool IsSessionJoinable(); 168};