207 lines
7.2 KiB
C++
207 lines
7.2 KiB
C++
/***SDOC************************************************************************
|
|
* UbiSoft Network Development
|
|
* ---------------------------
|
|
*
|
|
* FILE........: RegServerLib.h
|
|
* CREATION....: Sept 2001
|
|
* AUTHOR......: Guillaume Plante
|
|
*
|
|
* DESCRIPTION.: Interface class to login fonctionality
|
|
*
|
|
*******************************************************************************
|
|
* FILE HISTORY
|
|
*******************************************************************************
|
|
*
|
|
* DATE........:
|
|
* AUTHOR......:
|
|
* DESCRIPTION.:
|
|
*
|
|
***********************************************************************EDOC***/
|
|
|
|
#ifndef __CLIENTLIB_H__
|
|
#define __CLIENTLIB_H__
|
|
|
|
#include "define.h"
|
|
|
|
class clDataList;
|
|
class clDataBin;
|
|
class clSRPGSClient;
|
|
class CRegServerConnection;
|
|
class clParentGroups;
|
|
|
|
class CRegisterServer
|
|
{
|
|
public:
|
|
|
|
CRegisterServer();
|
|
virtual ~CRegisterServer();
|
|
|
|
// RegServer public functions
|
|
public:
|
|
GSvoid RegServer_Engine();
|
|
GSbool RegServerSend_RouterConnect( const GSchar* szAddress, GSint lPort );
|
|
GSbool RegServerSend_RouterDisconnect();
|
|
GSbool RegServerSend_LoginRouter( const GSchar* szAlias,
|
|
const GSchar* szPassword, const GSchar* szVersion );
|
|
GSbool RegServerSend_RequestParentGroupOnLobby( const GSchar* szGameName );
|
|
|
|
GSbool RegServerSend_RegisterServerOnLobby(
|
|
GSuint uiLobbyID,
|
|
GSint iParentID,
|
|
const GSchar* szRoomName,
|
|
const GSchar* szGameName,
|
|
GSushort uwRoomType,
|
|
GSuint uiMaxPlayer,
|
|
GSuint uiMaxSpectator,
|
|
const GSchar* szPassword,
|
|
const GSvoid* pstGroupInfo,
|
|
GSint iGroupInfoSize,
|
|
const GSvoid* pstAltGroupInfo,
|
|
GSint iAltGroupInfoSize,
|
|
const GSvoid* pstGameData,
|
|
GSint iGameDataSize,
|
|
GSushort usGamePort,
|
|
const GSchar* szGameVersion,
|
|
const GSchar* szGSVersion,
|
|
GSbool bScoreSubmission,
|
|
GSbool bDedicatedServer );
|
|
|
|
|
|
//////////////////////////////
|
|
// Lobby Server
|
|
//////////////////////////////
|
|
GSbool RegServerSend_LobbyServerConnection( const GSchar* szAddress, GSushort usPort,
|
|
GSushort usLocalPort = 0, GSuint uiStillAliveDelay = 25, GSuint uiDisconnectionDelay = 120 );
|
|
GSbool RegServerSend_LobbyServerClose();
|
|
GSbool RegServerSend_LobbyServerLogin( const GSchar* szAlias,GSint iGroupID );
|
|
GSbool RegServerSend_LobbyServerMemberJoin( const GSchar* szMember );
|
|
GSbool RegServerSend_LobbyServerMemberLeave( const GSchar* szMember );
|
|
GSbool RegServerSend_UpdateGroupSettings(
|
|
GSint iGroupID,
|
|
GSbyte bOpen,
|
|
GSbyte bScoreSubmission,
|
|
GSbyte bDedicatedServer,
|
|
GSint iMaxPlayers,
|
|
GSint iMaxSpectator,
|
|
const GSchar* szPassword,
|
|
const GSvoid* pucGroupInfo,
|
|
GSint iGroupInfoSize,
|
|
const GSvoid* pucAltGroupInfo,
|
|
GSint iAltGroupInfoSize,
|
|
const GSvoid* pucGameData,
|
|
GSint iGameDataSize,
|
|
GSushort usGamePort );
|
|
|
|
GSbool RegServerSend_MatchStart( GSuint uiMode = 0 );
|
|
GSbool RegServerSend_MatchFinish( );
|
|
|
|
//**************************************************
|
|
//virtual Function used for the CallBack
|
|
//**************************************************
|
|
virtual GSvoid RegServerRcv_LoginRouterResult( GSubyte ucType, GSint lReason,
|
|
const GSchar* szIPAddress ) = 0;
|
|
virtual GSvoid RegServerRcv_RouterDisconnection() = 0;
|
|
virtual GSvoid RegServerRcv_RegisterServerResult( GSubyte pucType,
|
|
GSint plReason,
|
|
GSint iGroupID,
|
|
const GSchar* szAddress,
|
|
GSushort usPort,
|
|
const GSchar* szSessionName ) = 0;
|
|
virtual GSvoid RegServerRcv_RequestParentGroupResult( GSubyte ucType,
|
|
GSint lReason, GSint iServerID,GSint iGroupID, const GSchar* szGroupName,
|
|
GSuint uiNbPlayers, GSuint uiMaxPlayers ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerLoginResults( GSubyte ucType,
|
|
GSint iReason, GSint iLobbyServerID, GSint iGroupID ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerUpdateGroupSettingsResults(
|
|
GSubyte ucType, GSint iReason, GSint iGroupID ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerDisconnection() = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerMemberNew( const GSchar* szMember,
|
|
GSbool bSpectator,
|
|
const GSchar* szIPAddress, const GSchar* szAltIPAddress,
|
|
const GSvoid* pPlayerInfo, GSuint uiPlayerInfoSize,
|
|
GSushort usPlayerStatus ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerMatchStartReply( GSubyte ucType,
|
|
GSint iReason, GSint iGroupID ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerMemberLeft(const GSchar* szMember ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerMatchFinishReply( GSubyte ucType,
|
|
GSint iReason, GSint iGroupID ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerGroupConfigUpdate(
|
|
GSuint uiGroupConfig, GSint iGroupID ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerMemberUpdateStatus(
|
|
const GSchar* szPlayer, GSushort usPlayerStatus ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerNewGroup (GSushort usRoomType,
|
|
const GSchar* szRoomName,
|
|
GSint iGroupID,
|
|
GSint iLobbyServerID,
|
|
GSint iParentGroupID,
|
|
GSint uiGroupConfig,
|
|
GSshort sGroupLevel,
|
|
const GSchar* szMaster,
|
|
const GSchar* szAllowedGames,
|
|
const GSchar* szGame,
|
|
const GSvoid* pGroupInfo,
|
|
GSuint GroupInfoSize,
|
|
GSuint uiMatchEventID,
|
|
GSuint uiMaxPlayers,
|
|
GSuint uiNbPlayers,
|
|
GSuint uiMaxSpectators,
|
|
GSuint uiNbSpectators,
|
|
const GSchar* szGameVersion,
|
|
const GSchar* szGSGameVersion,
|
|
const GSchar* szIPAddress,
|
|
const GSchar* szAltIPAddress ) = 0;
|
|
virtual GSvoid RegServerRcv_LobbyServerMemberUpdateInfo(
|
|
const GSchar* szMember, const GSvoid* pPlayerInfo,
|
|
GSuint uiPlayerInfoSize ) = 0;
|
|
|
|
private:
|
|
|
|
GSvoid RegServer_UnInitRouterConnection();
|
|
GSvoid RegServer_UnInitLobbyServerConnection();
|
|
GSvoid CheckDisconnection();
|
|
|
|
GSbool RegServerRcv_LoginRouterResult( GSushort SFType,clDataList* pDataList);
|
|
GSbool RegServerRcv_RegisterServerResult( GSushort usFSType,
|
|
clDataList* pDataList );
|
|
GSbool RegServerRcv_RequestParentGroupResult( GSushort SFType,
|
|
clDataList* pDataList );
|
|
|
|
GSbool CheckLobbyServerConnection();
|
|
GSbool ManageLobbyServerConnection();
|
|
GSvoid CheckTheLobbyMessages();
|
|
GSvoid ReadLobbySeverAnswer( GSubyte ucType, clDataList* pDataList );
|
|
GSvoid RegServerRcv_LobbyServerLoginResults( GSuchar ucType,
|
|
clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerUpdateGroupSettingsResults( GSuchar ucType,
|
|
clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerNewMembers( clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerMatchStartReply( GSuchar ucType,
|
|
clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerMemberLeft( clDataList* pDataList );
|
|
GSvoid RegServerRcv_LobbyServerMatchFinishReply( GSuchar ucType,
|
|
clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerGroupConfigUpdate( clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerMemberUpdateStatus( clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerNewGroup ( clDataList* pDataMessage );
|
|
GSvoid RegServerRcv_LobbyServerMemberUpdateInfo( clDataList* pDataMessage );
|
|
|
|
|
|
clParentGroups *m_pParentGroups;
|
|
|
|
GSchar m_szPlayerAlias[NICKNAMELENGTH];
|
|
GSchar m_szAddress[IPADDRESSLENGTH];
|
|
GSbool m_bServerRegistered;
|
|
|
|
GSbool m_bLobbyConnected;
|
|
GSbool m_bRouterConnected;
|
|
|
|
GSchar m_szLocalIP[IPADDRESSLENGTH];
|
|
CRegServerConnection* m_RouterConnection;
|
|
clSRPGSClient* m_pSRPGSClient;
|
|
GSint m_iLobbyServerID;
|
|
GSint m_iGroupID;
|
|
|
|
};
|
|
|
|
#endif //__CLIENTLIB_H__
|