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>
62 lines
2.5 KiB
Plaintext
62 lines
2.5 KiB
Plaintext
//-----------------------------------------------------------------------------
|
|
//
|
|
// Sample Name: DataRelay Sample
|
|
//
|
|
// Copyright (C) 1999-2001 Microsoft Corporation. All rights reserved.
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
Description
|
|
===========
|
|
The DataRelay is similar to SimplePeer but differs by sending a single
|
|
target (or everyone) a packet of data with options specified in the
|
|
dialog's UI.
|
|
|
|
Path
|
|
====
|
|
Source: DXSDK\Samples\Multimedia\VBSamples\DirectPlay\DataRelay
|
|
|
|
Executable: DXSDK\Samples\Multimedia\VBSamples\DirectPlay\Bin
|
|
|
|
User's Guide
|
|
============
|
|
Host or connect to a session in the same manner as explained in SimplePeer.
|
|
When the main dialog appears select the target, size, rate, and timeout values.
|
|
Then click "Push to Send". This will send a packet of data to the target as
|
|
the rate specified with the specified size.
|
|
|
|
Programming Notes
|
|
=================
|
|
The DataRelay sample is very similar in form to the SimplePeer sample. For
|
|
detailed programming notes on the basics this sample, refer to Programming
|
|
Notes section of the SimplePeer sample.
|
|
|
|
The DataRelay differs by sending a single target (or everyone) a packet of
|
|
data with options specified in the dialog's UI.
|
|
|
|
When the "Push to Send" button is clicked, a timer goes off every number of
|
|
ms according to the UI and sends data.
|
|
|
|
* When the timer notices it's time to send data, it does the following:
|
|
1. Creates a byte array with the options specified in the UI.
|
|
2. DirectPlay8Peer.SendTo is called passing in the byte array. We
|
|
call SendTo with the flags DPNSEND_NOLOOPBACK. DPNSEND_NOLOOPBACK tells
|
|
DirectPlay to not to send the buffer to us.
|
|
|
|
* Handle DirectPlay system messages. See implemented DirectPlay8Event interfaces
|
|
The DataRelay handles the typical messages as described in the
|
|
SimplePeer programming notes, and in addition:
|
|
|
|
- Upon Receive event
|
|
1. Gets the message type from the received byte array.
|
|
2. It then selects off the message type.
|
|
3. If its a MSG_GamePacket, then it adds the data to a collection,
|
|
where a timer will notice the data and process it. This is important
|
|
so the DirectPlay threads stay working atfull speed.
|
|
|
|
- Upon DPN_MSGID_SEND_COMPLETE
|
|
1. It checks the dpnotify.hResultCode for DPNERR_TIMEDOUT.
|
|
2. If this occurs then it updates the UI.
|
|
|