Files
Client/Library/dxx8/samples/Multimedia/DirectPlay/Maze/MazeCommon/dplay8client.h
LGram16 e067522598 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>
2025-11-29 16:24:34 +09:00

103 lines
4.1 KiB
C++

//----------------------------------------------------------------------------
// File: dplay8client.h
//
// Desc: see main.cpp
//
// Copyright (c) 1999-2001 Microsoft Corp. All rights reserved.
//-----------------------------------------------------------------------------
#ifndef _DPLAY8_CLIENT_H
#define _DPLAY8_CLIENT_H
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
#include "NetAbstract.h"
struct MazeConfig;
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
class CDPlay8Client : public IOutboundClient
{
public:
CDPlay8Client();
~CDPlay8Client();
HRESULT Init(MazeConfig* pMazeConfig);
void Shutdown();
HRESULT StartSessionEnum( const TCHAR* ipaddress );
HRESULT StopSessionEnum();
DWORD GetNumSessions() const { return m_dwNumSessions; };
const TCHAR* GetSessionName( DWORD num ) const { return m_szSessionNames[num]; };
DWORD GetSessionMaxPlayers( DWORD num ) const { return m_Sessions[num].dwMaxPlayers; };
DWORD GetSessionCurrentPlayers( DWORD num ) const { return m_Sessions[num].dwCurrentPlayers; };
GUID GetSessionGUID( DWORD num ) const { return m_Sessions[num].guidInstance; };
HRESULT JoinSession( DWORD num );
void SetClient( INetClient* pclient ) { m_pClient = pclient; };
IOutboundClient* GetOutboundClient() const { return ((IOutboundClient*)this); };
DWORD GetNumSPThreads();
void SetNumSPThreads(DWORD dwNumSPThreads);
DWORD GetSPBuffer();
void SetSPBuffer(DWORD dwSPBufferSize);
// IOutboundClient
virtual HRESULT SendPacket( void* pData, DWORD dwSize, BOOL bGuaranteed, DWORD dwTimeout );
virtual DWORD GetThroughputBPS();
virtual DWORD GetRoundTripLatencyMS();
virtual BOOL IsSessionLost() { return m_bSessionLost; };
virtual DWORD GetSessionLostReason() { return m_dwSessionLostReason; };
virtual HRESULT GetConnectionInfo( TCHAR* strConnectionInfo );
protected:
IDirectPlay8Client* m_pDPlay;
BOOL m_bConnected;
INetClient* m_pClient;
BOOL m_bSessionLost;
DWORD m_dwSessionLostReason;
FLOAT m_fThroughputBPS;
DWORD m_dwThroughputBytes;
CRITICAL_SECTION m_csThreadCountLock;
WORD m_wActiveThreadCount;
WORD m_wMaxThreadCount;
FLOAT m_fAvgThreadCount;
FLOAT m_fAvgThreadTime;
FLOAT m_fMaxThreadTime;
// Configuration info.
MazeConfig* m_MazeConfig;
// Connection info
FLOAT m_fLastUpdateConnectInfoTime;
DPN_CONNECTION_INFO m_dpnConnectionInfo;
DWORD m_dwHighPriMessages, m_dwHighPriBytes;
DWORD m_dwNormalPriMessages, m_dwNormalPriBytes;
DWORD m_dwLowPriMessages, m_dwLowPriBytes;
HRESULT UpdateConnectionInfo();
BOOL EnumSessionCallback( const DPN_APPLICATION_DESC *pdesc, IDirectPlay8Address* pDP8AddressHost, IDirectPlay8Address* pDP8AddressDevice );
static HRESULT WINAPI StaticReceiveHandler( void *pvContext, DWORD dwMessageType, void *pvMessage );
HRESULT WINAPI ReceiveHandler( void *pvContext, DWORD dwMessageType, void *pvMessage );
enum {MAX_SESSIONS=256};
enum {MAX_SESSION_NAME=64};
DWORD m_dwNumSessions;
DPN_APPLICATION_DESC m_Sessions[MAX_SESSIONS];
IDirectPlay8Address* m_pHostAddresses[MAX_SESSIONS];
IDirectPlay8Address* m_pDeviceAddresses[MAX_SESSIONS];
TCHAR m_szSessionNames[MAX_SESSIONS][MAX_SESSION_NAME];
FLOAT m_fSessionLastSeenTime[MAX_SESSIONS];
CRITICAL_SECTION m_csLock;
DPNHANDLE m_dpnhEnum;
};
#endif