Initial commit: ROW Client source code
Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Sample Name: LobbyClient Sample
|
||||
//
|
||||
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
LobbyClient is a simple lobby client. It displays all registered DirectPlay
|
||||
applications on the local system. It allows the
|
||||
user to launch one or more of these applications using a chosen
|
||||
service provider. A launched lobbied application may be told to either
|
||||
join or host a game.
|
||||
|
||||
Path
|
||||
====
|
||||
Source: DXSDK\Samples\Multimedia\DirectPlay\LobbyClient
|
||||
|
||||
Executable: DXSDK\Samples\Multimedia\DirectPlay\Bin
|
||||
|
||||
User's Guide
|
||||
============
|
||||
Choose launch settings from dialog, and click "Launch App". The
|
||||
lobby client will launch the app selected based on the settings in the UI.
|
||||
The active connections list will display the handle to all the current
|
||||
lobbied applications. Clicking on "Send Message" will send a lobby message
|
||||
to the lobbied application. This done mainly for demonstration purposes. A more
|
||||
complex lobby client may want to use this functionality in a more meaningful way
|
||||
by passing a message that the lobbied application responds to.
|
||||
|
||||
Programming Notes
|
||||
=================
|
||||
* Initialize DirectPlay. See InitDirectPlay()
|
||||
1. Init COM with CoInitialize()
|
||||
2. Create a IIDirectPlay8Peer with CoCreateInstance()
|
||||
3. Call IDirectPlay8Peer::Initialize to tell the interface about our
|
||||
message handler
|
||||
4. Create a IDirectPlay8LobbyClient with CoCreateInstance()
|
||||
5. Call IDirectPlay8LobbyClient::Initialize to tell the interface
|
||||
about our lobby message handler
|
||||
|
||||
|
||||
* Initialize dialog box. See OnInitDialog()
|
||||
1. Enumerate the registered lobbied applications and display them
|
||||
in the dialog listbox. See EnumRegisteredApplications()
|
||||
2. Enumerate the DirectPlay service providers and display them
|
||||
in the dialog listbox. See EnumServiceProviders()
|
||||
3. Whenever a new service provider is selected (and upon init) then
|
||||
enumerate the service provider's adapters. See EnumAdapters().
|
||||
|
||||
* When "Launch App" button is clicked. See LaunchApp()
|
||||
1. Fill out a DPL_CONNECT_INFO struct. This is complex
|
||||
since it contains the host and device addresses as well as
|
||||
the DPN_APPLICATION_DESC. See LaunchApp() and
|
||||
AllocAndInitConnectSettings().
|
||||
2. Call IDirectPlay8LobbyClient::ConnectApplication() passing in
|
||||
the DPL_CONNECT_INFO struct.
|
||||
3. Free the DPL_CONNECT_INFO struct. This is also complex since this
|
||||
struct has a number of DPlay addresses. See FreeConnectSettings().
|
||||
|
||||
* Upon DirectPlay Lobby messages. See DirectPlayLobbyMessageHandler()
|
||||
- Upon DPL_MSGID_DISCONNECT:
|
||||
pDisconnectMsg->hDisconnectId will contain the handle of the
|
||||
lobbied application that was disconnected, and
|
||||
pDisconnectMsg->hrReason will be the reason. This simple
|
||||
sample just pops up a message box.
|
||||
- Upon DPL_MSGID_RECEIVE:
|
||||
The lobbied application sent the client data. This simple sample
|
||||
doesn't respond to any message.
|
||||
- Upon DPL_MSGID_SESSION_STATUS:
|
||||
A lobbied application has changed its status. pStatusMsg->hSender
|
||||
will one of several predefined status codes. This simple
|
||||
sample just updated the UI showing that the lobby status has
|
||||
updated, however more complex lobby clients many want to take action.
|
||||
- Upon DPL_MSGID_CONNECTION_SETTINGS:
|
||||
A lobbied application has changed its connection settings. This
|
||||
simple lobby client doesn't take any action however, more complex
|
||||
clients may want to take action.
|
||||
|
||||
* When "Send Message" is clicked. See SendMsgToApp()
|
||||
Call IDirectPlay8LobbyClient::Send() with the handle of the
|
||||
lobbied application to send the message to, and the buffer to send.
|
||||
|
||||
* When "Disconnect" is clicked. See DisconnectFromApp()
|
||||
Call IDirectPlay8LobbyClient::ReleaseApplication() with the handle of
|
||||
lobbied application to disconnect from.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user