//================================================================================================== // NetPlayCreatePlayer // Creates a player for session //================================================================================================== BOOL NetPlayCreatePlayer(LPDPID lppidID, LPTSTR lptszPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize, geBoolean ServerPlayer) { HRESULT hr = DPERR_GENERIC; DPNAME name; DWORD Flags; assert(g_lpDP); ZeroMemory(&name,sizeof(name)); name.dwSize = sizeof(DPNAME); #ifdef UNICODE name.lpszShortName = lptszPlayerName; #else name.lpszShortNameA = lptszPlayerName; #endif Flags = 0; //if (ServerPlayer) // Flags |= DPPLAYER_SERVERPLAYER; hr = IDirectPlayX_CreatePlayer(g_lpDP, lppidID, &name, hEvent, lpData, dwDataSize, Flags); if (hr != DP_OK) { DoDPError(hr); return FALSE; } return TRUE; }
// //////////////////////////////////////////////////////////////////////// // Create a new DPLAY game HRESULT HostSession(LPDIRECTPLAY4A lpDirectPlay4A, LPSTR lpszSessionName, LPSTR lpszPlayerName,LPNETPLAY lpNetPlay, DWORD one, DWORD two, DWORD three, DWORD four, UDWORD mplayers) { DPID dpidPlayer; DPNAME dpName; DPSESSIONDESC2 sessionDesc; HRESULT hr; ZeroMemory(&sessionDesc, sizeof(DPSESSIONDESC2)); // host a new session sessionDesc.dwSize = sizeof(DPSESSIONDESC2); sessionDesc.guidApplication = GAME_GUID; sessionDesc.dwMaxPlayers = mplayers; sessionDesc.lpszSessionNameA = lpszSessionName; #ifdef USE_DIRECTPLAY_PROTOCOL sessionDesc.dwFlags = DPSESSION_MIGRATEHOST | DPSESSION_KEEPALIVE | DPSESSION_DIRECTPLAYPROTOCOL ; #else sessionDesc.dwFlags = DPSESSION_MIGRATEHOST | DPSESSION_KEEPALIVE; #endif sessionDesc.dwUser1 = one; // set the user flags sessionDesc.dwUser2 = two; sessionDesc.dwUser3 = three; sessionDesc.dwUser4 = four; hr = IDirectPlayX_Open(glpDP,&sessionDesc, DPOPEN_CREATE); if FAILED(hr) { goto OPEN_FAILURE; } ZeroMemory(&dpName, sizeof(DPNAME)); // fill out name structure dpName.dwSize = sizeof(DPNAME); dpName.lpszShortNameA = lpszPlayerName; dpName.lpszLongNameA = NULL; hr = IDirectPlayX_CreatePlayer(glpDP,&dpidPlayer, &dpName, lpNetPlay->hPlayerEvent, NULL, 0, 0); if FAILED(hr) { goto CREATEPLAYER_FAILURE; } lpNetPlay->lpDirectPlay4A = lpDirectPlay4A; // return connection info lpNetPlay->dpidPlayer = dpidPlayer; lpNetPlay->bHost = TRUE; lpNetPlay->bSpectator = FALSE; return (DP_OK); CREATEPLAYER_FAILURE: OPEN_FAILURE: IDirectPlayX_Close(glpDP); return (hr); }
HRESULT DPlayCreatePlayer(LPDPID lppidID, LPTSTR lptszPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize) { HRESULT hr=E_FAIL; DPNAME name; ZeroMemory(&name,sizeof(name)); name.dwSize = sizeof(DPNAME); #ifdef UNICODE name.lpszShortName = lptszPlayerName; #else name.lpszShortNameA = lptszPlayerName; #endif if (glpDP) hr = IDirectPlayX_CreatePlayer(glpDP, lppidID, &name, hEvent, lpData, dwDataSize, 0); return hr; }
//==================================================================================================== // DPlayCreatePlayer //==================================================================================================== HRESULT DPlayCreatePlayer(LPDPID lppidID, LPTSTR lptszPlayerName, HANDLE hEvent, LPVOID lpData, DWORD dwDataSize) { HRESULT hr = DPERR_GENERIC; DPNAME name; assert(g_lpDP); ZeroMemory(&name,sizeof(name)); name.dwSize = sizeof(DPNAME); #ifdef UNICODE name.lpszShortName = lptszPlayerName; #else name.lpszShortNameA = lptszPlayerName; #endif hr = IDirectPlayX_CreatePlayer(g_lpDP, lppidID, &name, hEvent, lpData, dwDataSize, DPPLAYER_SERVERPLAYER); return hr; }
// //////////////////////////////////////////////////////////////////////// // Enter a DPLAY game HRESULT JoinSession(LPDIRECTPLAY4A lpDirectPlay4A, LPGUID lpguidSessionInstance, LPSTR lpszPlayerName, LPNETPLAY lpNetPlay) { DPID dpidPlayer; DPNAME dpName; DPSESSIONDESC2 sessionDesc; HRESULT hr; ZeroMemory(&sessionDesc, sizeof(DPSESSIONDESC2)); // join existing session sessionDesc.dwSize = sizeof(DPSESSIONDESC2); sessionDesc.guidInstance = *lpguidSessionInstance; hr = IDirectPlayX_Open(glpDP,&sessionDesc, DPOPEN_JOIN); if FAILED(hr) goto OPEN_FAILURE; ZeroMemory(&dpName, sizeof(DPNAME)); // fill out name structure dpName.dwSize = sizeof(DPNAME); dpName.lpszShortNameA = lpszPlayerName; dpName.lpszLongNameA = NULL; hr = IDirectPlayX_CreatePlayer(glpDP,&dpidPlayer, &dpName, lpNetPlay->hPlayerEvent, NULL, 0, 0); if FAILED(hr) goto CREATEPLAYER_FAILURE; lpNetPlay->lpDirectPlay4A = lpDirectPlay4A; // return connection info lpNetPlay->dpidPlayer = dpidPlayer; lpNetPlay->bHost = FALSE; lpNetPlay->bSpectator = FALSE; return (DP_OK); CREATEPLAYER_FAILURE: OPEN_FAILURE: IDirectPlayX_Close(glpDP); return (hr); }