DirectX:DirectPlay:Tutorials:VB:DX7:Commencing Gameplay

From GPWiki

Files:GUITutorial_warn.gif The Game Programming Wiki has moved! Files:GUITutorial_warn.gif

The wiki is now hosted by GameDev.NET at wiki.gamedev.net. All gpwiki.org content has been moved to the new server.

However, the GPWiki forums are still active! Come say hello.

When a session has been started, we need to be able to monitor how many people have joined that session. In other words, we need to enumerate the players.

Dim i As Integer
Dim intPlayersWaiting As Integer
Dim objEnumPlayers As DirectPlayEnumPlayers
  
    Set objEnumPlayers = dp.GetDPEnumPlayers("", 0)
    
    intPlayersWaiting = objEnumPlayers.GetCount
      
    For i = 1 To intPlayersWaiting
        LstBox.AddItem objEnumPlayers.GetShortName(i)
    Next

This code will list the short names of every player connected to the current session (again, LstBox refers to a valid listbox object). The user (usually the host) can use this information to decide when to commence the game. For example, a game may allow 4 players to join, but the host could start the game when there were only two or three if desired. Once the game starts, the host should disable the "join" ability to keep new players from joining the session late.

Dim objSessionData As DirectPlaySessionData
 
    Set objSessionData = dp.CreateSessionData
    dp.GetSessionDesc objSessionData
    objSessionData.SetFlags objSessionData.GetFlags Or DPSESSION_JOINDISABLED
    dp.SetSessionDesc objSessionData

Fill a DirectPlaySessionData object with session data. Use the current flags in conjunction with the DPSESSION_JOINDISABLED flag to disable joining. Once the flags are defined, set the session data using the same object and the DirectPlay4.SetSessionDesc method.

Continue with the In-Game Messaging tutorial; we're almost there! (Click here to download this tutorial's source code.)